2015-05-27 131 views
7

我使用Word 2013自動創建一個報告爲docx,然後將其保存爲pdf格式。Pywin32保存.docx文件爲pdf

但是,當我調用函數SaveAs2(),腳本彈出「另存爲」窗口,並拋出這個異常:

(-2147352567, 'Exception occurred.', (0, u'Microsoft Word', u'Command failed', u'wdmain11.chm', 36966, -2146824090), None) 

這裏是我的代碼來打開和保存爲一個新文件:

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) 

而且我使用: python2.7與pywin32(建立219)

是否有人有一個想法,爲什麼它不工作?

+0

爲什麼不使用reportlab創建報告?然後它全部用Python,你不必擔心這些轉換問題。 –

回答

3

有幾個不錯的庫來處理這個任務:

也有在此ActiveState的食譜做exactly this的例子Convert Microsoft Word files to PDF with DOCXtoPDF


如果堅持上使用Windows API(S)也有通過win32com在這個配方這樣的例子Convert doc and docx files to pdf


可以也做到這一點使用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() 
+0

嗨,詹姆斯,感謝您的回答和您的建議!我已經嘗試過使用comtypes和ActiveState的例子,但不幸的是,它在保存部分創建了與上面相同的問題。 至於python-docx,它不允許將它保存爲pdf [文檔](https://github.com/python-openxml/python-docx/issues/113),並且所有其他庫不會似乎採取了docx標題。 – RenShan