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

作者:

文章目录
  • pip install pdf2image pillow pdf2image: 用于将 PDF 转换为图像。 Pillow (PIL): 用于图像处理和保存。
  • pdf2image 依赖于 poppler,需要单独安装: Windows: 下载 poppler for Windows:https://github.com/oschwartz10612/poppler-windows/releases/ 解压后,将 poppler-xx.x.xbin 目录添加到系统环境变量 PATH 中。或者在代码中指定 poppler_path。
  • 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:0_Toolpoppler-25.07.0Librarybin’ # 如果使用 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实现将pdf文档保存成图片格式 用Python将PDF文件转存为图片的实现方法 使用Python将PDF文件转存为图片的代码示例 使用Python轻松实现裁剪PDF并导出为图片 从原理到实战详解Python实现PDF图片OCR识别全流程 使用Python将图片转换为PDF格式的三种常见方法
  • 目录
    • 第一步:安装依赖库
    • 第二步:安装 poppler
    • 第三步:Python 代码示例
    • 方法补充

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

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

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

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

    Windows:

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

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

    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:0_Toolpoppler-25.07.0Librarybin'  # 如果使用 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实现将pdf文档保存成图片格式
    • 用Python将PDF文件转存为图片的实现方法
    • 使用Python将PDF文件转存为图片的代码示例
    • 使用Python轻松实现裁剪PDF并导出为图片
    • 从原理到实战详解Python实现PDF图片OCR识别全流程
    • 使用Python将图片转换为PDF格式的三种常见方法

    站内搜索