python处理ppt文件,转换成图片或者pdf文件(获取目录下所有文件信息、文件名称分割、文档操作)
把PPT每一页截图到公众号里推送可是个体力活,那就用python脚本去分解ppt,保存每一个为一张图片好了
需要用到“win32com.client”库
import win32com.client import os import sys
第一步,定义读取ppt文件路径和输出路径
path = os.path.abspath(os.path.dirname(sys.argv[0])) #PPT存放路径 ppt = path + '/' + "test.ppt" #转换成图片后存放路径 filename = path + '/' + '001.jpg'
第二步,ppt路径和存放路径传到转换方法中执行
def ppt2png(ppt, filename): # 打开PPT程序 ppt_app = win32com.client.Dispatch('PowerPoint.Application') # 打开ppt文件(后台模式) ppt = ppt_app.Presentations.Open(ppt) # 打开的PPT另存为图片文件。17数字是ppt转图片,32数字是ppt转pdf。 ppt.SaveAs(filename, 17) print("导出成png格式成功!!!") # 退出PPT程序 ppt_app.Quit() ppt2png(ppt, filename)
其实,就是这么简单。执行后,会在脚本和目录下创建一个文件夹,里面存放ppt每一页的图片文件
当然,也可以转成pdf文件,把第二步的“ppt.SaveAs”后括号内数字改成32,同时把第一步“filename”后的后缀由jpg改成pdf即可,生成上左图pdf文件
这里有个疑问,“filename”的后缀如果是jpg或者png,会创建一个文件夹,把图片存文件夹内,但是如果是pdf则只会在目录下生成一个pdf文件,没搞明白为何
当然,如果不想更改ppt文件名称,实现拖到脚本目录下即可转换,那就加上获取文件内所有文件信息,同时通过匹配后缀名的方式识别ppt文件转换
#获取默认目录下所有文件 filenames = os.listdir(path) #循环读取文件名称 for ppt in filenames: #判断文件名称,筛选出后缀名为ppt或者pptx的文件 if ppt.endswith('ppt') or ppt.endswith('pptx'): #将获取的文件名字进行分割,提取出文件名,比如1024.ppt,按照下面的规则base=1024,ext=ppt base, ext = ppt.split('.') #转换成图片后存放路径 filename = path + '/' + base + '.jpg' #识别出ppt文件后,拼接成ppt文件存放路径 ppt = path + '/' + ppt else: continue
以上,实现文首预期效果,附全部代码
import win32com.client import os import sys path = os.path.abspath(os.path.dirname(sys.argv[0])) #获取默认目录下所有文件 filenames = os.listdir(path) def ppt2png(ppt, filename): # 打开PPT程序 ppt_app = win32com.client.Dispatch('PowerPoint.Application') # 打开ppt文件(后台模式) ppt = ppt_app.Presentations.Open(ppt) # 打开的PPT另存为图片文件。17数字是ppt转图片,32数字是ppt转pdf。 ppt.SaveAs(filename, 17) print("转换成功!!!") # 退出PPT程序 ppt_app.Quit() #循环读取文件名称 for ppt in filenames: #判断文件名称,筛选出后缀名为ppt或者pptx的文件 if ppt.endswith('ppt') or ppt.endswith('pptx'): #将获取的文件名字进行分割,提取出文件名,比如1024.ppt,按照下面的规则base=1024,ext=ppt base, ext = ppt.split('.') #转换成图片后存放路径 filename = path + '/' + base + '.jpg' #识别出ppt文件后,拼接成ppt文件存放路径 ppt = path + '/' + ppt #执行ppt2png方法,转换ppt ppt2png(ppt, filename) else: continue
“win32com.client”的使用参考:https://blog.csdn.net/qq_28304687/article/details/80721653