Python win32com和Powerpoint ExportAsFixedFormat

时间:2013-07-27 09:18:00

标签: python com powerpoint ole win32com

我正在尝试使用python和win32com将.pptx文件转换为.pdf。我正在使用的代码如下所示:

ppoint = win32.gencache.EnsureDispatch("Powerpoint.Application")
ppoint.Visible = True
pres = ppoint.Presentations.Open(PPT_FILE_NAME)
pres.ExportAsFixedFormat(PDF_FILE_NAME, 2, 0, 0, 1, 1, False, 1, False, False, False,False)

问题是ExportAsFixedFormat会抛出错误:

  

追踪(最近一次通话):     文件“converter.py”,第30行,in       pres.ExportAsFixedFormat(PDF_FILE_NAME2,2,0,0,1,1,False,1,False,Fal   se,False,False)     文件“D:\ applics \ Python \ lib \ site-packages \ win32com \ gen_py \ 91493440-5A91-11CF-8   700-00AA0060263Bx0x2x11_Presentation.py“,第112行,在ExportAsFixedFormat中       ,KeepIRMSettings,DocStructureTags,BitmapMissingFonts,UseISO19005_1,Exte   rnalExporter     文件“D:\ applics \ Python \ lib \ site-packages \ win32com \ client__init __。py”,第4行   59,在 ApplyTypes 中       self。 oleobj .InvokeTypes(dispid,0,wFlags,retType,argTypes,* args),   TypeError:无法将Python实例转换为COM对象

我知道我可以使用SaveAs作为解决方法,但它的功能远不如ExportAsFixedFormat。所以问题是:我怎样才能解决上面的错误?

我在StackOverflow上遇到了a similar problem,但是那里发布的解决方案没有帮助。

我在Win7 x64下使用Python 3.3.2和Office 2013。

谢谢!

1 个答案:

答案 0 :(得分:1)

这是PowerPoint API中的一个Bug。

解决方法:传递关键字参数PrintRange = None。

有关详细信息,请参阅:https://sourceforge.net/p/pywin32/bugs/339/