我正在使用Word 2013自动创建一个docx报告,然后将其另存为pdf格式。
但是当我调用函数SaveAs2()时,脚本会弹出“另存为”窗口并抛出此异常:
self.path = os.path.abspath(path)
self.wordApp = win32.Dispatch('Word.Application') #create a word application object
self.wordApp.Visible = False # if false hide the word application (app does't open but still usable)
self.document = self.wordApp.Documents.Open(self.path + "/" + documentRef) # opening the template file
absFileName = "D:\\test.pdf"
self.document.SaveAs2(FileName=absFileName,FileFormat=17)
以下是我打开并保存为新文件的代码:
{{1}}
我正在使用: python2.7与pywin32(build 219)
有人知道它为什么不起作用吗?
答案 0 :(得分:4)
有几个很好的库来处理这个任务:
还有一个在此ActiveState配方exactly this中执行Convert Microsoft Word files to PDF with DOCXtoPDF 的示例
如果您坚持使用Windows API,还有一个示例通过此配方Convert doc and docx files to pdf
中的win32com
执行此操作
你可以使用comtypes
(感谢.doc to pdf using python )来执行此操作
示例:强>
import os
import sys
import comtypes.client
wdFormatPDF = 17
def covx_to_pdf(infile, outfile):
"""Convert a Word .docx to PDF"""
word = comtypes.client.CreateObject('Word.Application')
doc = word.Documents.Open(infile)
doc.SaveAs(outfile, FileFormat=wdFormatPDF)
doc.Close()
word.Quit()
答案 1 :(得分:0)
看起来“Office 2013”是瓶颈。
我在使用 Word 2013(“Office 2013”)时遇到同样的问题,
但是当我尝试使用“Office 365”和“Office 2010”运行您的代码片段时,它可以工作。
我现在可以推荐两种解决方案:
注意:
更改模块/库不会解决问题,
只有正确的 Office 版本才会。