使用 Python 将 PDF 文件转换为图片格式是处理电子文档的开发人员和专业人士的常见需求。无论是生成预览缩略图、提取局部内容,还是适配无 PDF 阅读器的场景,图片格式都能提供更好的跨平台兼容性。本文将通过简单实用的代码示例,详解如何用 Spire.PDF for Python 实现 PDF 到 PNG、JPG、BMP、SVG、TIFF 等常用图片格式的转换。
文章内容:
为什么需要将 PDF 转换为图片?
将 PDF 转换为图片格式具有以下优势:
- 跨平台兼容性:图片可直接嵌入网页、APP、PPT,无需依赖 PDF 阅读器
- 轻量化预览:无需加载完整 PDF,快速生成页面快照(如文档列表缩略图)
- 精准提取:仅保存 PDF 中的特定区域(如图表、表格),以便重点分析或重复使用。
- 简化分享:图片可直接邮件发送、社交平台上传,降低接收方打开门槛
Python PDF 转图片库
Spire.PDF for Python 是一款轻量且功能全面的 PDF 处理库。支持将 PDF 页面转换为 PNG、JPG、BMP、SVG 和 TIFF等多种图片格式,且转换质量高、性能出色。
核心优势:
安装步骤:
打开终端,执行 pip 命令即可安装:
pip install Spire.PDF
基础转换:PDF 转 PNG/JPG/BMP
通过 PdfDocument 类的 SaveAsImage() 方法,可将 PDF 文档的每一页渲染为任意指定格式的图片。以下代码示例演示了如何加载 PDF 文件、遍历其所有页面,并将每页保存为 PNG 图片。若需转换为 JPG 或 BMP 格式,只需修改文件扩展名即可。
from spire.pdf import *
# 加载PDF文件
pdf = PdfDocument()
pdf.LoadFromFile("template.pdf")
# 遍历页面并保存为图片
for i in range(pdf.Pages.Count):
# 将每页转换为图片
with pdf.SaveAsImage(i) as image:
# 根据需要保存为不同格式
image.Save(f"PDF转图片/图片_{i}.png")
# image.Save(f"PDF转图片/图片_{i}.jpg")
# image.Save(f"PDF转图片/ToImage_{i}.bmp")
# 关闭PDF文档
pdf.Close()

高级转换选项:解决复杂场景
生成透明背景图片
透明背景有助于将图片无缝融入设计中,避免出现不必要的边框或背景色。在 Python 中进行 PDF 转图片时,可通过 SetPdfToImageOptions(0) 设置透明值(0 = 完全透明)。
以下代码演示了如何将 PDF 文档的每一页导出为透明的 PNG 图片:
from spire.pdf import *
# 从文件加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("template.pdf")
# 设置图片背景的透明值为0
pdf.ConvertOptions.SetPdfToImageOptions(0)
# 遍历所有页面并保存为图片
for i in range(pdf.Pages.Count):
# 将每页转换为图片
with pdf.SaveAsImage(i) as image:
# 将图片保存至输出目录
image.Save(f"Output/ToImage_{i}_transparent.png")
# 关闭PDF文档
pdf.Close()
⚠️ 注意:仅 PNG 支持透明效果,JPG/BMP 会自动填充白色背景。
裁剪 PDF 特定区域并转换为图片
在某些场景下,你可能只需导出 PDF 页面的特定区域(如图表、表格或文本块)。这可以通过在转换前调整页面的 CropBox 属性实现,该属性用于定义页面的可见区域。通过将其设置为特定的 RectangleF(x, y, width, height) 值,可以隔离并导出所需的内容部分。
以下代码演示了如何裁剪 PDF 第一页的矩形区域,并将该区域保存为 PNG 图片:
from spire.pdf import *
# 从文件加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")
# 获取PDF的第一页
page = pdf.Pages.get_Item(0)
# 按指定区域裁剪页面
page.CropBox = RectangleF(0.0, 300.0, 600.0, 260.0)
# 将裁剪后的页面转换为图片
with pdf.SaveAsImage(0) as image:
# 将图片保存为PNG文件
image.Save("Output/CropPDFSaveAsImage.png")
# 关闭PDF文档
pdf.Close()

