使用ResampleMediaTask进行Powerpoint视频导出进度

时间:2014-01-24 11:44:29

标签: python vsto powerpoint powerpoint-vba pywin32

我正在尝试使用进度指示将.pptx文件转换为.mp4视频文件。我正在使用Python 2.7.6以及win32com.client模块,以便在Microsoft Powerpoint 2013中自动执行一些操作。

到目前为止,这是我的代码:

import win32com.client

powerpoint = win32com.client.Dispatch("Powerpoint.Application")
presentation = powerpoint.Presentations.Open(FileName='myFile.pptx',
                                           WithWindow=False)

try:
    # May need a few other parameters as well
    presentation.CreateVideo('out.wmv')
except:
    raise SystemExit

我的问题是我没有得到导出到视频的进度。我知道这些信息是可用的,因为从应用程序中导出视频时,Powerpoint本身会显示一个确切的进度条。

到目前为止我设法检索的唯一信息是轮询CreateVideoStatus属性,该属性仅告诉我转换是否已经结束。

while presentation.CreateVideoStatus == 1:
    time.sleep(1) 

但是,根据这篇文章Powerpoint 2013 - Progress for export to video,用户Steve Rindsberg建议我们应该使用ResampleMediaTasks对象及其PercentComplete()方法来获取进度。

关于如何在Python中实现这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

要使用ResampleMediaTasks,您需要在Python中创建其COM对象,并使用它来获取对话期间的进度百分比。一个完整的例子: http://bit.ly/1iUbZKO

正如您在第8173行中所看到的,它会转换PPT文件并使用ResampleMediaTasks来获取它的进度。 您可以使用该源项目中的整个openlp包或使用它的一部分。 要下载整个项目,您需要安装BZR客户端。