📜  如何在Python中将图像转换为 PDF?(1)

📅  最后修改于: 2023-12-03 14:52:49.872000             🧑  作者: Mango

如何在Python中将图像转换为PDF?

在实际开发中,我们经常需要将图像转换为PDF格式进行保存或上传。Python提供了多种库来实现这个功能。本文将介绍如何使用Pillow和reportlab库来将图像转换为PDF。

1. 安装Pillow和reportlab库
pip install Pillow reportlab
2. 使用Pillow将图像转换为PDF
from PIL import Image
from pathlib import Path

def image_to_pdf(image_path, pdf_path):
    image = Image.open(image_path)
    pdf_path = Path(pdf_path)
    if not pdf_path.parent.exists():
        pdf_path.parent.mkdir(parents=True)
    image.save(pdf_path.with_suffix('.pdf'))

image_to_pdf('./image.jpg', './image.pdf')

这段代码使用Pillow库中的Image对象打开图像文件,然后使用同名PDF文件保存。需要注意的是,如果PDF文件所在的文件夹不存在,需要使用Path对象的mkdir方法创建。

3. 使用reportlab将图像转换为PDF

如果需要更加精细的控制PDF文件的布局,可以使用reportlab库。

from reportlab.lib.units import inch
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from PIL import Image
from pathlib import Path

def image_to_pdf2(image_path, pdf_path):
    image = Image.open(image_path)
    pdf_path = Path(pdf_path)
    if not pdf_path.parent.exists():
        pdf_path.parent.mkdir(parents=True)
    c = canvas.Canvas(str(pdf_path.with_suffix('.pdf')), pagesize=letter)
    c.drawImage(str(image_path), 0, 0, width=letter[0], height=letter[1])
    c.save()

image_to_pdf2('./image.jpg', './image2.pdf')

这段代码使用reportlab库中的Canvas对象来创建PDF文件,并使用drawImage方法将图像绘制在PDF文件中。可以通过调整heightwidth参数控制图像的大小。需要注意的是,这个方法使用字符串作为参数传递文件路径,而不是Path对象。

以上就是使用Pillow和reportlab库将图像转换为PDF的方法了。其中,使用Pillow库简单快速,适合简单的图像转换操作;而使用reportlab库可以更加精细控制PDF文件的布局,适合高级用途。