注意:使用时需要根据目标内容的位置调整坐标。Spire.PDF 坐标系从页面左上角开始计算。
将 PDF 转换为多页 TIFF 文件
TIFF 格式支持多页存储,是存档和打印的常用选择。虽然 Spire.PDF for Python 不支持直接支持创建多页 TIFF,但你可以先将单个页面转换为图片,再使用 Pillow 库将其合并为一个 .tiff 文件。
开始前,运行以下命令安装 Pillow 库,:
pip install Pillow
以下示例演示了如何:
- 加载 PDF 文件
- 将每一页转换为图片
- 将所有图片合并为单个多页 TIFF 文件
from spire.pdf import *
from PIL import Image
from io import BytesIO
# 从文件加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("Input.pdf")
# 创建一个空列表用于存储PIL图片
images = []
# 遍历文档中的所有页面
for i in range(pdf.Pages.Count):
# 将指定页面转换为图片流
with pdf.SaveAsImage(i) as imageData:
# 以PIL图片格式打开图片流
img = Image.open(BytesIO(imageData.ToArray()))
# 将PIL图片添加到列表中
images.append(img)
# 将PIL图片保存为多页TIFF文件
images[0].save("Output/ToTIFF.tiff", save_all=True, append_images=images[1:])
# 释放资源
pdf.Dispose()

同样也可以将 TIFF 文件转换回 PDF 格式。详细教程参考:Python 将 PDF 转换为 TIFF 和将 TIFF 转换为 PDF。
将 PDF 导出为 SVG 格式
SVG(可缩放矢量图形)是需要无损缩放内容的理想格式,例如图表、矢量插图和技术图纸。通过使用 SaveToFile() 方法并指定其参数FileFormat.SVG ,即可将 PDF 页面导出为 SVG 文件。该转换会保留内容的矢量特性,非常适合网页嵌入、响应式设计以及在矢量图形工具中进一步编辑。
以下代码演示了如何将一个 PDF 文档导出为 SVG 格式:
from spire.pdf import *
# 从文件加载PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("Example.pdf")
# 将文件的每一页保存为单独的SVG文件
pdf.SaveToFile("PdfToSVG/ToSVG.svg", FileFormat.SVG)
# 关闭PdfDocument对象
pdf.Close()
⚠️ 注意:PDF 文档中的每一页将保存为单独的 SVG 文件,文件名为 ToSVG_i.svg(其中i为页码,从1开始)。
若仅需导出特定页面或自定义 SVG 输出尺寸,请参考详细教程:Python 将 PDF 转为 SVG。
总结
将 PDF 转换为 PNG、JPG、BMP、SVG 和 TIFF 等图片格式,为电子文档的分享、展示和处理提供了灵活性。借助 Spire.PDF for Python,可高效实现 PDF 到图片的全场景转换:
- 基础需求:一键转 PNG/JPG/BMP,代码简洁易复用
- 高级需求:支持透明背景、局部裁剪、多页 TIFF、SVG 矢量图
通过本文章开发者可以实现自动化 PDF 转图片流程,将图片导出功能无缝集成到 Python 应用程序和工作流中。
常见问题
Q1:可以将 PDF 中的指定页面范围转换为图片吗?
答:可以通过调整循环的索引范围来转换特定页面。例如,转换第1-3页(注:索引从0开始):
# 仅转换第1-3页
for i in range(0, 2):
with pdf.SaveAsImage(i) as img:
img.Save(f"page_{i}.png")
Q2:是否支持批量转换多个 PDF 文件为图片?
答:支持批量转换。可以遍历 PDF 文件路径列表,并在循环中逐一转换:
pdf_files = ["a.pdf", "b.pdf", "c.pdf"]
for file in pdf_files:
pdf = PdfDocument()
pdf.LoadFromFile(file)
for i in range(pdf.Pages.Count):
with pdf.SaveAsImage(i) as img:
img.Save(f"{file}_page_{i}.png")
Q3:可以将受密码保护的 PDF 转换为图片吗?
答:可以。只需在加载 PDF 文档时传入正确的密码,即可转换加密 PDF:
pdf = PdfDocument()
pdf.LoadFromFile("protected.pdf", "password")
Q4:是否可以直接提取 PDF 中的图片,而非转换整个页面?
答:可以,Spire.PDF 支持提取 PDF 内的原生图片,具体可参考:使用 Python 从 PDF 中提取图片 - 完整指南。







