Pywin32 save .docx as pdf



我用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 with pywin32 (build 219)

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

有两个很好的库来处理这个任务:

  • python-docx
  • xtopdf

在这个ActiveState Recipe中也有一个这样做的例子使用DOCXtoPDF将Microsoft Word文件转换为PDF


如果你坚持使用Windows API(s),也有一个例子,通过win32com在这个配方中做到这一点将doc和docx文件转换为pdf


可以也可以使用comtypes (感谢使用python将。doc转换为pdf)

例子:

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()

看起来像Office 2013"是瓶颈。

我在使用Word 2013 ("Office 2013")时也有同样的问题,
但是当我试着用Office 365运行你的代码片段时;和"Office 2010" 它工作

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

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

注意:
更改模块/库不会解决问题,

使用这个,不要忘记像这样安装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/

相关内容

  • 没有找到相关文章

最新更新