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

kst*_*tis 7 python powerpoint vsto pywin32 powerpoint-vba

我正在尝试使用进度指示将.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
Run Code Online (Sandbox Code Playgroud)

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

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

while presentation.CreateVideoStatus == 1:
    time.sleep(1) 
Run Code Online (Sandbox Code Playgroud)

然而,根据这篇文章Powerpoint 2013 - 导出到视频的进展,用户Steve Rindsberg建议我们应该使用ResampleMediaTasks对象及其PercentComplete()方法来获得进展.

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

72D*_*BE9 1

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

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