用Python批量把Word转换为Pdf

在工作中,我们经常需要把Word转换为PDF。数量少还可以一个一个去保存;但在工作中经常是一次性需要几十个转换,一个一个去转换就太麻烦了;目前Python自动化办公还是很热门的,网上课程也是非常多,于是就想着用Python来实现。

环境准备

  1. python3
  2. pywin32
  3. office2007及以上

原理:使用Python win32 库 调用Word底层vba,将Word转成PDF。

Python代码

from win32com.client import gencache
from win32com.client import constants, gencache
import os

#创建PDF
def createPdf(wordPath, pdfPath):
"""
word转pdf
:param wordPath: word文件路径
:param pdfPath: 生成pdf文件路径
"""
word = gencache.EnsureDispatch('Word.Application')
doc = word.Documents.Open(wordPath, ReadOnly=1)
doc.ExportAsFixedFormat(pdfPath,
constants.wdExportFormatPDF,
Item=constants.wdExportDocumentWithMarkup,
CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
word.Quit(constants.wdDoNotSaveChanges)

#遍历当前目录,并把Word文件转换为PDF
def wordToPdf():
print("转换中...")
# 获取当前运行路径
path = os.getcwd()
# 获取所有文件名的列表
filename_list = os.listdir(path)
# 获取所有word文件名列表
wordname_list = [filename for filename in filename_list \
if filename.endswith((".doc", ".docx"))]
for wordname in wordname_list:
# 分离word文件名称和后缀,转化为pdf名称
pdfname = os.path.splitext(wordname)[0] + '.pdf'
# 如果当前word文件对应的pdf文件存在,则不转化
if pdfname in filename_list:
continue
# 拼接 路径和文件名
wordpath = os.path.join(path, wordname)
pdfpath = os.path.join(path, pdfname)
createPdf(wordpath,pdfpath)

#word转pdf
if __name__ == '__main__':
wordToPdf()

使用方法

把Py文件放入Word文档的目录中,点击运行Py文件就会自动转换。当然了也可以用PyInstaller打包为exe文件,这样就不用安装Python环境,并且可以多平台使用。

好了,今天就分享到这边,大家有什么想法,欢迎给我留言讨论。觉得有用的,点击下{在看}。

声明:来自编程乐趣,仅代表创作者观点。链接:https://eyangzhen.com/8473.html

编程乐趣的头像编程乐趣

相关推荐

添加微信
添加微信
Ai学习群
返回顶部