[python] ReportLab 파일 분할

개요

ReportLab은 파이썬에서 PDF 문서를 생성하는 라이브러리입니다. ReportLab을 사용하면 간단하게 테이블, 그래프, 이미지 등 다양한 컨텐츠를 포함한 PDF 파일을 생성할 수 있습니다.

이번에는 ReportLab을 사용하여 생성한 하나의 큰 PDF 파일을 여러 개의 작은 파일로 분할하는 방법에 대해 알아보겠습니다.

ReportLab으로 PDF 파일 생성하기

우선 ReportLab을 사용하여 PDF 파일을 생성하는 방법을 간단하게 알아보겠습니다. 아래는 ReportLab을 사용하여 “hello.pdf”라는 파일을 생성하는 예제입니다.

from reportlab.pdfgen import canvas

def create_pdf():
    c = canvas.Canvas("hello.pdf")
    c.drawString(100, 750, "Hello, World!")
    c.save()

create_pdf()

위 예제 코드를 실행하면 현재 작업 디렉토리에 “hello.pdf”라는 파일이 생성됩니다. PDF 파일을 생성하는 기본적인 방법은 이와 같습니다.

PDF 파일 분할하기

이제 다음과 같은 상황을 가정해보겠습니다. “hello.pdf” 파일은 여러 장의 페이지로 구성되어 있으며, 각 페이지는 독립적인 내용을 가지고 있습니다. 이러한 PDF 파일을 페이지별로 분할하여 각각의 작은 파일로 저장하고 싶다고 가정해봅시다.

ReportLab은 PageSplitter()라는 기능을 제공하여 PDF 파일을 페이지별로 분할할 수 있습니다. 아래는 이를 사용하여 “hello.pdf” 파일을 각 페이지별로 분할하여 저장하는 예제입니다.

from PyPDF2 import PdfFileWriter, PdfFileReader
from PyPDF2.pdf import PageObject

def split_pdf(filename):
    infile = open(filename, 'rb')
    reader = PdfFileReader(infile)

    for i in range(reader.getNumPages()):
        output = PdfFileWriter()
        output.addPage(reader.getPage(i))
        with open(f"page_{i+1}.pdf", 'wb') as outfile:
            output.write(outfile)

    infile.close()

split_pdf("hello.pdf")

위 예제 코드를 실행하면 hello.pdf 파일이 page_1.pdf, page_2.pdf, …, page_n.pdf로 분할되어 저장됩니다.

결론

이 예제에서는 ReportLab을 사용하여 PDF 파일을 생성하고, PyPDF2를 사용하여 생성된 PDF 파일을 분할하는 방법을 알아보았습니다. 이를 활용하여 필요에 맞게 PDF 파일을 조작하고 활용할 수 있습니다.

더 자세한 내용은 ReportLab 공식 문서PyPDF2 공식 문서를 참고하시기 바랍니다.