【发布时间】:2019-02-27 05:34:23
【问题描述】:
我使用 python-pptx 创建了一个演示文稿。但是,某些幻灯片具有空占位符,默认文本 click to add title/text 如下所示。
所以基本上,有文本Some texts here 的非空占位符,另外两个是空占位符。我怎样才能找到并删除它们?此外,图像也有相同的空占位符。我怎样才能找到它们。谢谢
【问题讨论】:
我使用 python-pptx 创建了一个演示文稿。但是,某些幻灯片具有空占位符,默认文本 click to add title/text 如下所示。
所以基本上,有文本Some texts here 的非空占位符,另外两个是空占位符。我怎样才能找到并删除它们?此外,图像也有相同的空占位符。我怎样才能找到它们。谢谢
【问题讨论】:
找到它们相当容易;大致像这样的东西应该可以解决问题:
for placeholder in slide.shapes.placeholders:
if placeholder.has_text_frame and placeholder.text_frame.text == "":
print("found one %s" % placeholder)
删除它更难,因为没有直接的 API 支持删除形状。但是,在这种简单的文本占位符情况下,这应该可以工作:
sp = placeholder._sp
sp.getparent().remove(sp)
._sp 属性是代表实际形状 XML 元素的 lxml etree._Element 对象(在本例中为占位符 <p:sp> 元素)。 .getparent() 和 .remove() 是 etree._Element 上的方法,调用这些方法可以直接操作底层 XML。这可能很危险,例如,如果您尝试使用图表形状进行此操作,则在尝试加载演示文稿时可能会遇到修复错误,但在这种情况下它足够安全。
【讨论】: