📜  将照片转换为 pdf (1)

📅  最后修改于: 2023-12-03 15:39:19.637000             🧑  作者: Mango

将照片转换为PDF

有时我们需要将多张照片合并成一个PDF文件,方便查阅和传输。下面是一个使用Python和第三方库实现将照片转换为PDF的方法。

步骤
  1. 安装必要的库

我们需要安装Python的第三方库Pillow和reportlab,用于处理图片和生成PDF文件。

pip install Pillow
pip install reportlab
  1. 读取照片

将需要合并的照片放在同一个文件夹下,使用Pillow库中的Image.open()方法打开每一张照片,并将它们加入一个列表中。

from PIL import Image

image_list = []
for i in range(1,5):
    image = Image.open(f"photo{i}.jpg")
    image_list.append(image)
  1. 设置PDF的大小

我们需要设置生成的PDF文件的大小,这里使用A4纸的大小。

from reportlab.lib.pagesizes import A4

page_width, page_height = A4
  1. 创建Canvas对象

使用reportlab库中的Canvas()方法创建一个Canvas对象,用来绘制PDF文件。

from reportlab.pdfgen.canvas import Canvas

pdf_name = "photos.pdf"
pdf = Canvas(pdf_name, pagesize=A4)

x, y = 0, 0
  1. 绘制图片

将列表中的每一张照片绘制到Canvas对象上。

for image in image_list:
    img_width, img_height = image.size
    aspect_ratio = img_height / float(img_width)

    # 计算图片在PDF文件中的大小
    if img_width > page_width:
        img_width = page_width
        img_height = img_width * aspect_ratio

    if img_height > page_height:
        img_height = page_height
        img_width = img_height / aspect_ratio

    pdf.drawImage(image, x, y, img_width, img_height)
    pdf.showPage()
  1. 保存PDF文件

保存生成的PDF文件。

pdf.save()
完整代码
from PIL import Image
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen.canvas import Canvas

image_list = []
for i in range(1,5):
    image = Image.open(f"photo{i}.jpg")
    image_list.append(image)

page_width, page_height = A4

pdf_name = "photos.pdf"
pdf = Canvas(pdf_name, pagesize=A4)

x, y = 0, 0

for image in image_list:
    img_width, img_height = image.size
    aspect_ratio = img_height / float(img_width)

    if img_width > page_width:
        img_width = page_width
        img_height = img_width * aspect_ratio

    if img_height > page_height:
        img_height = page_height
        img_width = img_height / aspect_ratio

    pdf.drawImage(image, x, y, img_width, img_height)
    pdf.showPage()

pdf.save()
结论

通过以上步骤,我们可以将多张照片合并成一个PDF文件。此方法使用Python和第三方库Pillow和reportlab实现,可以方便地应用于各种需要处理照片和生成PDF文件的项目中。