当前位置: 代码网 > it编程>前端脚本>Python > Python批量实现PDF转换为图片(JPG/PNG)

Python批量实现PDF转换为图片(JPG/PNG)

2026年03月20日 Python 我要评论
本文介绍了一种使用 python 脚本来完成这项工作的方法,该脚本基于 pymupdf、pdf2image 和 win32com 库实现,可以帮助您快速地将 word 文档转换为 pdf 文件,并将

本文介绍了一种使用 python 脚本来完成这项工作的方法,该脚本基于 pymupdf、pdf2image 和 win32com 库实现,可以帮助您快速地将 word 文档转换为 pdf 文件,并将 pdf 文件转换为 png 图片。

一、安装所需的库和软件

在开始使用该脚本之前,您需要先安装所需的 python 模块和相关的软件。具体来说,您需要安装 pymupdf、pdf2image 和 win32com 三个库,以及 microsoft word 软件和 poppler 程序。可以通过以下命令来安装 python 模块:

pip install pymupdf 
pip install pdf2image 
pip install pypiwin32

pymupdf 库用于将 pdf 文件转换为图片;pdf2image 库用于将 pdf 文件转换为 png 图片;pypiwin32 库用于与 microsoft word 软件进行交互和文档转换。另外,还需要下载并安装 microsoft word 软件,并将 poppler 程序的路径添加到系统环境变量中。

二、加载并转换 word 文档

在完成所需的库和软件安装后,就可以开始使用脚本了。脚本主要分为三个部分,分别是将 word 文档转换为 docx 文件、将 docx 文件转换为 pdf 文件、将 pdf 文件转换为 png 图片。

首先,我们需要加载并转换 word 文档。在代码中,我们使用os.listdir()方法读取指定路径下的所有文件名,然后使用split()方法将文件名按“.”分割成文件名和文件后缀。如果文件后缀为“doc”,则使用 win32com 库打开 word 应用程序,并使用 dispatch() 方法从文档对象中创建了一个新的 word 应用程序。然后,将相应路径下的当前文件打开,并将其转换为 docx 格式文件。最后关闭 word 应用程序,并等待 3 秒钟,系统释放资源。

for i in os.listdir(path):
    file_name,file_suffix = i.split(".") 
    if file_suffix == "doc":
        word = dispatch('word.application')
        doc = word.documents.open(path+f"{i}")
        # 将 word 文档转换为 docx 格式文件
        doc.saveas(path+f"{file_name}.docx",fileformat=12)
        print(i,"转换完成")
        doc.close()
        word.quit()
        sleep(3)        

saveas() 方法接受两个参数,分别是输出文件路径和输出文件格式。其中,fileformat 参数用于指定输出文件的格式,12 表示输出为 docx 格式文件

三、加载并转换 pdf文档

将上诉代码修改为:

# 将 word 文档转换为 docx 格式文件
        doc.saveas(path+f"{file_name}.docx",fileformat=17)

fileformat 参数用于指定输出文件的格式,17 表示输出为 pdf 格式文件。

四、将 pdf 文件转换为 png 图片

完成 pdf 文件的转换后,我们就可以将其转换为 png 图片了。在代码中,我们使用 pymupdf 库打开指定路径下的 pdf 文件,并获取该文件的总页数。然后,使用 pdf2image 库中的 convert_from_path() 方法遍历 pdf 中的每一页,并将其转换为 png 格式的图片。最后,将 png 图片保存到指定路径下,并输出转换进度。

for filename in os.listdir(path):
    if filename.endswith(".pdf"):
        # 获取当前 pdf 文件的总页数
        doc = fitz.open(path + filename)
        total_pages = doc.page_count
        doc.close()
        
        print(f"正在转换 {filename},共 {total_pages} 页...")
        for i, page in enumerate(convert_from_path(path + filename, grayscale=false), start=1):
            # 构造文件名
            output_filename = os.path.splitext(filename)[0] + "_" + str(i) + ".png"
            # 保存图片
            page.save(path_images + output_filename, "png")
            # 输出转换进度
            print(f"已完成第 {i}/{total_pages} 页的转换")

五、完整代码

# -*- coding: utf-8 -*-
"""
created on wed may 31 17:10:27 2023

@author: ypzhao
"""

import os
import fitz
from pdf2image import convert_from_path
from time import sleep
from win32com.client import dispatch

# 定义pdf文件路径和输出区间路径
# 待转换pdf文件路径
path = "c:/users/ypzhao/desktop/pdf/"
# doc/docx转换后的路径
path_convert = "c:/users/ypzhao/desktop/pdf/"
# 转换后的图片路径
path_images = "c:/users/ypzhao/desktop/images/"
print("-----doc开始转换为docx-----")

for i in os.listdir(path):
    file_name,file_suffix = i.split(".") 
    if file_suffix == "doc":
        word = dispatch('word.application')
        doc = word.documents.open(path+f"{i}")
        doc.saveas(path+f"{file_name}.docx",fileformat=12)
        print(i,"转换完成")
        doc.close()
        word.quit()
        sleep(3)

print("-----开始转换为pdf-----")
for i in os.listdir(path):
    file_name,file_suffix = i.split(".") 
    if file_suffix == "docx":
        word = dispatch('word.application')
        doc = word.documents.open(path+f"{i}")
        doc.saveas(path_convert+f"{file_name}.pdf",fileformat=17)
        print(i,"...转换完成")
        doc.close()
        word.quit()
        sleep(3)
    else:
        pass


# 循环遍历pdf文件,并转换为图片
for filename in os.listdir(path):
    if filename.endswith(".pdf"):
        # 获取当前 pdf 文件的总页数
        doc = fitz.open(path + filename)
        total_pages = doc.page_count
        doc.close()
        
        print(f"正在转换 {filename},共 {total_pages} 页...")
        #按照原图输出pdf文件为word
        #若想黑白输出pdf为图片格式,修改grayscale=false为grayscale=true
        for i, page in enumerate(convert_from_path(path + filename, grayscale=false), start=1):
            # 构造文件名
            output_filename = os.path.splitext(filename)[0] + "_" + str(i) + ".png"
            # 保存图片
            page.save(path_images + output_filename, "png")
            # 输出转换进度
            print(f"已完成第 {i}/{total_pages} 页的转换")

print("-----已完成所有转换-----")

到此这篇关于python批量实现pdf转换为图片(jpg/png)的文章就介绍到这了,更多相关python pdf转图片内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com