将分散的图像集合转换为单个可搜索的 PDF 是报告工具、发票生成器和归档系统的常见需求。 Aspose.PDF for Python via .NET 是一个强大的 SDK,可在 Python 应用程序中快速且可靠地完成此转换。本指南将带您逐步完成 SDK 的安装、使用 Python Imaging Library 加载图像、逐页构建 PDF、调整压缩设置,最后保存结果,并提供清晰的代码示例。

开始之前:先决条件和安装

要遵循本教程,您需要:

  • 已在开发机器上安装 Python 3.8 或更高版本。
  • 您选择的 IDE 或编辑器(VS Code、PyCharm 等)。
  • 访问互联网以下载 SDK 包。

使用 pip 安装 Aspose.PDF SDK 和 Pillow 库(事实上的 Python Imaging Library):

pip install aspose-pdf pillow

您也可以从官方发布页面手动下载 SDK: Aspose.PDF for Python via .NET 下载。 安装后,在脚本中导入所需的命名空间。

现在环境已经准备好,让我们深入实现。

从图像生成 PDF(Python):分步演练

第一步:加载源图像

首先,使用 Pillow 打开每个图像文件并将它们保存在列表中。这为 PDF 构建器准备了图像数据。

from PIL import Image
import os

image_folder = "input_images"
image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder)
               if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]

images = [Image.open(p) for p in image_paths]

步骤 2:创建新的 PDF 文档

实例化 Aspose.PDF Document 对象,该对象将保存页面。

import aspose.pdf as ap

pdf_doc = ap.Document()

有关 Document 类的更多详细信息,请参阅 API 参考

步骤 3:将每个图像添加为单独的页面

遍历已加载的图像,创建页面并嵌入图像。SDK 会自动将图像缩放以适应页面大小。

for img in images:
    page = pdf_doc.pages.add()
    # Convert Pillow image to a byte stream compatible with Aspose.PDF
    with io.BytesIO() as img_stream:
        img.save(img_stream, format='PNG')
        img_stream.seek(0)
        page.resources.images.add(ap.Image(img_stream))
        # Fit the image to the page dimensions
        page.page_info.width = img.width
        page.page_info.height = img.height

步骤 4:配置压缩选项

调整图像压缩级别,以在不牺牲质量的情况下减小最终 PDF 的大小。

# Set JPEG compression for all images (if using JPEG format)
for img_res in pdf_doc.resources.images:
    img_res.compression = ap.ImageCompression.JPEG
    img_res.jpeg_quality = 80  # Quality range: 0‑100

步骤 5:保存 PDF 文件

最后,将组装好的文档写入磁盘。

output_path = "output/result.pdf"
pdf_doc.save(output_path)
print(f"PDF generated successfully at {output_path}")

通过这些步骤,您已经拥有一个完整的工作流来 在 Python 中从图像生成 PDF

使用 Python 从图像集合创建 PDF - 完整代码示例

以下脚本将所有部分组合成一个可运行的程序。

import os
import io
from PIL import Image
import aspose.pdf as ap

# -------------------- Configuration --------------------
image_folder = "input_images"          # Folder containing source images
output_pdf = "output/result.pdf"       # Destination PDF file
jpeg_quality = 80                      # Compression quality (0‑100)

# -------------------- Load Images --------------------
image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder)
               if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]

images = [Image.open(p) for p in image_paths]

# -------------------- Create PDF Document --------------------
pdf_doc = ap.Document()

for img in images:
    page = pdf_doc.pages.add()
    with io.BytesIO() as img_stream:
        img.save(img_stream, format='PNG')
        img_stream.seek(0)
        pdf_image = page.resources.images.add(ap.Image(img_stream))
        page.page_info.width = img.width
        page.page_info.height = img.height
        # Apply compression if the original is JPEG
        if img.format == 'JPEG':
            pdf_image.compression = ap.ImageCompression.JPEG
            pdf_image.jpeg_quality = jpeg_quality

# -------------------- Save PDF --------------------
pdf_doc.save(output_pdf)
print(f"PDF generated successfully at {output_pdf}")

注意: 此代码示例演示了核心功能。在项目中使用之前,请确保更新文件路径(input_imagesoutput/result.pdf),验证所有必需的依赖项已正确安装,并在开发环境中进行彻底测试。如果遇到任何问题,请参阅官方文档或联系支持团队获取帮助。

高级 PDF 生成设置:选项和配置

超出基本工作流,Aspose.PDF 提供了多个属性来微调输出。

图像压缩级别

在质量和文件大小之间进行权衡。

pdf_image.compression = ap.ImageCompression.JPEG
pdf_image.jpeg_quality = 70   # Lower value = smaller file, lower quality

页面大小和边距

如果需要统一的布局,请设置自定义页面大小。

page.page_info.width = 595   # A4 width in points
page.page_info.height = 842  # A4 height in points
page.page_info.margin = ap.MarginInfo(10, 10, 10, 10)

分辨率 (DPI)

更高的 DPI 能够产生更清晰的图像,但会导致 PDF 文件体积更大。

pdf_doc.page_info.dpi = 300

有关可配置属性的完整列表,请参阅API 参考

结论

您现在拥有一个完整的、可编程的解决方案,可使用 Aspose.PDF for Python via .NET 从图像生成 PDF。SDK 只需几行代码即可处理图像加载、页面创建、压缩和保存,让您专注于业务逻辑,而无需处理底层 PDF。当您进入生产环境时,请记得获取正式许可证,详细信息请参阅 pricing page,您也可以通过 temporary license 开始评估。祝编码愉快,尽情享受将图像集合转换为精美 PDF 的简便!

常见问题

  • 如何使用 Aspose.PDF 在 Python 中从图像生成 PDF?
    使用 Aspose.PDF SDK 创建 Document,为每个使用 Pillow 加载的图像添加页面,可选地设置压缩,然后调用 save() 将 PDF 写入。完整示例已在上文中提供。

  • 支持哪些图像格式用于 PDF 生成?
    SDK 直接接受 PNGJPGJPEGBMPGIFTIFF。Pillow 还可以在将不受支持的格式添加到 PDF 之前,将其转换为这些格式之一。

  • 我需要商业使用许可证吗?
    是的。请从临时许可证页面获取临时评估许可证,并通过定价页面购买完整许可证以用于生产部署。

  • 我可以调整 PDF 页面大小和分辨率吗?
    当然可以。使用 page.page_info.widthpage.page_info.heightpdf_doc.page_info.dpi 来控制尺寸和 DPI,如配置/选项章节所示。

阅读更多