Python批量转换PPSX和PPSM课件为PDF脚本(.ppsx/.ppsm转PDF)
〇、为啥搞这个?
发现很多外教老师喜欢使用PPSX和PPSM格式的课件,为了方便翻译我决定转为pdf,使用Adobe Acrobat无法批量转换这种格式,所以自己搞了一个代码批量转换。
一、系统要求
- Windows系统(依赖PowerPoint COM接口)
- 安装Microsoft PowerPoint(2007+,家庭版/专业版均可)
- Python 3.5+
- 依赖库:
pywin32
二、安装依赖
pip install pywin32
三、完整代码(直接复制保存为convert_to_pdf.py
)
import os
import sys
import win32com.client
def convert_to_pdf(input_dir=None):
"""
将指定目录中的.ppsx和.ppsm文件转换为PDF格式
Args:
input_dir: 输入目录路径,默认为当前脚本所在目录
"""
# 如果未指定目录,使用当前脚本所在目录
if input_dir is None:
input_dir = os.path.dirname(os.path.abspath(__file__))
print(f"正在处理目录: {input_dir}")
# 获取目录中的所有文件
files = os.listdir(input_dir)
# 筛选出.ppsx和.ppsm文件
ppt_files = [f for f in files if f.lower().endswith(('.ppsx', '.ppsm'))]
if not ppt_files:
print("未找到.ppsx或.ppsm文件")
return
print(f"找到{len(ppt_files)}个PowerPoint文件需要转换")
# 初始化PowerPoint应用程序
try:
# 创建PowerPoint应用程序对象
powerpoint = win32com.client.Dispatch("Powerpoint.Application")
# 设置为可见(PowerPoint要求窗口可见)
powerpoint.Visible = True
# 转换每个文件
for ppt_file in ppt_files:
input_path = os.path.join(input_dir, ppt_file)
# 创建输出文件名(替换扩展名为.pdf)
output_file = os.path.splitext(ppt_file)[0] + ".pdf"
output_path = os.path.join(input_dir, output_file)
try:
print(f"正在转换: {ppt_file} -> {output_file}")
# 打开演示文件
presentation = powerpoint.Presentations.Open(input_path)
# 保存为PDF (32是PDF格式的常量)
presentation.SaveAs(output_path, 32)
# 关闭演示文件
presentation.Close()
print(f"转换成功: {output_file}")
except Exception as e:
print(f"转换失败: {ppt_file},错误: {str(e)}")
# 退出PowerPoint应用程序
powerpoint.Quit()
except Exception as e:
print(f"初始化PowerPoint应用程序失败: {str(e)}")
print("所有转换任务完成")
def main():
# 检查命令行参数
if len(sys.argv) > 1:
input_dir = sys.argv[1]
if not os.path.isdir(input_dir):
print(f"错误: 指定的路径不是一个有效的目录: {input_dir}")
return
convert_to_pdf(input_dir)
else:
# 使用当前目录
convert_to_pdf()
if __name__ == "__main__":
main()
四、使用方法
1. 转换当前目录文件
python convert_to_pdf.py
2. 转换指定目录文件
python convert_to_pdf.py "D:\课件目录" # 路径含空格用引号包裹
3. 常见问题
如果运行没反应,尝试手动启动PowerPoint挂在后台,再运行程序。
五、注意事项
- PowerPoint窗口:转换时会短暂显示(COM接口要求),完成后自动关闭。
- 文件占用:确保待转换PPT未被打开,否则报错“文件正被使用”。
- 错误处理:提示
com_error
→重新安装pywin32
(pip install --force-reinstall pywin32
)。
直接运行脚本,自动生成同名PDF到同目录,无需手动操作!