一、脚本功能
PPT批量转换图片,格式支持png、jpg(手动脚本中改参数)
二、环境说明
使用Windows环境,必须安装【Microsoft PowerPoint】
三、使用说明
建议新建一个文件夹,将python脚本和待转换的PPT(文件名建议不包含中文),放到一个文件夹中
四、实现步骤
- 先创建和PPT文件同名的空文件夹
- 将PPT转换为图片,放到该文件夹中(图片默认名称是幻灯片1.PNG,幻灯片2.PNG。。。)
- 将转换后的图片批量重命名,转换后的名称是1.png、2.png。。。
五、代码
git:github.com/chisanhe/ppt_to_img.git
import os
import win32com.client
'''
支持转换为PNG、JPG,搜索后替换即可
'''
#JPG是17
ppSaveAsJPG = 17
#PNG是18
ppSaveAsPNG = 18
'''将PPT另存为图片格式
arguments:
pptFullName: 要转换的ppt文件,
pptName:转换后的存放JPG文件的目录
imgType: 图片类型
'''
def pptToImg(pptFullName, pptName, imgType):
# 启动PPT
pptClient = win32com.client.Dispatch('PowerPoint.Application')
# 设置为0表示后台运行,不显示,1则显示
pptClient.Visible = 1
# 打开PPT文件
ppt = pptClient.Presentations.Open(pptFullName)
# 另存为图片
ppt.SaveAs(pptName, imgType)
# 退出
pptClient.Quit()
'''
多文件夹多图片文件重命名
'''
def renameImg(currentDir):
#当前目录下,只获取所有的文件夹
folders = [dI for dI in os.listdir(currentDir) if os.path.isdir(os.path.join(currentDir, dI))]
i = 0;
for folder in folders:
#打开单个文件夹,获取文件列表
fileList = os.listdir(folder)
#重命名文件,规则1、2、3,开发时读取文件利于遍历
i = 0;
#遍历单个文件
for file in fileList:
#为了避免修改其他文件,只判断等于PNG、JPG的图
fileFix = os.path.splitext(file)[-1]
if fileFix.lower() == '.png' or fileFix == '.jpg':
i += 1
#完整路径img文件名 + 后缀,F:\my\projects\python\ppt2img\01_single_img/1.png
imgFullName = os.path.join(currentDir, folder + '/' + file)
#完整路径img文件名不含后缀 F:\my\projects\python\ppt2img\01_single_img
imgName = os.path.join(currentDir, folder)
#重命名
os.rename(imgFullName, imgName + '/' + (str(i) + fileFix.lower()))
if __name__ == '__main__':
print("PPT转图片开始")
# #获取当前路径
currentDir = os.sys.path[0]
#获取当前文件列表
currentDirAllFiles = os.listdir(currentDir)
#获取当前目录下所有后缀是ppt、pptx的文件,返回值是生成器对象(可迭代)
currentDirPptFiles = (fns for fns in currentDirAllFiles if fns.endswith(('.ppt', '.pptx')))
# 当前目录下所有的PPT文件名,和上述区别在于有无后缀名,返回值是生成器对象(可迭代)
currentDirPptNames = (os.path.splitext(fns)[0] for fns in currentDirAllFiles if fns.endswith(('.ppt', '.pptx')))
#fullFileName是文件名称 + 后缀01_single_img.pptx,fileName是文件名称不含后缀01_single_img
for fullFileName, fileName in zip(currentDirPptFiles, currentDirPptNames):
#完整路径ppt文件名 + 后缀,F:\my\projects\python\ppt2img\01_single_img.pptx
pptFullName = os.path.join(currentDir, fullFileName)
#完整路径PPT文件名 F:\my\projects\python\ppt2img\01_single_img
pptName = os.path.join(currentDir, fileName)
#需要创建一个与PPT同名的文件夹,判断下,如果不存在则创建,已存在忽略
if not os.path.exists(pptName):
os.mkdir(pptName)
#PPT转PNG
pptToImg(pptFullName, pptName, ppSaveAsPNG)
#PPT转JPEG
# pptToImg(pptFullName, pptName, ppSaveAsJPG)
print("PPT转图片完成")
print("图片重命名开始")
renameImg(currentDir)
print("图片重命名完成,脚本执行结束")