验证过ppt也可以合并成pdf文件,确实很高效,什么pdf转换器的再也不用了~
需要下载模块pywin32,程序中导入模块为win32com。
# -*- coding:utf-8 -*-
import os
from win32com.client import Dispatch,DispatchEx
from win32com.client import constants
from win32com.client import gencache
import re
def getfilenames(filepath=‘‘,filelist_out=[],file_ext=‘all‘):
for fpath, dirs, fs in os.walk(filepath):
for f in fs:
fi_d = os.path.join(fpath, f)
if file_ext == ‘.doc‘:
if os.path.splitext(fi_d)[1] in [‘.doc‘,‘.docx‘]:
filelist_out.append(re.sub(r‘\\‘,‘/‘,fi_d))
else:
if file_ext == ‘all‘:
filelist_out.append(fi_d)
elif os.path.splitext(fi_d)[1] == file_ext:
filelist_out.append(fi_d)
else:
pass
filelist_out.sort()
return filelist_out
# Word to PDF
def wordtopdf(filelist,targetpath):
valueList = []
try:
gencache.EnsureModule(‘{00020905-0000-0000-C000-000000000046}‘, 0, 8, 4)
# 开始转换
w = Dispatch("Word.Application")
for fullfilename in filelist:
(filepath,filename) = os.path.split(fullfilename) # 分割文件路径和文件名
softfilename = os.path.splitext(filename) # 分割文件名和扩展名
os.chdir(filepath)
doc = os.path.abspath(filename)
os.chdir(targetpath)
pdfname = softfilename[0] + ".pdf"
output = os.path.abspath(pdfname)
pdf_name = output
try:
doc = w.Documents.Open(doc, ReadOnly=1)
doc.ExportAsFixedFormat(output, constants.wdExportFormatPDF,
Item=constants.wdExportDocumentWithMarkup,
CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
except Exception as e:
print(e)
if os.path.isfile(pdf_name):
valueList.append(pdf_name)
else:
print(‘转换失败!‘)
return False
w.Quit(constants.wdDoNotSaveChanges)
return valueList
except TypeError as e:
print(‘出错了!‘)
print(e)
return False
if __name__ == ‘__main__‘:
sourcepath = r"E:/xxx/xxx" # 指定源路径(Word文档所在路径)
targetpath = r"E:/xxx/xxx/pdf/" # 指定目标路径(PDF保存路径)
filelist = getfilenames(sourcepath,[],‘.doc‘) # 获取Word文档路径
valueList = wordtopdf(filelist,targetpath) # 实现将Word文档批量转换为PDF
if valueList:
print("转换成功")
else:
print("没有要转换的Word文档或者转换失败!请检查!")
原文:https://www.cnblogs.com/hqczsh/p/12811683.html