[python] ReportLab 페이지 페이딩

ReportLab은 파이썬에서 PDF 문서를 생성하기 위한 강력한 도구입니다. ReportLab을 사용하면 문서의 내용 및 레이아웃을 자유롭게 제어할 수 있으며, 페이지 페이딩(Pagination)을 통해 여러 페이지에 걸친 문서를 만들 수 있습니다.

이번에는 ReportLab을 사용하여 페이지 페이딩을 구현하는 방법에 대해 알아보겠습니다.

ReportLab 설치

먼저, ReportLab 패키지를 설치해야 합니다. 아래의 명령을 사용하여 설치할 수 있습니다.

pip install reportlab

페이지 페이딩 추가

간단한 예제를 통해 페이지 페이딩을 추가하는 방법을 알아보겠습니다. 아래의 코드를 참고해 주세요.

from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet

def add_page_number(canvas, doc):
    page_num = canvas.getPageNumber()
    text = "Page %s" % page_num
    canvas.setFont("Helvetica", 9)
    canvas.drawString(550, 15, text)

doc = SimpleDocTemplate("example.pdf", pagesize=letter)
styles = getSampleStyleSheet()
content = []

# 문서에 추가할 내용 생성
for i in range(10):
    content.append(Paragraph("This is paragraph %s." % i, styles["BodyText"]))
    content.append(Spacer(1, 12))

# 페이지 페이딩 콜백 함수 등록
doc.build(content, onFirstPage=add_page_number, onLaterPages=add_page_number)

위의 코드에서는 add_page_number라는 콜백 함수를 정의하고, 이를 doc.build 메서드의 onFirstPageonLaterPages 매개변수로 전달합니다. 이 콜백 함수에서는 canvas.getPageNumber()를 사용하여 현재 페이지 번호를 가져와 “Page X”라는 형식으로 텍스트를 생성하고, 문서의 오른쪽 아래 모서리에 해당 텍스트를 그립니다.

위의 코드를 실행하면 “example.pdf”라는 이름의 PDF 파일이 생성되며, 각 페이지에 “Page X”라는 페이딩이 표시됩니다.

결론

이번에는 ReportLab을 사용하여 페이지 페이딩을 추가하는 방법에 대해 알아보았습니다. ReportLab을 사용하면 다양한 스타일 및 레이아웃을 커스터마이징할 수 있으므로, 필요에 따라 페이딩 스타일을 변경하거나 다른 항목을 추가할 수도 있습니다. ReportLab의 공식 문서를 참고하여 더 많은 기능을 탐색해보세요.

참고 자료