使用pywin32模块完成主要功能,程序整体实现思路
1. 初始化PowerPoint 端口应用程序
2. 使用应用程序对象打开ppt文件
3. 将ppt文件直接转存为PDF文件
特点:在后台运行,不需要将应用程序端口可视化,避免了comtypes带来的必须在前台运行的尴尬境地。
废话不多说直接开始整。(完整代码在最后面)
一、首先需要安装pywin32模块
1 $ pip install pywin32
如果上述命令安装失败可以尝试一下方法:
$ python -m pip install pypiwin32
二、导入PowerPoint类库,也可以理解为初始化PowerPoint应用实例
p = gencache.EnsureDispatch("PowerPoint.Application")
三、使用应用程序对象打开ppt文件
ppt = p.Presentations.Open(filename, False, False, False)
Presentations: Presentations是PowerPoint应用程序的一个对象。Microsoft PowerPoint 中所有Presentation对象的集合。 每个演示文稿对象代表当前在 PowerPoint 中打开演示文稿。Open方法:
四、将ppt文件转存为pdf文件
ppt.ExportAsFixedFormat(exportfile, 2, PrintRange=
ExportAsFixedFormat:将 Microsoft PowerPoint 演示文稿的副本发布为固定格式的文件(PDF 或 XPS)。
有关ExportAsFixedFormat说明及参数可以访问微软官方ExportAsFixedFormat说明,下面列举部分参数,感兴趣的可以再参考一下。
五、完整代码,需要的可以直接复制到需要转化的ppt文件目录下面
import osimport globfrom win32com.client import gencachedef get_file_path():"""获得当前文件夹下的所有的.ppt和.pptx文件"""file_path = os.path.split(os.path.abspath(__file__))[0]pp_files = glob.glob(os.path.join(file_path, "*.ppt*"))return file_path, pp_filesdef ppt_to_pdf(filename, results):'''ppt 和 pptx 文件转换'''name = os.path.basename(filename).split('.')[0] + '.pdf'exportfile = os.path.join(results, name)if os.path.isfile(exportfile):print(name, "已经转化了")returnp = gencache.EnsureDispatch("PowerPoint.Application")try:ppt = p.Presentations.Open(filename, False, False, False)except Exception as e:print(os.path.split(filename)[1], "转化失败,失败原因%s" % e)ppt.ExportAsFixedFormat(exportfile, 2, PrintRange=None)print('保存 PDF 文件:', exportfile)p.Quit()def main():"""主程序执行"""file_path, pp_files = get_file_path()results = os.path.join(file_path, "results")if not os.path.exists(results):os.mkdir(os.path.join(results))for _ in pp_files:ppt_to_pdf(_, results)if __name__ == "__main__":main()