通常,大家的需求都是将PPT转化为PDF,无论是Word还是WPS都已经实现了这些功能。偶尔也会需要把PDF转为PPT。原则上来说,可以利用python的一些库解析PDF,但是这显然比较麻烦。最好的办法就是先转化为图片,然后再插入PPT。而这个过程只需要使用python-pptx的基本功能,以及pdf2image和PIL库来处理。

正好在github上有一个项目已经做了这件事。


phasedOut/pdf2pptxgithub.com


java使用libreoffice把ppt转pdf java pdf转ppt_Python


它的想法就是把pdf的每一页转化为png,然后插入到ppt中。但是这里面有些无用的内容,比方在新的ppt中插入一些日期之类的。这里面还有一些不方便之处,就是要按要求建立几个目录,这些其实也都是可以自动完成的。当然也有一些缺陷,图片的aspect ration和ppt的不一样,这些都可以通过修改源码解决。

由于我也只暂时使用,因此等后面有时间,我把它改善一下,传到github上。目前如果要使用的话可以将下面的代码复制。


# -*- coding: utf-8 -*-


然后将代码保存到某个python文件例如"pdf2ppt.py"中,将该文件和需要转化的pdf放在一起,在命令行执行:


python .pdf2ppt.py 文件名 300   16x9


其中文件名无需'.pdf'后缀,300指的是转化成图片的dpi,后面的16x9指的是屏幕的比例。

通过这次调研,发现也可以通过对markdown的解析,利用python-pptx生成ppt,相对beamer是麻烦一些,不过也许偶尔会有用。

python-pptx - python-pptx 0.6.18 documentationpython-pptx.readthedocs.io


另外pathlib看来是要比os好用。


pathlib - pathlib 1.0.1 documentationpathlib.readthedocs.io

java使用libreoffice把ppt转pdf java pdf转ppt_python中二进制转化为十进制_02

python3 pathlib库Path类方法总结www.jb51.net

小明:你应该使用pathlib替代os.pathzhuanlan.zhihu.com

java使用libreoffice把ppt转pdf java pdf转ppt_python中二进制转化为十进制_03

爱吃鱼De大猫:为什么你应该开始习惯使用 pathlib?zhuanlan.zhihu.com

java使用libreoffice把ppt转pdf java pdf转ppt_python中二进制转化为十进制_04

Python 有哪些让你相见恨晚的技巧?www.zhihu.com

java使用libreoffice把ppt转pdf java pdf转ppt_Python_05

Gahana:每周一个 Python 模块 | pathlibzhuanlan.zhihu.com

wang looker:python路径操作新标准:pathlib 模块zhuanlan.zhihu.com

高级爬虫-陈祥安:华丽的蜕变-使用Pathlib模块,文件操作So Easy!zhuanlan.zhihu.com

java使用libreoffice把ppt转pdf java pdf转ppt_python_06

艺赛旗RPA:RPA技术分享:Python 之 Pathlib 模块zhuanlan.zhihu.com

jiangyx:Python文件操作,看这篇就足够zhuanlan.zhihu.com

java使用libreoffice把ppt转pdf java pdf转ppt_github_07


pdf2image是一个把pdf转化为图片的库,使用非常简单。

https://github.com/Belval/pdf2imagegithub.com


以后有时间把这些内容整理一下。