使用python脚本批量化将PPT转换成PDF

期末复习期间要看PPT,但是.ppt和.pptx格式的文件用起来太麻烦,于是便有了这个脚本

准备工作

获得脚本

脚本放在GitHub仓库:

ToolScripts/batch-ppt-to-pdf at master · Aaron-Y-Wong/ToolScripts (github.com)

ToolScript仓库收录一些能提高效率的小玩意

环境配置

  • 脚本和需要转换的文件处于同一目录
  • 检查你的PowerPoint版本

32位和64位版本的PowerPoint需要使用不同版本的Python库,因此需要先查看自己的PowerPoint版本再根据情况修改脚本中的参数

打开PowerPoint,Account->About PowerPoint就可以查看自己的PowerPoint版本信息

这里可以看到我的PowerPoint是32位版本

根据刚才看到的PowerPoint版本,打开脚本修改BITS变量的值:

1
2
3
4
5
6
7
8
9
10
11
12
13
# version of your Office PowerPoint
BITS = 32

if BITS == 32:
def init_powerpoint():
powerpoint = win32com.client.DispatchEx("Powerpoint.Application")
powerpoint.Visible = 1
return powerpoint
elif BITS == 64:
def init_powerpoint():
powerpoint = comtypes.client.CreateObject("Powerpoint.Application")
powerpoint.Visible = 1
return powerpoint

如果版本不符可能会出现类似如下报错:

使用方法

在命令行执行:

1
python batch_ppt_to_pdf.py

即可自动完成转换

后记

一开始想直接用现成的轮子,搜到了GitHub上的这个仓库,但是运行的时候发现的前面提到的报错。从这个报错根本看不出问题到底出在哪里,多方查找也没能找到原因。后来在comtypes官网看到这一段话:

comtypes allows to define, call, and implement custom and dispatch-based COM interfaces in pure Python. It works on Windows and 64-bit Windows. Windows CE support was dropped since comtypes==1.1.8.

这才想起来会不会是因为我的PowerPoint是32位的而comtypes只能用于64位。将comtypes替换成win32com之后问题解决。

参考资料

comtypes · PyPI