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

编程入门 行业动态 更新时间:2024-10-20 03:56:52

用Python<a href=https://www.elefans.com/category/jswz/34/1768936.html style=批处理将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模块)

本文发布于:2023-06-28 04:09:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/921547.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:批处理   模块   文件转换成   格式   工具

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!