[python] ReportLab 페이지 레이아웃

ReportLab은 Python에 대한 강력하고 유연한 PDF 생성 라이브러리입니다. 이 라이브러리를 사용하면 Python 코드를 사용하여 다양한 형식의 문서를 만들 수 있습니다. 이번에는 ReportLab을 사용하여 페이지 레이아웃을 만드는 방법에 대해 알아보겠습니다.

페이지 크기 설정하기

ReportLab에서 페이지 크기를 설정하기 위해서는 canvas.setPageSize() 메서드를 사용합니다. 다음은 A4 크기의 페이지를 만드는 예시입니다:

from reportlab.pdfgen.canvas import Canvas

width, height = 595, 842
canvas = Canvas("output.pdf", pagesize=(width, height))
canvas.setPageSize((width, height))

페이지 여백 설정하기

페이지 여백을 설정하려면 canvas.setMargins() 메서드를 사용합니다. 다음은 1인치의 여백을 설정하는 예시입니다:

left_margin = 72
right_margin = 72
top_margin = 72
bottom_margin = 72
canvas.setMargins(left_margin, right_margin, top_margin, bottom_margin)

페이지 헤더와 푸터 추가하기

ReportLab을 사용하여 페이지 헤더와 푸터를 추가하려면 canvas.showPage() 메서드로 페이지를 생성한 후에 canvas.drawString() 메서드를 사용하여 원하는 위치에 텍스트를 추가합니다. 다음은 페이지 상단 좌측에 “헤더”라는 텍스트를 추가하는 예시입니다:

header_text = "헤더"
canvas.showPage()
canvas.setFont("Helvetica", 12)
canvas.drawString(left_margin, height - top_margin + 20, header_text)

페이지 번호 추가하기

ReportLab을 사용하여 페이지 번호를 추가하려면 canvas.getPageNumber() 메서드를 사용하여 현재 페이지 번호를 가져온 후에 canvas.drawString() 메서드를 사용하여 페이지 번호를 추가합니다. 다음은 페이지 하단 가운데에 페이지 번호를 추가하는 예시입니다:

page_number = canvas.getPageNumber()
footer_text = f"페이지 번호: {page_number}"
canvas.setFont("Helvetica", 10)
canvas.drawString(width / 2, bottom_margin - 20, footer_text)

결과 출력하기

생성한 페이지 레이아웃을 출력하려면 canvas.save() 메서드를 사용하여 PDF 파일로 저장합니다:

canvas.save()

이제 위의 예시 코드를 참조하여 ReportLab을 사용하여 페이지 레이아웃을 만들 수 있습니다. 자세한 내용은 ReportLab 공식 문서를 참조하시기 바랍니다.

참고 자료