关于python:如何将Word文档批量转换为PDF文档
Q:
我们在实际工作中很容易发现,有些时候我们需要将Word文档转换为PDF文档,如果只是一个文件,我们也只是需要通过Word提供的转换为PDF文档的功能就可以实现了。但是WPS需要收费才能使用将Word转换为PDF文档的服务,而且Microsoft Word安装更新等等一系列问题出现。而且当我们要转换文档非常多的时候,转换则变得费时费力;可见手动转换文档就成为了鸡肋。
本篇博文将教会大家如何用Python程序实现自动化方式批量转换文件格式。
提前准备
如果想要批量把Word文档转换为PDF文档,我们可以使用第三方模块win32com。步骤如下:
(1)在CMD命令窗口中安装win32com模块,如果读者有Pycharm,可以在Pycharm的Terminal(控制台)中输入命令Pycharm对应命令:
pip install pywin32
引入模块函数
(2)通过导入pywin32模块,创建Python文件。在该文件中导入win32com模块及其他辅助模块。应用代码及注释如下:
import os # 导入系统功能模块
from win32com.client import Dispatch,DispatchEx # 导入win32com模块的client包下的函数
from win32com.client import constants # 导入win32com模块的client包下的保存COM常量的类。
from win32com.client import gencache # 导入win2com模块的client包下的gencache()函数
import re # 导入正则表达式模块
自定义转换文件格式函数
(3)如果想要实现将Word文档转换为PDF文档,这里使用自定义方法定义函数:wordtopdf。该函数包含了两个参数,第一个参数表示要转换的文件路径列表;第二个参数表示转换后的文件保存的路径。在这个函数中,要注意的是首先调用win32com模块的Dispatch()函数获取Word应用程序对象;然后通过遍历文件列表中的Word文件名称,并且生成对应名称的PDF文件;最后通过Word应用程序对象的文档对象的open()方法打开Word文档并且进行转换。具体逻辑如下:
def wordtopdf(filelist,targetpath):valueList = []try:gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}',0,8,4)# 开始转换w = Dispatch("Word.Application")for fullfilename in filelist:# 分割文件路径和文件名,其中,filepath表示文件路径,filename表示文件名(filepath,filename) = os.path.spilt(fullfilename)softfilename = os.path.split(filename) # 分割文件名和扩展名os.chdir(filepath)doc = os.path.abspath(filename)os.chdir(targetpath)pdfname = softfilename[0]+".pdf"output = os.path.abspath(pdfname)pdf_name = output# 文档路径需要为绝对路径,Word启动之后的当前路径不是调用脚本时的当前路径try:doc = w.Document.Open(doc,ReadOnly = 1)doc.ExportAsFixedFormat(output,constants.wdExportFormatPDF,Item = constants.wdExportDocumentWithMarkup,CreateBookmarks = constants.wdExportCreateHeadingBookmarks)except Exception as e: # 处理异常print(e)if os.path.isfile(pdf_name): # 判断文件是否存在valueList.append(pdf_name) # 添加到文件列表中else:print('转换失败!!!')return Falsew.Quit(constants.wdDoNotSaveChanges) # 退出Word应用程序return valueListexcept TypeError as e:print('出错了!!!')print(e)return False
自定义遍历路径下文件格式
(4)由于要转换多个Word文档,索引需要实现或许指定的路径下全部的Word文件路径的功能。接下来我们再定义一个函数:getfilenames(),用于获取到指定路径下的指定扩展名的文件路径(也包括子目录下的文件)。在这个自定义的函数中,根据传递的路径遍历出该路径下的指定扩展名的文件。如果是Word文档,需要它同时遍历出.doc和.docx格式的文档。getfilenames()函数的具体逻辑如下:
def getfilenames(filepath='',filelist_out = [],file_ext = 'all'):# 遍历filepath下的所有文件,包括子目录下的文件for fpath,dirs,fs in os.walk(filepath):for f in fs:fi_d = os.path.join(fpath,f)if file_ext == '.doc': # 遍历Word文档文件if os.path.splitext(fi_d)[1] in ['.doc','.docx']: # 判断是否为Word文件filelist_out.append(re.sub(r'\\','/',fi_d)) # 添加到路径列表中else:if file_ext =='all': # 要获取所有文件的情况filelist_out.append(fi_d) # 将文件路径添加到路径列表中elif os.path.splitext(fi_d)[1]==file_ext: # 要获取除了Word文件以外的文件filelist_out.append(fi_d) # 将文件路径添加到路径列表中else:passfilelist_out.sort() # 对路径进行排序return filelist_out # 返回文件完整路径中
调用前两个自定义函数
(5)第五步就是要进行函数调用的过程,对两个函数体中的变量在该函数中进行赋值,然后执行已经声明的方法,在函数体中进行调用。分别实现单个的Word文件转换为PDF文件和多个Word文件进行转换。首先实现的是利用getfilename()函数得到要转换的文件路径,然后再使用wordtopdf()函数实现批量转换文件格式。
if __name__ == '__main__':sourcepath =r"C:\Users\Administrator\Desktop\转换格式文档" # 这里要指定路径(Word文档所在路径)targetpath =r"C:\Users\Administrator\Desktop\转换格式文档" # 这里要及性能指定目标路径(PDF文件保存路径)filelist = getfilenames(sourcepath,[],'.doc') # 获取Word文件路径valuelist = wordtopdf(filelist,targetpath) # 实现Word文件批量转换为PDF文件if valuelist:print("转换成功!!!")else:print("转换失败!!!")
效果图:
关于python:如何将Word文档批量转换为PDF文档相关推荐
- caj文档批量转换为pdf(shell脚本多线程)
摘要 最近看的论文有些多,但知网上的 caj 文档又卡又难做笔记,遂写了一个 caj 文档批量转换为 pdf 的 shell 脚本. caj2pdf 安装 caj2pdf 命令行工具 github 源 ...
- 使用VBS实现word、excel批量转换为pdf
使用VBS实现word.excel批量转换为pdf 由于最近我家tiger有这方面的需求,且她单位用的是office 2007的32位系统,网上python转换的方法无法奏效,所以使用通用性还可以的V ...
- ## 以下代码主要实现对Word PPT等批量转换为 PDF
以下代码主要实现对Word PPT等批量转换为 PDF 可先百度查阅os库 import os import comtypes.clientdef get_path_word():pathpath = ...
- 如何用Python批量将Pdf文档转换成Word文档?
目录 一.前言 二.问题或需求 三.前提条件或注意事项 四.代码设计思路 五.具体执行代码 六.效果观察 七.声明及致谢 八.快捷方式 一.前言 一般情况,WPS系列office软件付费会员都有Pdf ...
- python学习之word文档转换成pdf文档
平时办公的时候总有word文档转换pdf的操作,关键wps等转换工具都还是收费的.这里利用python代码把多个word文档转换合并成pdf文档的实现.代码运行需要几个必要库,没有下载安装的小伙伴可以 ...
- word文档批量转换为html格式
有时需要将doc/docx格式的文档批量转换为html格式的网页文件,可以使用以下VBA脚本执行批量转换的操作,需要在安装了宏功能的Word中执行. 以下脚本会搜索指定目录中的doc文档,并逐个进行处 ...
- Python 技术篇-利用Office VBA实现word文档转化为pdf文档实例演示
# -*- coding: UTF8 -*- from win32com.client import *def switch_pdf(path, name):'''作用:将word文档转化为pdf文档 ...
- PDF to Word Document Converter for Mac(PDF文档转换器)
如何将pdf文件转换为word.PPT.html.jpg等文件?PDF to Word&Document Converter是一个PDF文档转换器,可让您快速将PDF文档转换为其他格式的文件. ...
- 如何批量提取 PDF 文档内容,将 PDF 格式文档转为 Txt 文本格式
概要:PDF 文档常常用来阅读.预览或者存档一些资料,PDF 支持的内容也是比较丰富的.可以支持图片.文本等多种类型的元素.那有时候我们就需要将一些纯文本的 PDF 文档中的文字提取出来,转为一个 T ...
最新文章
- MATLAB【六】 ———— matlab 随机散斑模拟
- C++ 之 string
- Hexo+码云+git快速搭建免费的静态Blog
- 代码改动和配置文件相分离
- 计算机网络概述(一)
- redis工具类_SpringBoot 操作 Redis 数据
- Power BI 夜校完美收官-所有视频资料可下载
- J2EE Architecture(6)
- 【优化算法】蝗虫优化算法(GOA)【含Matlab源码 936期】
- QT组合框QComboBox右边加入图标
- MyEclipse10破解 运行run.bat闪退
- 文献解读-物理信息深度学习(PINN)
- 生意宝,淘宝,唯品会,58同城,去哪儿背后的赚钱生意经(转)
- C语言——输入两个正整数m和n,求其最大公约数和最小公倍数。
- 时之歌 服务器维护,时之歌抽卡卡住了怎么办 时之歌手游招募吞卡解决方法
- 计算机学习入门指北——计科软工网络信安侧重图析、解读专业术语、岗位分类、未来规划
- 微信公众号开发 接口配置信息 配置失败
- 更改所有数据透视表的数据源
- 调用pyspark.ml库对信用卡逾期进行预测
- Dense Prediction
热门文章
- 几千行代码就能搞定,你为什么要写几万行?
- 鸿蒙升级报名,鸿蒙os2.0公测招募报名入口 鸿蒙os2.0系统升级攻略
- 《Spatially Attentive Output Layer for Image Classification》论文翻译
- HIKVISION海康威视代码执行漏洞复现(CVE-2021-36260)
- mysql字典存储_python将字典内容存入mysql_MySQL
- 中国电信:柯瑞文代行董事长及首席执行官职权
- blender怎么移动骨骼,Blender学习笔记-(015)创建骨骼绑定及权重绘制操作详解
- Oracle 的 SQL语句中如何处理‘’等特殊符号
- 大数据系列之:安装pulsar详细步骤
- Element UI checkbox 全选操作分析