9

我正在使用 Word 2013 自动将报告创建为 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 (build 219)

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

4

3 回答 3

5

有几个不错的库可以处理这个任务:

在这个 ActiveState Recipe Convert Microsoft Word files to PDF with DOCXtoPDF中也有一个这样做的例子


如果你坚持win32com使用 Windows API,在这个秘籍中还有一个这样做的例子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()
于 2015-05-27T12:16:01.597 回答
1

看起来“Office 2013”​​是瓶颈。

我在使用 Word 2013(“Office 2013”​​)时遇到了同样的问题,
但是当我尝试使用“Office 365”和“Office 2010”运行您的代码片段时,它可以工作

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

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

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

于 2021-03-01T08:47:28.953 回答
-1

使用这个,别忘了像这样安装win32:

pip install pywin32

将doc转换为pdf的函数是这样的:

import win32com.client as win32  
def convert_to_pdf(doc):
    """Convert given word document to pdf"""
    word = win32.DispatchEx("Word.Application")
    new_name = doc.replace(".docx", r".pdf")
    worddoc = word.Documents.Open(doc)
    worddoc.SaveAs(new_name, FileFormat=17)
    worddoc.Close()
    return None

path_to_word_document = os.path.join(os.getcwd(), 'report_1.docx')
convert_to_pdf(path_to_word_document)

给我我的开始,我真的需要它:-) 更多地寻找图书馆中的文档 https://pypi.org/project/pywin32/

于 2021-12-09T22:35:12.363 回答