在python-pptx中复制一个自由格式的对象

时间:2018-10-09 19:33:21

标签: python powerpoint python-pptx

我在模板幻灯片中有一个自由格式的对象,我想复制它并制作出多个对象。

我在文档中找不到从现有形状创建形状的方法。我在错误的位置找东西还是不存在该功能?

1 个答案:

答案 0 :(得分:0)

python-pptx API不支持此操作,但是您可以使用一些内部构件来实现此结果

from copy import deepcopy

# ---get the existing freeform shape however you do---
freeform = slide.shapes[n]
# ---get the underlying XML element for that shape---
sp = freeform._sp
for idx in range(3):
    # ---duplicate original freeform---
    new_sp = deepcopy(sp)
    # ---create a unique id for it---
    new_sp.nvSpPr.cNvPr.id = 1000 + idx
    # ---insert it after original---
    sp.addnext(new_sp)

这些都将直接堆叠在原始文件的顶部,因此您可能需要添加一些文件以将它们移动到新位置。另外,如果现有的自由格式参与了超链接,则可能会遇到麻烦,该超链接本身就是链接或包含超链接的文本。