微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从形状为空的 Powerpoint 幻灯片中删除文本形状

如何解决从形状为空的 Powerpoint 幻灯片中删除文本形状

我的 md2pptx 代码使用 python-pptx 创建幻灯片。它有时会忽略它不需要的页面上的形状。

在 Powerpoint Slide Show 中,这些空白形状不会出现。在 LibreOffice 中,它们似乎是。

我非常擅长操作幻灯片的底层 XML。

删除空形状是否可行——也许是通过删除它们的 XML 元素?或者 python-pptx 本身是否提供删除形状的功能? (我认为不是。)

假设我可以导航到形状并找出哪些是空的。

注意:我的目的不是删除整个幻灯片,只是删除空形状。

解决方法

删除“独立”形状是可靠且非常简单的,例如:

sp = shape._element
sp.getparent().remove(sp)

问题在于形状与其他“包装部件”有关系。例如,Picture 形状与包(.pptx zip 存档)中的图像部分(文件)有关系(用 rId 标识)。在这些情况下,如果您也没有正确处理这种关系,当您尝试在 PowerPoint 中打开生成的文件时,您可能会收到“修复错误”。

“常规”形状(所谓的“自动形状”),例如矩形、文本框、线条或其他几何形状没有关系,可以使用此方法可靠地删除。表格也可能是安全的,但不是图表。组形状也可能没问题,但前提是它不包含图片或图表。如果您不同时删除它们的关系,则图片和图表都可能有问题。

是否触发修复错误的行为在 PowerPoint 和 LibreOffice(或其他 PPTX 客户端)之间可能有所不同。您可以尝试只删除图片或图表形状而不处理关系,然后看看会发生什么,但为了可靠,您需要与所有可能的客户进行测试。

删除关系涉及更多的问题,要么在 SO 上的另一个 python-pptx 问题中有所涉及,要么会提出一个很好的新问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。