源码:
import os
from pptx import Presentation
import comtypes.client
import time
def get_file_size(file_path):
"""
获取文件大小,单位为MB
参数:
file_path:文件路径
返回:
文件大小,单位为MB
"""
return os.path.getsize(file_path) / (1024 * 1024) # 转换为MB
def ppt_to_pdf(ppt_file, output_pdf):
"""
将给定的 PowerPoint 文件转换为 PDF 文件
参数:
ppt_file:输入的 PowerPoint 文件路径
output_pdf:输出的 PDF 文件路径
"""
print(f"正在转换文件: {ppt_file}")
start_time = time.time() # 记录转换开始时间
# 创建 PowerPoint 应用程序对象
powerpoint = comtypes.client.CreateObject("Powerpoint.Application")
powerpoint.Visible = 1 # 设置 PowerPoint 可见性
ppt = powerpoint.Presentations.Open(ppt_file) # 打开 PPT 文件
# 检查文件大小是否大于10MB
file_size = get_file_size(ppt_file)
if file_size > 10:
print("本PPT文件较大,请耐心等待...")
# 保存 PPT 文件为 PDF,根据输入文件的扩展名确定保存格式
ppt.SaveAs(output_pdf, 32 if ppt_file.endswith('.pptx') else 32)
ppt.Close() # 关闭 PPT 文件
powerpoint.Quit() # 退出 PowerPoint 应用程序
end_time = time.time() # 记录转换结束时间
elapsed_time = end_time - start_time # 计算转换耗时
print(f"文件转换完成: {output_pdf},耗时 {elapsed_time:.2f} 秒")
def convert_ppt_to_pdf_in_directory(directory):
"""
批量将指定目录下的所有 PowerPoint 文件转换为 PDF 文件
参数:
directory:指定的目录路径
"""
start_time = time.time() # 记录程序开始时间
ppt_files = [f for f in os.listdir(directory) if
f.endswith(('.ppt', '.pptx')) and os.path.isfile(os.path.join(directory, f))]
total_files = len(ppt_files) # 获取目录下的所有 PPT 文件数量
# 如果没有找到任何 PPT 文件,则提前退出
if total_files == 0:
print(f"在目录 '{directory}' 中未找到任何 .ppt 或 .pptx 文件。")
return
print(f"在目录 '{directory}' 中找到以下 {total_files} 个 .ppt 和 .pptx 文件:")
for index, file in enumerate(ppt_files, start=1): # 枚举所有 PPT 文件
print(f"{index}. {file}") # 打印文件名
# 提示用户是否要转换文件
user_input = input("是否要转换这些文件?(y/n): ")
if user_input.lower() != 'y':
print("用户取消转换。")
return
for file in ppt_files: # 遍历目录中的所有 PPT 文件
filename, file_extension = os.path.splitext(file) # 获取文件名和扩展名
ppt_file = os.path.join(directory, file) # 获取完整的文件路径
pdf_file = os.path.join(directory, filename + '.pdf') # 生成相应的 PDF 文件路径
ppt_to_pdf(ppt_file, pdf_file) # 调用函数将 PPT 文件转换为 PDF
end_time = time.time() # 记录程序结束时间
elapsed_time = end_time - start_time # 计算程序运行时间
print(f"全部文件转换完成,共耗时 {elapsed_time:.2f} 秒。")
if __name__ == "__main__":
current_directory = os.getcwd() # 获取当前工作目录
convert_ppt_to_pdf_in_directory(current_directory) # 在当前目录中将所有 PPT 文件转换为 PDF
#pyinstaller --onefile --icon=icon.jpg ppt_to_pdf.py
可执行文件自取
使用说明:将.exe文件和需要转换的ppt文件放在同目录下点击运行等待几秒按提示操作即可
链接:https://pan.baidu.com/s/10sjUG-8xMjJJ03eXTAtPDg
提取码:m4ns
--来自百度网盘超级会员V3的分享