0人参与 • 2026-03-19 • Python
有多种python库可以实现将pdf文件转换为图片,下面介绍几种常用的方法:
from pdf2image import convert_from_path
import os
def pdf_to_images(pdf_path, output_folder):
# 创建输出文件夹
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 转换pdf为图片
images = convert_from_path(pdf_path)
# 保存图片
for i, image in enumerate(images):
image.save(f"{output_folder}/page_{i+1}.jpg", "jpeg")
print(f"转换完成,共生成 {len(images)} 张图片")
# 使用示例
pdf_path = "input.pdf" # 输入pdf文件路径
output_folder = "output_images" # 输出图片文件夹
pdf_to_images(pdf_path, output_folder)安装依赖
pip install pdf2image
还需要安装poppler:
windows: 下载poppler并添加bin目录到path
mac: brew install poppler
linux: sudo apt-get install poppler-utils
import fitz # pymupdf
import os
def pdf_to_images(pdf_path, output_folder, zoom=3):
# 创建输出文件夹
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 打开pdf文件
pdf_document = fitz.open(pdf_path)
# 逐页转换为图片
for page_num in range(len(pdf_document)):
page = pdf_document.load_page(page_num)
mat = fitz.matrix(zoom, zoom) # 设置缩放因子提高分辨率
pix = page.get_pixmap(matrix=mat)
output_path = f"{output_folder}/page_{page_num+1}.png"
pix.save(output_path)
print(f"转换完成,共生成 {len(pdf_document)} 张图片")
pdf_document.close()
# 使用示例
pdf_path = "input.pdf"
output_folder = "output_images"
pdf_to_images(pdf_path, output_folder)安装依赖
pip install pymupdf
from wand.image import image
import os
def pdf_to_images(pdf_path, output_folder, resolution=300):
# 创建输出文件夹
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 转换pdf为图片
with image(filename=pdf_path, resolution=resolution) as img:
img.compression_quality = 99
img.save(filename=f"{output_folder}/page.jpg") # 会自动生成多个文件
# 统计生成的文件数量
image_count = len([f for f in os.listdir(output_folder) if f.endswith('.jpg')])
print(f"转换完成,共生成 {image_count} 张图片")
# 使用示例
pdf_path = "input.pdf"
output_folder = "output_images"
pdf_to_images(pdf_path, output_folder)安装依赖
pip install wand
还需要安装imagemagick:
brew install imagemagicksudo apt-get install imagemagickpymupdf(也称为 fitz)是一个高性能的 python pdf 处理库,基于 mupdf 引擎,支持 pdf 转图片、文本提取、页面操作 等功能。相比其他库,它的速度更快,且不依赖外部工具(如 poppler 或 imagemagick)。
pip install pymupdf -i https://pypi.tuna.tsinghua.edu.cn/simple
pdf 转图片
import fitz # pymupdf
import os
def pdf_to_images(pdf_path, output_folder, zoom=2, fmt="png"):
"""将 pdf 每页转为图片
args:
pdf_path: pdf 文件路径
output_folder: 输出文件夹
zoom: 缩放因子(提高分辨率)
fmt: 图片格式(png/jpg)
"""
if not os.path.exists(output_folder):
os.makedirs(output_folder)
doc = fitz.open(pdf_path)
for page_num in range(len(doc)):
page = doc.load_page(page_num)
mat = fitz.matrix(zoom, zoom) # 提高分辨率
pix = page.get_pixmap(matrix=mat)
output_path = f"{output_folder}/page_{page_num+1}.{fmt}"
pix.save(output_path)
print(f"转换完成,共生成 {len(doc)} 张图片")
# 使用示例
pdf_to_images("input.pdf", "output_images", zoom=3, fmt="jpg")参数说明:
zoom=2:放大 2 倍(默认 72 dpi,zoom=3 约等于 300 dpi)。fmt="png":输出格式(支持 png/jpg/ppm/tga 等)。提取 pdf 文本
doc = fitz.open("input.pdf")
text = ""
for page in doc:
text += page.get_text() # 提取纯文本
print(text)高级选项:
page.get_text("blocks"):按文本块提取(带坐标和格式)。page.get_text("words"):按单词提取。合并/拆分 pdf
# 合并 pdf
doc1 = fitz.open("file1.pdf")
doc2 = fitz.open("file2.pdf")
doc1.insert_pdf(doc2) # 将 doc2 插入到 doc1 末尾
doc1.save("merged.pdf")
# 拆分 pdf(提取指定页)
doc = fitz.open("input.pdf")
new_doc = fitz.open()
new_doc.insert_pdf(doc, from_page=0, to_page=2) # 提取前 3 页
new_doc.save("split.pdf")添加水印或注释
doc = fitz.open("input.pdf")
page = doc.load_page(0)
# 添加文本水印
page.insert_text(
point=(50, 50), # 坐标 (x,y)
text="watermark",
fontsize=20,
color=(1, 0, 0), # rgb 颜色(0-1 范围)
rotate=45 # 旋转角度
)
# 添加矩形标注
page.draw_rect(
rect=fitz.rect(50, 50, 200, 100), # 矩形区域 (x1,y1,x2,y2)
color=(0, 1, 0),
width=2 # 边框宽度
)
doc.save("output.pdf")问题 1:modulenotfounderror: no module named 'fitz'
原因:pymupdf 的导入名是 fitz,但包名是 pymupdf。
解决:确保安装正确:
pip uninstall fitz # 如果误装了旧版 pip install pymupdf
问题 2:图片分辨率低
解决:调整 zoom 参数(如 zoom=3)或直接设置 dpi:
mat = fitz.matrix(300/72, 300/72) # 300 dpi pix = page.get_pixmap(matrix=mat)
问题 3:处理加密 pdf
doc = fitz.open("encrypted.pdf", password="your_password")推荐场景:
poppler 或 imagemagick)。优势:
| 库 | 依赖项 | 速度 | 功能丰富度 |
|---|---|---|---|
| pymupdf | 无 | 极快 | ★★★★★ |
| pdf2image | poppler | 快 | ★★★☆☆ |
| wand | imagemagick | 慢 | ★★★★☆ |
选择哪种方法取决于你的具体需求和环境配置。pdf2image通常最简单易用,pymupdf性能较好,wand则提供了更多图像处理选项。
以上就是python编程之pdf转图片的三种实现方法详解的详细内容,更多关于python pdf转图的资料请关注代码网其它相关文章!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论