Windows使用Python实现将PDF文件保存为图片

 更新时间:2025年10月29日 09:30:07   作者:清山博客  
在 Python 中将 PDF 文件保存为图片,最常用的方法是使用 pdf2image 库,能够将 PDF 的每一页渲染为高质量的图片,下面我们就来看看具体实现方法吧

在 Python 中将 PDF 文件保存为图片,最常用的方法是使用 pdf2image 库。这个库实际上是 poppler 工具的 Python 封装,能够将 PDF 的每一页渲染为高质量的图片(如 PNG 或 JPEG)。

以下是详细的操作步骤和代码示例:

第一步:安装依赖库

pip install pdf2image pillow
  • pdf2image: 用于将 PDF 转换为图像。
  • Pillow (PIL): 用于图像处理和保存。

第二步:安装 poppler

pdf2image 依赖于 poppler,需要单独安装:

Windows:

下载 poppler for Windows:https://github.com/oschwartz10612/poppler-windows/releases/

解压后,将 poppler-xx.x.x\bin 目录添加到系统环境变量 PATH 中。或者在代码中指定 poppler_path。

第三步:Python 代码示例

from pdf2image import convert_from_path
import os


def pdf_to_images(poppler_path, pdf_path, output_folder, dpi=200, fmt='jpg'):
    """
    将 PDF 转换为图片并保存
    :param poppler_path:
    :param pdf_path: PDF 文件路径
    :param output_folder: 输出图片的文件夹
    :param dpi: 图像分辨率(越高越清晰,但文件越大)
    :param fmt: 输出格式,如 'png', 'jpeg'
    """
    # 确保输出目录存在
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    # 转换 PDF 为图像列表
    try:
        images = convert_from_path(pdf_path, dpi=dpi, poppler_path=poppler_path)
    except Exception as e:
        print("转换失败,请检查 poppler 是否安装正确。")
        print(e)
        return
    # 保存每一页为图片
    for i, image in enumerate(images):
        output_path = os.path.join(output_folder, f"{i + 1:03d}.{fmt}")
        image.save(output_path, fmt.upper())
        print(f"已保存: {output_path}")


# 使用示例
poppler_path = r'E:\00_Tool\poppler-25.07.0\Library\bin'  # 如果使用 Windows 且未添加 poppler 到 PATH,需指定路径
input_file_path = r"E:\****报告.pdf"
file_name = os.path.basename(input_file_path)
file_name_without_extension, file_extension = os.path.splitext(file_name)
# 创建输出文件夹
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")  # 桌面路径
output_folder = os.path.join(desktop_path, file_name_without_extension)  # 输出文件夹
pdf_to_images(poppler_path, input_file_path, output_folder, dpi=200, fmt='png')

输出格式说明

  • fmt='png': 推荐用于清晰文本和透明背景。
  • fmt='jpeg': 文件更小,适合照片类 PDF,但有损压缩。
  • 提高 dpi 值可以提升图像质量,但会增加处理时间和文件大小。
  • 如果 PDF 有加密或损坏,转换可能失败。

方法补充

Python将PDF文件转存为图片

技术工具:Python版本:3.9

代码编辑器:jupyter notebook

因工作中的某些奇葩要求,需要将PDF文件的每页内容转存成按顺序编号的图片。用第三方软件或者在线转换也可以,但批量操作还是Python方便,所谓搞定办公自动化,Python出山,一统天下;Python出征,寸草不生~ O(∩_∩)O

不过这个需要用到`PyMuPDF`库,电脑运行cmd,输入“pip install PyMuPDF”安装即可。安装后通过`import fitz`导入模块。等等,为什么安装的是`PyMuPDF`,导入的是`fitz`?俺`PyMuPDF`就是这么任性,怎么的,爱用不用!哈哈,开个玩笑。其实是因为`PyMuPDF`曾用名`fitz-python`,所以只是`fitz`换了个马甲而已。

这里先导入`fitz`库,用于将PDF文件的页面提取成像素信息(图片)。再导入`glob`库,用于获取后缀为".pdf"的文件的文件名。`os`库可新建文件夹。

#批量将PDF文件转为图片
import fitz
import glob
import os
 
