Python win32com.client.Dispatch打开Word文档并导出为 PDF时失败Command failed
输出异常:
(-2147352567, 'Exception occurred.', (0, u'Microsoft Word', u'Command failed', u'wdmain11.chm', 36966, -2146824090), None)
调试之后,主要是下面几个原因:
- 路径不存在,Python win32模块调用word应用的saveas函数,不会自动创建不存在的路径,如果如果路劲不存在就会报这个错误。
解决办法,就是先判断路径是否存在,不存在就创建。
if not os.path.exists(output_file):os.makedirs(output_file)
- word应用没有被关闭,或者其他应用正在使用,导致冲突。
解决办法,查看任务管理器,然后找到word应用的进程,杀死即可。
下面附上完整代码:
import datetime
import osimport win32com.client as win32
from docx import Documentdef convert_to_pdf(input_path,in_flie_name,output_path,out_flie_name):# 创建Word应用程序实例# word_app = win32.gencache.EnsureDispatch('Word.Application')word_app = win32.DispatchEx("Word.Application")# 设置应用程序可见性为False(不显示Word界面)word_app.Visible = Falsetry:# 打开Word文档doc = word_app.Documents.Open(input_path + in_flie_name)# 保存为PDFif not os.path.exists(output_file):os.makedirs(output_file)doc.SaveAs(output_path + out_flie_name, FileFormat=17)doc.Close()return Trueexcept Exception as e:print("转换失败:" + str(e))return Falsefinally:# 关闭Word应用程序word_app.Quit()