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

2024-04-20 02:55:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在Powerpoint幻灯片放映中,这些空形状不会出现。在LibreOffice,他们似乎是

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

删除空形状——可能是删除它们的XML元素——可行吗?或者python pptx本身是否提供了删除形状的功能?(我想不是。)

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

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


Tags: 代码功能元素目标libreoffice页面xml形状
1条回答
网友
1楼 · 发布于 2024-04-20 02:55:40

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

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

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

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

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

删除一段关系要复杂一些,或者在这里的另一个python-pptx问题中涉及到,或者是一个很好的新问题

相关问题 更多 >