Python删除/复制.PPT幻灯片

时间:2016-05-22 14:36:16

标签: python powerpoint

我有几个.ppt(MS PowerPoint幻灯片)文件可供使用。它们每个都包含我要删除的几十张幻灯片。

例如,对于文件a.ppt,我需要删除幻灯片[2,6,12,25]等。

库python-pptx没有直接“删除”,所以我想可能将所需的幻灯片复制到新文件是一种可能的解决方案。

但是我无法找到一个例子而且不确定如何继续。

2 个答案:

答案 0 :(得分:1)

这是.pptx演示文稿的功能子集(不确定.ppt文件是否存在差异)。 Source

def dropSlides(self, slidesToKeep, prs):
    """Return a new presentation that has the correct slide subset.

    Param:
        - slidesToKeep: index of slides to keep from csv (int list)
        - prs: presentation (pptx.presentation)

    Return:
        - presentation with new slide subset

    """

    # get slides to delete
    indexesToRemove = [x for x in range(1, len(prs.slides._sldIdLst)+1) if x not in slidesToKeep]

    # subset report
    for i, slide in enumerate(prs.slides):
        # create slide dict
        id_dict = {slide.id: [i, slide.rId] for i, slide in enumerate(prs.slides._sldIdLst)}

        # iterate thorugh indexes
        if i+1 in indexesToRemove:
            # get slide id
            slide_id = slide.slide_id

            # remove slide
            prs.part.drop_rel(id_dict[slide_id][1])
            del prs.slides._sldIdLst[id_dict[slide_id][0]]

    return prs

答案 1 :(得分:0)

我曾经做过的事情是通过键盘模拟工具(不是真正的编程语言,但也需要编写脚本)。

它识别我要删除的PPT幻灯片,多个选择它们,所以我可以一次删除它们。

希望它可以帮助某人有类似的需求。