image_path = "图片\\" #存放图片的文件夹
PDFfiles = glob.glob("PDF文件\\*.pdf") #获取所有pdf文件的文件名
for PDFfile in PDFfiles: #遍历所有PDF文件
    PDFdoc = fitz.open(PDFfile) #读取PDF文件
    folder_name = PDFfile.split("\\")[-1].split(".")[0] #按源文件名新建文件夹
    for pg in range(PDFdoc.pageCount): #根据PDF的页数,按页提取图片        
        page = PDFdoc[pg]
        #增强图片分辨率
        zoom_x = 3 #水平方向
        zoom_y = 3 #垂直方向
        mat = fitz.Matrix(zoom_x, zoom_y) 
        pix = page.getPixmap(matrix=mat)  
        #按原PDF名称新建文件夹并按顺序保存图片
        if not os.path.exists(image_path+folder_name):#判断文件夹是否已存在
            os.makedirs(image_path+folder_name)#不存在则新建,存在就跳过这行
        pix.writeImage(image_path+folder_name + "\\{}.png".format(str(pg+1))) #按PDF中的页面顺序命名并保存图片

到此这篇关于Windows使用Python实现将PDF文件保存为图片的文章就介绍到这了,更多相关Python PDF保存为图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python统计日志中每个IP出现次数的方法

    Python统计日志中每个IP出现次数的方法

    这篇文章主要介绍了Python统计日志中每个IP出现次数的方法,实例分析了Python基于正则表达式解析日志文件的相关技巧,需要的朋友可以参考下
    2015-07-07
  • 利用Python将每日一句定时推送至微信的实现方法

    利用Python将每日一句定时推送至微信的实现方法

    这篇文章主要给大家介绍了关于利用Python将每日一句定时推送至微信的实现方法,文中通过示例代码将实现的步骤一步步介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-08-08
  • darknet框架中YOLOv3对数据集进行训练和预测详解

    darknet框架中YOLOv3对数据集进行训练和预测详解

    这篇文章主要为大家介绍了darknet框架中YOLOv3对数据集进行训练和预测使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • python 处理数字,把大于上限的数字置零实现方法

    python 处理数字,把大于上限的数字置零实现方法

    今天小编就为大家分享一篇python 处理数字,把大于上限的数字置零实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python 压缩打包文件/文件夹的方法

    Python 压缩打包文件/文件夹的方法

    本文主要介绍了Python 压缩打包文件/文件夹的方法,分两种类型处理,打包文件是需要传入文件的路径,打包文件夹是传入文件夹的路径,感兴趣的可以了解一下
    2023-12-12
  • Python的内置数据类型中的数字

    Python的内置数据类型中的数字

    这篇文章主要介绍Python内置数据类型中的数字(Number),包括整数(int),小数(float),复数(Complex),布尔类型(bool)这几种数据类型。本文介绍的都是Python3.x中的数据类型,需要的朋友请参考下面文章
    2021-09-09
  • 利用python来跟踪ip地址的方法

    利用python来跟踪ip地址的方法

    今天来介绍一个流行的 python库 ip2geotools,使用它可以确定 IP地址 对应的 国家、地区、城市、纬度和经度等,文中通过代码示例介绍了如何使用python来跟踪ip地址,需要的朋友可以参考下
    2023-06-06
  • python OpenCV 实现高斯滤波详解

    python OpenCV 实现高斯滤波详解

    这篇文章主要介绍了Python+OpenCV 实现高斯滤波的过程,关于高斯滤波的解释,它是一种线性平滑滤波,适用于消除高斯噪声,具体实现过程跟随小编一起看看吧
    2021-10-10
  • Python调用API的常用方式解析

    Python调用API的常用方式解析

    在数据开发中,调用API是连接外部服务、获取数据或实现系统集成的核心方式之一,最近由于阿里云ODPS安全限制问题,处理了一批API调用的任务,所以从原理、案例和优缺点等维度,写一写python调用API的常用方式介绍,需要的朋友可以参考下
    2025-05-05
  • python实现ip地址查询经纬度定位详解

    python实现ip地址查询经纬度定位详解

    这篇文章主要介绍了python实现ip地址查询经纬度定位详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论