
在日常的文档管理或自动化处理中,将图片批量转换为 PDF 是一项非常实用的操作。这样做不仅能更好地整理和归档图片资料,还能方便文件的统一分享与长期保存。通过将多种图片格式合并到同一个 PDF 文件中,用户可以更高效地管理和分发视觉内容。
本文将介绍如何使用 Spire.PDF for Python 和 Python 将图片转换为 PDF,涵盖 PNG、JPEG、TIFF 和 SVG等多种图片格式。文章将结合详细的说明和完整的代码示例,帮助了解该库在图片处理与 PDF 生成方面的高效与灵活性。
目录
- 为什么要将图片转换为 PDF
- 了解 Spire.PDF:Python 图片转 PDF 库
- 将 PNG 或 JPEG 转换为 PDF
- 将多页 TIFF 转换为 PDF
- 将可缩放的 SVG 转换为 PDF
- 合并多张图片为一个 PDF
- 结论
- 常见问题解答(FAQs)
一、为什么要将图片转换为 PDF?
PDF 因其良好的可移植性、安全性以及跨设备显示的一致性而广受欢迎。将图片转换为 PDF 具有以下优势:
- 质量保真:PDF 会保留图片分辨率,不会降低清晰度。
- 便于分享:多个图片可以合并为一个 PDF 文件,简化分发流程。
- 文档标准化:转换为 PDF 可确保兼容各种文档管理系统。
无论是用于归档扫描文档,还是整理和展示图像作品集,将图片转换为 PDF 都能大幅提升使用体验与管理效率。
二、了解 Spire.PDF:Python 图片转 PDF 库
Spire.PDF for Python 是一个功能全面的 PDF 处理库,支持创建、操作和转换 PDF 文件。其主要功能包括:
安装命令如下:
pip install Spire.PDF
三、将 PNG 或 JPEG 转换为 PDF
3.1 生成与图片尺寸相同的 PDF
要在不改变原始尺寸的情况下将 PNG 或 JPEG 图片转换为 PDF,首先需创建一个 PdfDocument 对象,并将其页面边距设置为 0,以确保图片完全填满页面。
接着,读取图片并获取其尺寸,再根据图片宽高创建匹配的页面,最后将图片绘制到页面上并保存为 PDF 文件。该方法能保证像素级精确转换,无失真。
示例代码:
from spire.pdf.common import *
from spire.pdf import *
# 创建 PdfDocument 对象
document = PdfDocument()
# 将页面边距设为 0
document.PageSettings.SetMargins(0.0)
# 加载图片文件
image = PdfImage.FromFile("Robot.jpg")
# 获取图片宽高
imageWidth = image.PhysicalDimension.Width
imageHeight = image.PhysicalDimension.Height
# 添加与图片尺寸相同的页面
page = document.Pages.Add(SizeF(imageWidth, imageHeight))
# 在页面 (0,0) 位置绘制图片
page.Canvas.DrawImage(image, 0.0, 0.0)
# 保存为 PDF 文件
document.SaveToFile("output/单图转PDF.pdf")
# 释放资源
document.Dispose()
输出结果:
生成的 PDF 文件与原图片大小完全一致。

3.2 自定义 PDF 布局与图片位置
若需要自定义 PDF 页面大小或调整图片位置,只需在代码中稍作修改。以下示例将页面设置为 A4 大小,并通过计算使图片居中显示。
示例代码:
from spire.pdf.common import *
from spire.pdf import *
# 创建 PdfDocument 对象
document = PdfDocument()
# 设置页面边距为 5
document.PageSettings.SetMargins(5.0)
# 定义页面大小(A4 或自定义)
document.PageSettings.Size = PdfPageSize.A4()
# 添加页面
page = document.Pages.Add()
# 加载图片
image = PdfImage.FromFile("Robot.jpg")
# 获取图片宽高
imageWidth = image.PhysicalDimension.Width
imageHeight = image.PhysicalDimension.Height
# 计算图片居中位置
x = (page.GetClientSize().Width - imageWidth) / 2
y = (page.GetClientSize().Height - imageHeight) / 2
# 绘制图片
page.Canvas.DrawImage(image, x, y, imageWidth, imageHeight)
# 保存为 PDF
document.SaveToFile("output/单图转自定义PDF.pdf")
# 释放资源
document.Dispose()
输出结果:
图片将以居中方式显示在 A4 页面中。

