利用python将PDF转为PPT(课件专用)

利用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 页面 插入图片,这里选择样式6
        slide = 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)  # 打开pdf
    img_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即可!

结果:

image-20221014160529656

转换后效果如图所示:可能比例不大合适,但基本达到自己最初想要的效果!

改进:

可以看到转换后的比例并不是特别让人满意

可以自行调整图片比例来适应:

    left=Inches(1.5),
    top=Inches(0),
    width=Inches(7),
    height=Inches(7.5)

改为上面比例后,效果如下:

image-20221014163327316

感觉会顺眼许多!

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值