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文档相关推荐

  1. caj文档批量转换为pdf(shell脚本多线程)

    摘要 最近看的论文有些多,但知网上的 caj 文档又卡又难做笔记,遂写了一个 caj 文档批量转换为 pdf 的 shell 脚本. caj2pdf 安装 caj2pdf 命令行工具 github 源 ...

  2. 使用VBS实现word、excel批量转换为pdf

    使用VBS实现word.excel批量转换为pdf 由于最近我家tiger有这方面的需求,且她单位用的是office 2007的32位系统,网上python转换的方法无法奏效,所以使用通用性还可以的V ...

  3. ## 以下代码主要实现对Word PPT等批量转换为 PDF

    以下代码主要实现对Word PPT等批量转换为 PDF 可先百度查阅os库 import os import comtypes.clientdef get_path_word():pathpath = ...

  4. 如何用Python批量将Pdf文档转换成Word文档?

    目录 一.前言 二.问题或需求 三.前提条件或注意事项 四.代码设计思路 五.具体执行代码 六.效果观察 七.声明及致谢 八.快捷方式 一.前言 一般情况,WPS系列office软件付费会员都有Pdf ...

  5. python学习之word文档转换成pdf文档

    平时办公的时候总有word文档转换pdf的操作,关键wps等转换工具都还是收费的.这里利用python代码把多个word文档转换合并成pdf文档的实现.代码运行需要几个必要库,没有下载安装的小伙伴可以 ...

  6. word文档批量转换为html格式

    有时需要将doc/docx格式的文档批量转换为html格式的网页文件,可以使用以下VBA脚本执行批量转换的操作,需要在安装了宏功能的Word中执行. 以下脚本会搜索指定目录中的doc文档,并逐个进行处 ...

  7. Python 技术篇-利用Office VBA实现word文档转化为pdf文档实例演示

    # -*- coding: UTF8 -*- from win32com.client import *def switch_pdf(path, name):'''作用:将word文档转化为pdf文档 ...

  8. PDF to Word Document Converter for Mac(PDF文档转换器)

    如何将pdf文件转换为word.PPT.html.jpg等文件?PDF to Word&Document Converter是一个PDF文档转换器,可让您快速将PDF文档转换为其他格式的文件. ...

  9. 如何批量提取 PDF 文档内容,将 PDF 格式文档转为 Txt 文本格式

    概要:PDF 文档常常用来阅读.预览或者存档一些资料,PDF 支持的内容也是比较丰富的.可以支持图片.文本等多种类型的元素.那有时候我们就需要将一些纯文本的 PDF 文档中的文字提取出来,转为一个 T ...

最新文章

  1. MATLAB【六】 ———— matlab 随机散斑模拟
  2. C++ 之 string
  3. Hexo+码云+git快速搭建免费的静态Blog
  4. 代码改动和配置文件相分离
  5. 计算机网络概述(一)
  6. redis工具类_SpringBoot 操作 Redis 数据
  7. Power BI 夜校完美收官-所有视频资料可下载
  8. J2EE Architecture(6)
  9. 【优化算法】蝗虫优化算法(GOA)【含Matlab源码 936期】
  10. QT组合框QComboBox右边加入图标
  11. MyEclipse10破解 运行run.bat闪退
  12. 文献解读-物理信息深度学习(PINN)
  13. 生意宝,淘宝,唯品会,58同城,去哪儿背后的赚钱生意经(转)
  14. C语言——输入两个正整数m和n,求其最大公约数和最小公倍数。
  15. 时之歌 服务器维护,时之歌抽卡卡住了怎么办 时之歌手游招募吞卡解决方法
  16. 计算机学习入门指北——计科软工网络信安侧重图析、解读专业术语、岗位分类、未来规划
  17. 微信公众号开发 接口配置信息 配置失败
  18. 更改所有数据透视表的数据源
  19. 调用pyspark.ml库对信用卡逾期进行预测
  20. Dense Prediction

热门文章

  1. 几千行代码就能搞定,你为什么要写几万行?
  2. 鸿蒙升级报名,鸿蒙os2.0公测招募报名入口 鸿蒙os2.0系统升级攻略
  3. 《Spatially Attentive Output Layer for Image Classification》论文翻译
  4. HIKVISION海康威视代码执行漏洞复现(CVE-2021-36260)
  5. mysql字典存储_python将字典内容存入mysql_MySQL
  6. 中国电信:柯瑞文代行董事长及首席执行官职权
  7. blender怎么移动骨骼,Blender学习笔记-(015)创建骨骼绑定及权重绘制操作详解
  8. Oracle 的 SQL语句中如何处理‘’等特殊符号
  9. 大数据系列之:安装pulsar详细步骤
  10. Element UI checkbox 全选操作分析