我是靠谱客的博主 幽默天空,最近开发中收集的这篇文章主要介绍关于python:如何将Word文档批量转换为PDF文档Q:提前准备引入模块函数自定义转换文件格式函数自定义遍历路径下文件格式 调用前两个自定义函数    效果图:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 False
w.Quit(constants.wdDoNotSaveChanges)
# 退出Word应用程序
return valueList
except 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:
pass
filelist_out.sort()
# 对路径进行排序
return filelist_out
# 返回文件完整路径中

调用前两个自定义函数    

(5)第五步就是要进行函数调用的过程,对两个函数体中的变量在该函数中进行赋值,然后执行已经声明的方法,在函数体中进行调用。分别实现单个的Word文件转换为PDF文件和多个Word文件进行转换。首先实现的是利用getfilename()函数得到要转换的文件路径,然后再使用wordtopdf()函数实现批量转换文件格式。

if __name__ == '__main__':
sourcepath =r"C:UsersAdministratorDesktop转换格式文档"
# 这里要指定路径(Word文档所在路径)
targetpath =r"C:UsersAdministratorDesktop转换格式文档"
# 这里要及性能指定目标路径(PDF文件保存路径)
filelist = getfilenames(sourcepath,[],'.doc')
# 获取Word文件路径
valuelist = wordtopdf(filelist,targetpath)
# 实现Word文件批量转换为PDF文件
if valuelist:
print("转换成功!!!")
else:
print("转换失败!!!")

效果图:

 

最后

以上就是幽默天空为你收集整理的关于python:如何将Word文档批量转换为PDF文档Q:提前准备引入模块函数自定义转换文件格式函数自定义遍历路径下文件格式 调用前两个自定义函数    效果图:的全部内容,希望文章能够帮你解决关于python:如何将Word文档批量转换为PDF文档Q:提前准备引入模块函数自定义转换文件格式函数自定义遍历路径下文件格式 调用前两个自定义函数    效果图:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部