📅  最后修改于: 2023-12-03 15:39:19.637000             🧑  作者: Mango
有时我们需要将多张照片合并成一个PDF文件,方便查阅和传输。下面是一个使用Python和第三方库实现将照片转换为PDF的方法。
我们需要安装Python的第三方库Pillow和reportlab,用于处理图片和生成PDF文件。
pip install Pillow
pip install reportlab
将需要合并的照片放在同一个文件夹下,使用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)
我们需要设置生成的PDF文件的大小,这里使用A4纸的大小。
from reportlab.lib.pagesizes import A4
page_width, page_height = A4
使用reportlab库中的Canvas()方法创建一个Canvas对象,用来绘制PDF文件。
from reportlab.pdfgen.canvas import Canvas
pdf_name = "photos.pdf"
pdf = Canvas(pdf_name, pagesize=A4)
x, y = 0, 0
将列表中的每一张照片绘制到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()
保存生成的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文件的项目中。