python批量实现pdf转换为图片|实现pdf转为jpg/png|实现word批量转pdf|python批量实现word转换为图片

news/2025/1/15 15:37:37/

本文介绍了一种使用 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_countdoc.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_countdoc.close()print(f"正在转换 {filename},共 {total_pages} 页...")#按照原图输出pdf文件为word#若想黑白输出pdf为图片格式,修改grayscale=False为grayscale=Truefor 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("-----已完成所有转换-----")

运行结果

在这里插入图片描述


http://www.ppmy.cn/news/122318.html

相关文章

JS数组题

从0到1:JavaScript快速上手第六章课后习题 一、单选题1.下面有一个数组,该数组中数值最小和数值最大的元素的下标分别是( )。 var arr[3,9,1,12,36,50,21] A.2, 5 B.3, 6 C.2, 6 D&…

程序人生 - 戴森 Dyson HD01 和 HD03 区别?

戴森 hd01 和 hd03 主要有这三方面的区别 风嘴的样式是不一样的,戴森hd01它主要是有三种风嘴,分别是顺滑、造型以及扩散类型的风嘴。戴森hd 03在01的基础之上又增加了一种新的风嘴叫柔和风嘴,它的风温会更低一些,而且吹出来的气流…

巴拉巴拉一下戴森爷爷的产品发展历史

逼我认穷 自从认识戴森爷爷后,发现自己真的穷,连基本的生活都差点成问题。戴森一系列居家产品均价三千以上,在官网里,一台supersonic吹风机2950RMB,搭配收纳架3250RMB,是的没错,一个支架300RMB。…

追觅、小狗、戴森吸尘器对比测评,让你了解哪款最好用

​现在吸尘器已经成为我们日常生活中的必备家电,吸尘器品牌越来越多,很多朋友都不知道哪一款吸尘器最适合自己。我之前也做过很多吸尘器的测评,这次我选择了三款市场上比较畅销的吸尘器,分别是追觅V11、小狗T11 Pro、戴森V11 Fluffy 三款同级别的无线吸尘器,希望可以通过这三款…

从外观到体验 真假戴森吹风机差距有多大?

自2016年戴森吹风机发布以来,它就因独树一帜的造型和黑科技傍身受到了全球时尚人士、爱美姑娘的追捧。三年后的今天,戴森吹风机已成为京东销量最高的吹风机。而近3000元的售价也让不法分子看到了商机,于是,假冒戴森吹风机也掺杂在…

全球化财务如何通过全球核算助力跨国业务的稳定增长和持续发展?

谈到用友,很多人首先想到的肯定是用友的王牌产品——财务产品。用友BIP财务云是基于新技术、新架构、新理念的新一代数智化财务产品,包含财务会计、管理会计、税务、费控、全球司库、企业绩效等多个子领域。通过惠及事项会计大数据赋予了财务更多的核心能…

Microsoft Edge浏览器崩溃,错误代码: STATUS_STACK_BUFFER_OVERRUN

------------------------11日更新---------------------- 谷歌浏览器升级后也有这个问题了,参照9日更新设置一下就可以。 不过要设置的是chrome.exe 具体步骤可以参考:Google Chrome谷歌浏览器崩溃,错误代码: STATUS_STACK_BUFFER_OVERRU…

第十四章行为性模式—策略模式

文章目录 命令模式解决的问题结构实例存在的问题适用场景 JDK源码解析 行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式…