Pywin32将.docx保存为pdf

时间:2015-05-27 11:27:38

标签: python pywin32 word-2013

我正在使用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)

有人知道它为什么不起作用吗?

2 个答案:

答案 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”运行您的代码片段时,它可以工作

我现在可以推荐两种解决方案:

  • 试用不同的 MS Office 版本(经过 365 和 2010 测试)
  • 使用一些在线 API-s 将其转换为 PDF

注意:
更改模块/库不会解决问题,
只有正确的 Office 版本才会。