Python批量转换PPSX和PPSM课件为PDF脚本

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挂在后台,再运行程序。

五、注意事项

  1. PowerPoint窗口:转换时会短暂显示(COM接口要求),完成后自动关闭。
  2. 文件占用:确保待转换PPT未被打开,否则报错“文件正被使用”。
  3. 错误处理:提示com_error→重新安装pywin32pip install --force-reinstall pywin32)。

直接运行脚本,自动生成同名PDF到同目录,无需手动操作!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值