1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 用Python批处理将WORD文件转换成PDF格式(工具:win32com模块)

用Python批处理将WORD文件转换成PDF格式(工具:win32com模块)

时间:2024-05-07 17:53:43

相关推荐

用Python批处理将WORD文件转换成PDF格式(工具:win32com模块)

用Python批处理将WORD文件转换成PDF格式

一、问题分析key words:批处理、WORD转换PDF、办公自动化 二、材料准备三、代码实现☆其他问题:日常遇到问题,整理笔记不易,欢迎交流~~~

一、问题分析

key words:批处理、WORD转换PDF、办公自动化

日常办公免不了遇到Word转PDF格式的事情,本文运用Python将某路径下的包括“.docx”和“.doc”两种格式的所有Word文档,批量转换成PDF格式,并存储于指定路径中。

二、材料准备

1、win32com模块的安装:右键“开始”,在windows powershell超管下输入如下指令:

pip install pypiwin32

库函数的安装可参考我其他文章:

《在Pycharm引入numpy、matplotlib库的一些操作记录》

2、文件准备:

三、代码实现

import osimport datetimefrom win32com.client import constants, gencachedef words_to_pdfs(wordPath, pdfPath):# 输入:wordPath文档所在的路径,pdfPath存放PDF的路径# 功能:将已给wordPath中的.doc和.docx文件生成为.pdf格式的文件,并存放于pdfPath路径下。# 判断pdfPath路径是否已存在,如若不存在,则创建if not os.path.exists(pdfPath): # 判断存放PDF的文件夹是否存在os.makedirs(pdfPath) # 若PDF文件夹不存在就创建# 遍历wordPath下的.doc和.docx文件,将符合条件的文档进行转换i = 0for filename in os.listdir(wordPath):if os.path.splitext(filename)[1] == '.docx' or os.path.splitext(filename)[1] == '.doc':i += 1word_path = wordPath + '\\' + filenamepdf_path = pdfPath + '\\' + os.path.splitext(filename)[0] + '.pdf'# print(word_Path)# print(pdf_Path)print('正在转换第 {} 个文件:\n {}'.format(i, filename))try:word = gencache.EnsureDispatch('Word.Application')doc = word.Documents.Open(word_path, ReadOnly=1)doc.ExportAsFixedFormat(pdf_path,constants.wdExportFormatPDF,Item=constants.wdExportDocumentWithMarkup,CreateBookmarks=constants.wdExportCreateHeadingBookmarks)except Exception as e:print("转换异常,异常是:{}".format(e))word.Quit(constants.wdDoNotSaveChanges)print('本路径下一共有{}个WORD文件'.format(i))startTime_word2pdf = datetime.datetime.now() # 开始时间if __name__ == '__main__':word_Path = r"H:\deal_office\deal_word2pdf"pdf_Path = "H:\\deal_office\\deal_word2pdf\\result"words_to_pdfs(word_Path, pdf_Path)endTime_word2pdf = datetime.datetime.now() # 结束时间print('本次WORD转换成PDF格式一共用了:%0.2f秒' % (endTime_word2pdf - startTime_word2pdf).seconds)

运行结果如下:

☆其他问题:日常遇到问题,整理笔记不易,欢迎交流~~~

在编程的时候,我有以下代码:

###'''for filename in os.listdir(wordPath):if os.path.splitext(filename)[1] == '.docx' or os.path.splitext(filename)[1] == '.doc':i += 1word_path = wordPath + '\\' + filenamepdf_path = pdfPath + '\\' + os.path.splitext(filename)[0] + '.pdf'# print(word_Path)# print(pdf_Path)print('正在转换第 {} 个文件:\n {}'.format(i, filename))try:word = gencache.EnsureDispatch('Word.Application')doc = word.Documents.Open(word_path, ReadOnly=1)except Exception as e:print("打开WORD文件异常,异常是:{}".format(e))try:doc.ExportAsFixedFormat(pdf_path,constants.wdExportFormatPDF,Item=constants.wdExportDocumentWithMarkup,CreateBookmarks=constants.wdExportCreateHeadingBookmarks)except Exception as e:print("转换异常,异常是:{}".format(e))finally:word.Quit(constants.wdDoNotSaveChanges)print('本路径下一共有{}个WORD文件'.format(i))###'''

点击运行的时候,一直报错,如下图:运行的时候有问题,但是调试就能成功。

后来查询资料得知,try…except…finally有时候不能连续使用,可以了解一下堆栈的问题,反复用栈,会大才小用,容易报错。

注:根据读者提醒,现已更新为某word在读取转换后立刻将其关闭。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。