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 os
import win32com.client as win32
from docx import Document
def 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 = False
try:
# 打开Word文档
doc = word_app.Documents.Open(input_path + in_flie_name)
# 保存为PDF
if not os.path.exists(output_file):
os.makedirs(output_file)
doc.SaveAs(output_path + out_flie_name, FileFormat=17)
doc.Close()
return True
except Exception as e:
print("转换失败:" + str(e))
return False
finally:
# 关闭Word应用程序
word_app.Quit()