批处理将WORD文件转换成PDF格式(工具:win32com模块)"/>
用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 os
import datetime
from 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在读取转换后立刻将其关闭。
更多推荐
用Python批处理将WORD文件转换成PDF格式(工具:win32com模块)
发布评论