环境:windows + office
依赖库:pywin32
功能:doc,docx格式文件批量转换为pdf格式文件
from win32com.client import gencache
from win32com.client import constants, gencache
import os
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)
def getfilenames(folderPath):
names = []
for root, dirs, files in os.walk(folderPath):
for file in files:
if os.path.splitext(file)[1] == '.doc' or os.path.splitext(
file)[1] == '.docx':
names.append(file)
return names
def createPdfs(folderPath):
"""
word批量转换pdf
:folderPath: 待转换文件所在文件夹
"""
word = gencache.EnsureDispatch('Word.Application')
names = getfilenames(folderPath)
for name in names:
suff = '.pdf'
nonsuffname = os.path.splitext(name)[0]
wordfilename = os.path.join(folderPath, name)
pdffilename = os.path.join(folderPath, nonsuffname) + suff
doc = word.Documents.Open(wordfilename, ReadOnly=1)
doc.ExportAsFixedFormat(
pdffilename,
constants.wdExportFormatPDF,
Item=constants.wdExportDocumentWithMarkup,
CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
doc.Close()
print(pdffilename + ' ....Done!')
word.Quit(constants.wdDoNotSaveChanges)
if __name__ == '__main__':
folderPath = r'D:\newfolder'
createPdfs(folderPath)
#createPdf(wordPath, pdfPath)