ppt一键转图片和pdf

版权声明:原创文章转载请注明来源。 https://blog.csdn.net/samll_snail/article/details/84893037

日常工作中经常会需要把 ppt 页面转化成图片,通常我们都是对 ppt 页面截图或者使用 office 工具手动将 ppt 页面保存为图片,如果只有一两页 ppt 需要转化就还好,如果有批量的 ppt 需要处理的话那肯定不能手动来处理了,所以我们今天来用 python 实现一个批量将 ppt 转化成图片和 pdf 的工具,而且还可以将所有的图片拼接成一张长图。

老规矩,先来简单说下程序实现思路,这里依然是用到了一个很强大的第三方库 pywin32 这个库能调用 windows 的部分 api,在这里我们主要用到打开 ppt 文件的 api ,在打开 ppt 文件后,我们即可以把所有的 ppt 页面全部都导出成图片,得到所有图片后我们再使用 PIL 库来把所有的图片拼接成一张长图。

下面是完整的实现代码,将下面这个 python 脚本放在你要转化的 ppt 文件同级目录下即可,在运行之前请先确认是否安装了 pywin32 和 pillow 这两个库,两个库均可以使用 pip install 命令安装,pywin32 安装可能会不那么顺利,可以多试几次,如果实在不能安装成功,建议使用 wheel 文件安装,https://www.lfd.uci.edu/~gohlke/pythonlibs 这个网址上可以找到 pywin32 的wheel 文件,找到对应的版本下载后可使用 pip  install xxx.whl 安装。

#源码来自于公众号:谭某人

import win32com
import win32com.client
import sys
import os

from PIL import Image

#获取当前目录
ppt_root = png_root =sys.path[0]+"\\"


def ppt2png(pptFileName):

    powerpoint = win32com.client.Dispatch('PowerPoint.Application')

    #是否后台运行
    powerpoint.Visible = True

    ppt_path = ppt_root + pptFileName

    outputFileName = pptFileName[0:-4] + ".pdf"

    ppt = powerpoint.Presentations.Open(ppt_path)
    #保存为图片
    ppt.SaveAs(png_root + pptFileName.rsplit('.')[0] + '.png', 17) # formatType = 17 ppt转图片
    #保存为pdf
    ppt.SaveAs(png_root + outputFileName, 32) # formatType = 32 ppt转pdf

    # 关闭打开的ppt文件
    ppt.Close()
    # 关闭powerpoint软件
    powerpoint.Quit()

def pngMontage(dirName):  

    #打开目录下所有的png图片
    imageList = [Image.open(png_root+dirName+'\\'+img) for img in os.listdir(png_root+dirName) if img.endswith('.png')]

    #获取每张图的宽高
    width,height = imageList[0].size

    #新建空白图片并设置图片的宽高,其中高度为所有图片高的总和
    longImage = Image.new(imageList[0].mode,(width,(len(imageList)*height)))

    for index,image in enumerate(imageList):
        longImage.paste(image,box=(0,index*height)) #把小图依次粘贴到新建的空白图片中,其中box是图片位置坐标

    longImage.save(dirName+'long.png')

#批量打开当前目录下所有的ppt文件
for ppt in (pptFiles for pptFiles in os.listdir(ppt_root) if pptFiles.endswith('.ppt')):    
    ppt2png(ppt) #ppt导出图片  
    pngMontage(ppt[0:-4]) #所有图片拼接成长图

学习 python 并不一定就是要从事专业程序开发,会一点 python 其实是能给我们的日常工作带来很多的便利,今天我们分享了批量处理 ppt 文件,那么其实类似的 word、excel 等 office 文件,我们都可以对其进行批量处理的,后面有机会我们再分享一些处理 word 和 excel 的方法。

猜你喜欢

转载自blog.csdn.net/samll_snail/article/details/84893037