[python] ReportLab 이미지 비율 조정

ReportLab은 Python에서 PDF 문서를 생성하는 데 사용되는 강력한 라이브러리입니다. 이미지를 PDF에 삽입할 때 이미지의 비율을 조정하는 방법에 대해 알아보겠습니다.

이미지 비율 유지하기

일반적으로, 이미지를 PDF에 추가할 때 이미지의 원래 비율을 유지하는 것이 중요합니다. Image() 함수를 사용하여 이미지를 삽입할 수 있습니다. 이 함수에 width와 height 매개변수를 지정하여 이미지의 크기를 조정할 수 있습니다. 이미지 크기를 지정할 때 비율을 유지하기 위해서는 width 또는 height 중 하나의 값을 지정하고, 다른 값은 None으로 설정해야 합니다.

from reportlab.lib.pagesizes import A4
from reportlab.lib.units import inch
from reportlab.pdfgen import canvas
from reportlab.lib.utils import ImageReader

width, height = A4

def add_image_to_pdf(image_path):
    c = canvas.Canvas("output.pdf", pagesize=A4)

    img_width = 4 * inch  # 원하는 이미지 너비
    img_height = 3 * inch  # 원하는 이미지 높이

    img = ImageReader(image_path)

    # 이미지 비율을 유지하며 출력하기 위해 width 또는 height 중 하나만 지정
    if img.getWidth() / img_height > img.getHeight() / img_width:
        c.drawImage(img, (width - img_width) / 2, (height - img_height) / 2,
                    width=img_width, height=None)
    else:
        c.drawImage(img, (width - img_width) / 2, (height - img_height) / 2,
                    width=None, height=img_height)

    c.showPage()
    c.save()

위의 코드에서 image_path는 삽입할 이미지의 파일 경로입니다. 4 * inch3 * inch는 이미지의 원하는 너비와 높이입니다. 비율을 유지하면서 이미지를 출력하기 위해 if-else 문을 사용하였습니다. 출력된 PDF 파일은 “output.pdf”로 저장됩니다.

참고 자료

이제 ReportLab을 활용하여 이미지를 비율을 유지하며 PDF에 추가하는 방법을 배웠습니다. 이를 응용하여 보고서나 문서 작성에 활용할 수 있습니다.