利用python将PDF转为PPT(课件专用)
前言:课程中老师经常会将课件作为PDF发放而非PPT,而现有的PDF阅读器一般不支持添加修改等操作,所以显得十分麻烦,考虑将PDF转换为PPT格式,方便进行操作。
注意:这里并不是真正地将PDF转为PPT,而只是把PDF作为图片,插入到PPT中!
需要模块:
- fitz:
- pptx
直接使用pip包管理工具下载
pip install fitz
pip install python-pptx
代码整体思路:
- 将pdf抽出作为图片保存
- 将图片插入PPT中
代码如下:
import fitz
import pptx
from pptx.util import Inches
def img2pptx(img_path,ppt_name):ppt = pptx.Presentation() # 生成ppt对象for i in img_path:layout = ppt.slide_layouts[6] # 定义一个 PPT 页面 插入图片,这里选择样式6slide = ppt.slides.add_slide(layout)image = slide.shapes.add_picture(image_file=i,left=Inches(0),top=Inches(0),width=Inches(10),height=Inches(8))#目前设置会撑满整张PPT,大小可自行调整ppt.save(ppt_name)def pdf2img(pdf_path, img_dir,ppt_name):doc = fitz.open(pdf_path) # 打开pdfimg_path=[]for page in doc: # 遍历pdf的每一页zoom_x = 2.0 # 设置每页的水平缩放因子zoom_y = 2.0 # 设置每页的垂直缩放因子mat = fitz.Matrix(zoom_x, zoom_y)pix = page.get_pixmap(matrix=mat)pix.save(r"{}page-{}.png".format(img_dir, page.number)) # 保存img_path.append(r"{}page-{}.png".format(img_dir, page.number))img2pptx(img_path, ppt_name)if __name__ == '__main__':# pdf路径pdf_path = r"./E04.pdf"# 图片保存位置img_dir = r"./"#ppt名称ppt_name="result.pptx"# pdf转图片pdf2img(pdf_path, img_dir,ppt_name)
使用(参数说明):
- pdf_path:PDF的路径
- img_dir:图片保存路径
- ppt_name:保存的ppt的名称
使用时直接修改pdf_path即可!
结果:
转换后效果如图所示:可能比例不大合适,但基本达到自己最初想要的效果!
改进:
可以看到转换后的比例并不是特别让人满意
可以自行调整图片比例来适应:
left=Inches(1.5),top=Inches(0),width=Inches(7),height=Inches(7.5)
改为上面比例后,效果如下:
感觉会顺眼许多!