Skip to content

PDF 转图片

两者差异对比

对比项PyMuPDFpdf2image
速度快,底层基于C++实现,处理效率高相对较慢,依赖外部工具转换
功能支持PDF内容提取、编辑等多功能专注于PDF转图片,功能单一
依赖纯Python库,无额外依赖需要安装Poppler等外部工具
安装pip install pymupdf 即可pip install pdf2image 外,还需手动安装Poppler
使用复杂度API较底层,学习成本稍高API简单易用,适合快速上手
图片质量可自定义DPI,输出高质量图片图片质量依赖于Poppler配置

使用 PyMuPDF (fitz)

sh
pip install pymupdf
示例代码
python
import fitz  # PyMuPDF
 
def pdf_to_images(pdf_path, output_folder):
    # 打开PDF文件
    doc = fitz.open(pdf_path)
    for page_number in range(len(doc)):
        # 获取页面
        page = doc.load_page(page_number)
        # 将页面渲染为图片
        pix = page.get_pixmap()
        # 设置DPI为300
        pix.set_dpi(300)  
        # 保存图片到文件
        image_path = f"{output_folder}/page_{page_number + 1}.png"
        pix.save(image_path)
    doc.close()
 
pdf_path = 'path/to/your/pdf/file.pdf'
output_folder = 'path/to/output/folder'
pdf_to_images(pdf_path, output_folder)

使用 PDF2Image

sh
pip install pdf2image
示例代码
python
from pdf2image import convert_from_path
 
def pdf_to_images(pdf_path, output_folder):
    # 转换PDF的每一页为图片列表
    images = convert_from_path(pdf_path)
    for i, image in enumerate(images):
        # 保存图片到文件
        image_path = f"{output_folder}/page_{i + 1}.png"
        image.save(image_path, 'PNG')  # 可以改为'JPEG'来保存为JPEG格式
    # 关闭图片对象以释放内存
    for image in images:
        image.close()
 
pdf_path = 'path/to/your/pdf/file.pdf'
output_folder = 'path/to/output/folder'
pdf_to_images(pdf_path, output_folder)