我正在尝试使用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。
谢谢!
答案 0 :(得分:1)
这是PowerPoint API中的一个Bug。
解决方法:传递关键字参数PrintRange = None。
有关详细信息,请参阅:https://sourceforge.net/p/pywin32/bugs/339/