用python将两个ppt每一页交叉合在一起

用python将两个ppt每一页交叉合在一起

需求说明

因为这学期给中外合作的班级当助教,需要中英文的ppt。但是手里只有英文的,就得把中文转成英文的,然后再改。刚开始几个人一块弄,我觉得还行,一章ppt一百多页,一个人改个几十页还可以接受。后来只有我一个人,直到我看了网络层这章的ppt,336页,差点当场趋势。还来整合了一下网上的代码片段,写了这部分代码。
这个代码是将中文ppt和英文ppt交叉放到一个ppt里。第一张是中文,第二张是英文翻译。贡献给有这种奇葩需求的人。
代码写的差了点,但能正常使用。

代码部分

# -*- coding = UTF-8 -*-
import pptx
import win32com
import win32com.client
import time

ppt1 = r"C:\Users\60385\Desktop\ppt.pptx"  # 中文的ppt
ppt2 = r"C:\Users\60385\Desktop\ppt_en.pptx"  # 英文的ppt

sum_ppt = r"C:\Users\60385\Desktop\sum.pptx"  # 合在一起的ppt。需先创建文件
temp1_ppt = r"C:\Users\60385\Desktop\temp1.pptx"
temp2_ppt = r"C:\Users\60385\Desktop\temp2.pptx"


def save_fe(prs, from_index, end_index, save_path):
    slides = prs.slides
    number_pages = len(slides)

    # 切去之前的页面
    for i in range(from_index - 1):
        rId = prs.slides._sldIdLst[0].rId
        prs.part.drop_rel(rId)
        del prs.slides._sldIdLst[0]
    # 切去之后的页面
    for j in range(number_pages - end_index):
        rId = prs.slides._sldIdLst[-1].rId
        prs.part.drop_rel(rId)
        del prs.slides._sldIdLst[-1]

    prs.save(save_path)


for i in range(1, 197):  # 交叉存放的页码
    prs1 = pptx.Presentation(ppt1)
    save_fe(prs1, i, i, temp1_ppt)

    prs2 = pptx.Presentation(ppt2)
    save_fe(prs2, i, i, temp2_ppt)

    App = win32com.client.gencache.EnsureDispatch('PowerPoint.Application')
    App.Visible = 1  # 后台运行
    App.DisplayAlerts = 0

    ppt_sum = App.Presentations.Open(sum_ppt)
    ppt_temp1 = App.Presentations.Open(temp1_ppt)
    ppt_temp2 = App.Presentations.Open(temp2_ppt)

    for j in range(1, 2):
        ppt_temp1.Slides(j).Copy()
        ppt_sum.Slides.Paste()

        ppt_temp2.Slides(j).Copy()
        ppt_sum.Slides.Paste()

    ppt_temp1.Close()
    ppt_temp2.Close()

    ppt_sum.SaveAs(sum_ppt)
    ppt_sum.Close()
    App.Quit()

代码报错

我在第二次跑的时候会出现如下的报错。

AttributeError: module 'win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x9' has no attribute 'CLSIDToClassMap'

需要进到如下的文件夹将类似于91493440-5A91-11CF-8700-00AA0060263Bx0x2x12这个的缓存文件删除掉,再重新运行。
C:\Users\60385\AppData\Local\Temp\gen_py\3.8
我是看到了下面这个大佬的文章改的报错。
>【python】PPT转PDF(同一目录下批量)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值