如何复制1幻灯片的PPT并将其粘贴到另一个PPT的特定位置,并使用pptx在python中创建一个新的PPT?

xriantvc  于 2023-04-04  发布在  Python
关注(0)|答案(2)|浏览(448)
import collections

import collections.abc

import copy

from pptx import Presentation

def copy_slide(prs, source, target_index):

    dest = prs.slides.add_slide(source.slide_layout)
    for shp in dest.shapes:
        shp.element.getparent().remove(shp.element)
    # Copy shapes from source, in order
    for shape in source.shapes:
        new_shape = copy.deepcopy(shape.element)
        dest.shapes._spTree.insert_element_before(new_shape, 'p:extLst')
    # Copy rels from source
    for key, val in source.part.rels.items():
        target = val._target
        dest.part.rels.add_relationship(val.reltype, target, val.rId, val.is_external)
    # Move appended slide into target_index
    prs.slides.element.insert(target_index, prs.slides.element[-1])
    return dest

prs = Presentation('test.pptx')
source = prs.slides[1]

prs2 = Presentation('copy.pptx')

copyslide = copy_slide(prs2, source, 1)

prs2.save('copy2.pptx')

print(copyslide)

我可以将test.pptx的第二张幻灯片复制到copy.pptx并创建新的copy2.pptx,但新的ppt已损坏。
我还在终端得到以下错误:

用户警告:重复名称:'ppt/slideLayouts/_rels/slideLayout9.xml.rels' return self._open_to_write(zinfo,force_zip64=force_zip64)

2guxujil

2guxujil1#

@SuyeshSG我做了一个类似的代码,我分享。

import sys
from pptx import Presentation
import copy

def merge_powerpoint_ppts(pres_loc1, pres_loc2, output_loc):
    pres1 = Presentation(pres_loc1)
    pres2 = Presentation(pres_loc2)  
    for slide in pres2.slides:
        sl = pres1.slides.add_slide(pres1.slide_layouts[2])
        for shape in slide.shapes:
            element = shape.element
            newelement = copy.deepcopy(element)
            sl.shapes._spTree.insert_element_before(newelement, 'p:extLst')
    pres1.save(output_loc + "\Output.ppt")

希望这能帮上忙

93ze6v8z

93ze6v8z2#

当您想要重复使用信息并保存时间时,将幻灯片从一个PowerPoint演示文稿复制到另一个演示文稿可能是一个方便的技巧。但是,当涉及到从一个PowerPoint演示文稿复制一个幻灯片并将其粘贴到另一个演示文稿中的特定位置时,事情可能会变得有点棘手。在本文中,我们将指导您完成这些步骤。
将幻灯片从一个PowerPoint演示文稿复制到另一个PowerPoint演示文稿的分步指南:
打开两个演示文稿:
1.要从中复制幻灯片的幻灯片和要将其粘贴到其中的幻灯片。
1.在要从中复制幻灯片的演示文稿中,选择要复制的幻灯片。
1.右键单击所选幻灯片,然后选择“复制”或使用“Ctrl+C”快捷键。转到要粘贴幻灯片的演示文稿,然后选择要在其后插入复制的幻灯片的幻灯片。
1.右键单击所选幻灯片,然后选择“粘贴”或使用“Ctrl+V”快捷键。复制的幻灯片将显示在新演示文稿中。

相关问题