본문 바로가기
IT 관련 Tip/Python

파이썬과 PyPDF2로 PDF 병합 및 분할 프로그램 만들기, 기초, 입문, 코딩, 코드, 강좌, 강의, 배우기, 공부, 개발, Python

by How Money 2024. 3. 31.

문서 작업을 하다 보면 여러 PDF 파일을 하나로 병합하거나, 하나의 큰 PDF 파일을 여러 부분으로 나누어야 할 필요가 종종 생깁니다. 이러한 작업을 수동으로 하기에는 시간이 많이 소요되고 번거로울 수 있습니다. Python과 PyPDF2 라이브러리를 이용하면 이러한 작업을 간단하게 자동화할 수 있습니다. 본 글에서는 Python으로 PDF 파일을 병합하고 분할하는 간단한 프로그램을 만드는 방법을 소개합니다.

 

PyPDF2 설치

먼저, PyPDF2 라이브러리가 설치되어 있어야 합니다. 아직 설치하지 않았다면, 다음 명령어를 통해 설치할 수 있습니다:

pip install PyPDF2

 

PDF 병합하기

여러 PDF 파일을 순서대로 하나의 파일로 병합하는 프로그램을 만들어보겠습니다. 이 프로그램은 명령줄 인수로 여러 PDF 파일의 경로를 받아, 지정된 출력 파일에 병합하여 저장합니다.

import sys
from PyPDF2 import PdfFileReader, PdfFileWriter

def merge_pdfs(paths, output):
    pdf_writer = PdfFileWriter()
    
    for path in paths:
        pdf_reader = PdfFileReader(path)
        for page in range(pdf_reader.getNumPages()):
            pdf_writer.addPage(pdf_reader.getPage(page))
    
    with open(output, 'wb') as out_file:
        pdf_writer.write(out_file)

if __name__ == '__main__':
    paths = sys.argv[1:-1]
    output = sys.argv[-1]
    merge_pdfs(paths, output)

 

사용 예시:

python merge_pdfs.py file1.pdf file2.pdf file3.pdf merged.pdf

위 예시는 file1.pdf, file2.pdf, file3.pdf를 순서대로 병합하여 merged.pdf에 저장합니다.

 

PDF 분할하기

이제 하나의 PDF 파일을 여러 개의 파일로 분할하는 프로그램을 만들어보겠습니다. 각 페이지를 별도의 PDF 파일로 저장하는 방식으로 작동합니다.

from PyPDF2 import PdfFileReader, PdfFileWriter

def split_pdf(path, output_dir):
    pdf_reader = PdfFileReader(path)
    for page in range(pdf_reader.getNumPages()):
        pdf_writer = PdfFileWriter()
        pdf_writer.addPage(pdf_reader.getPage(page))
        
        output_filename = f'{output_dir}/page_{page + 1}.pdf'
        
        with open(output_filename, 'wb') as out_file:
            pdf_writer.write(out_file)

if __name__ == '__main__':
    import sys
    path = sys.argv[1]
    output_dir = sys.argv[2]
    split_pdf(path, output_dir)

 

사용 예시:

python split_pdf.py example.pdf output_folder

위 예시는 example.pdf의 각 페이지를 output_folder 디렉토리에 page_1.pdf, page_2.pdf, ...와 같은 형식으로 저장합니다.