四、将多页 TIFF 转换为 PDF
TIFF 格式常用于高分辨率图像,例如扫描文件或医学影像。
由于 Spire.PDF 不直接支持 TIFF 文件,因此可以借助 Python Imaging Library (PIL) 来处理多帧图像。
安装命令如下:
pip install Pillow
使用 PIL 可以逐帧读取 TIFF 图像并临时保存为 PNG,然后将其绘制到 PDF 中。每一帧对应 PDF 的一页,从而保留原始图像质量。
示例代码:
from spire.pdf.common import *
from spire.pdf import *
from PIL import Image
import io
# 创建 PdfDocument 对象
document = PdfDocument()
# 设置页面边距为 0
document.PageSettings.SetMargins(0.0)
# 加载 TIFF 图片
tiff_image = Image.open("TIFF.tiff")
# 遍历每一帧
for i in range(tiff_image.n_frames):
tiff_image.seek(i)
frame_image = tiff_image.copy()
frame_image.save(f"temp/output_frame_{i}.png")
image = PdfImage.FromFile(f"temp/output_frame_{i}.png")
imageWidth = image.PhysicalDimension.Width
imageHeight = image.PhysicalDimension.Height
page = document.Pages.Add(SizeF(imageWidth, imageHeight))
page.Canvas.DrawImage(image, 0.0, 0.0)
# 保存为 PDF
document.SaveToFile("Output/Tiff转Pdf.pdf", FileFormat.PDF)
document.Dispose()
输出结果:
每一帧 TIFF 图像均转换为 PDF 的独立页面。

五、将可缩放的 SVG 转换为 PDF
SVG 是一种矢量图格式,具有可缩放且不失真的特性,非常适合网页和印刷设计。
通过 Spire.PDF,可以直接加载并转换 SVG 文件为 PDF,过程简洁高效。
示例代码:
from spire.pdf.common import *
from spire.pdf import *
# 创建 PdfDocument 对象
document = PdfDocument()
# 加载 SVG 文件
document.LoadFromSvg("SVG.svg")
# 保存为 PDF 文件
document.SaveToFile("output/Svg转Pdf.pdf", FileFormat.PDF)
# 释放资源
document.Dispose()
提示:
若需要将多个 SVG 文件合并为一个 PDF,可分别转换后再合并生成的 PDF 文档。可参考文章:如何在 Python 中合并 PDF 文档。
输出结果:
SVG 文件被成功转换为 PDF,保持原有清晰度与比例。

六、合并多张图片为一个 PDF
该方法通过遍历指定文件夹中的所有图片,为每张图片创建相应的 PDF 页面,并保持其原始尺寸,避免失真。
示例代码:
from spire.pdf.common import *
from spire.pdf import *
import os
# 创建 PdfDocument 对象
doc = PdfDocument()
doc.PageSettings.SetMargins(0.0)
# 指定图片所在文件夹
path = "C:\\Users\\Administrator\\Desktop\\Images\\"
files = os.listdir(path)
# 遍历文件夹中的图片
for root, dirs, files in os.walk(path):
for file in files:
image = PdfImage.FromFile(os.path.join(root, file))
width = image.PhysicalDimension.Width
height = image.PhysicalDimension.Height
page = doc.Pages.Add(SizeF(width, height))
page.Canvas.DrawImage(image, 0.0, 0.0, width, height)
# 保存为 PDF
doc.SaveToFile("output/多图转PDF.pdf")
doc.Dispose()
输出结果:
文件夹内的所有图片被合并为一个 PDF 文档,每张图片占据一页。

七、结论
使用 Spire.PDF for Python 将图片转换为 PDF 十分简便。无论是单张图片转换、自定义布局、还是批量合并多图,该库都提供了高效的解决方案。只需几行代码,即可生成高质量 PDF 文件,大幅提升文档管理效率。
八、常见问题解答(FAQs)
Q1:Spire.PDF 是否支持批量转换图片?
A1: 支持。可遍历目录,将多张图片合并为单个 PDF,或分别转换为多个 PDF 文件。
Q2:Spire.PDF 支持哪些图片格式?
A2: 支持 PNG、JPEG、BMP、SVG 等多种常见格式,适用于不同场景。
Q3:可以自定义 PDF 布局吗?
A3: 当然。用户可以自定义页面尺寸、边距及图片位置,以实现理想的排版效果。
Q4:转换图片为 PDF 会降低画质吗?
A4: 不会。使用 Spire.PDF 的默认设置时,图片数据会以原始分辨率嵌入 PDF,不会进行压缩。
获取免费许可证
若希望在无评估限制的情况下体验 Spire.PDF for Python 的全部功能,可该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。30 天免费试用许可证。







