2024-04-20 02:55:40 发布
网友
我的md2pptx代码使用python pptx创建幻灯片。它有时会忽略它不需要的页面上的形状
在Powerpoint幻灯片放映中,这些空形状不会出现。在LibreOffice,他们似乎是
我非常擅长操纵幻灯片的底层XML
删除空形状——可能是删除它们的XML元素——可行吗?或者python pptx本身是否提供了删除形状的功能?(我想不是。)
假设我可以导航到这些形状并找出哪些是空的
注意:我的目标不是删除整个幻灯片,只是删除空的形状
删除“独立”形状是可靠且非常简单的,例如:
sp = shape._element sp.getparent().remove(sp)
问题在于形状与其他“包装零件”的关系。例如,Picture形状与包(.pptx-zip-archive)中的图像部分(文件)有关系(用rId标识)。在这些情况下,如果您没有正确处理这种关系,当您尝试在PowerPoint中打开生成的文件时,可能会出现“修复错误”
Picture
rId
“常规”形状(所谓的“自动形状”)如矩形、文本框、直线或其他几何形状没有关系,可以使用此方法可靠地删除。一张桌子可能也是安全的,但不是一张图表。组形状可能也可以,但前提是它不包含图片或图表。如果你不删除它们的关系,那么图片和图表都可能是个问题
是否触发修复错误是PowerPoint和LibreOffice(或其他PPTX客户端)之间可能存在差异的行为。您可以尝试在不处理关系的情况下删除图片或图表形状,然后看看会发生什么,但为了可靠,您需要使用所有可能的客户机对其进行测试
删除一段关系要复杂一些,或者在这里的另一个python-pptx问题中涉及到,或者是一个很好的新问题
python-pptx
删除“独立”形状是可靠且非常简单的,例如:
问题在于形状与其他“包装零件”的关系。例如,
Picture
形状与包(.pptx-zip-archive)中的图像部分(文件)有关系(用rId
标识)。在这些情况下,如果您没有正确处理这种关系,当您尝试在PowerPoint中打开生成的文件时,可能会出现“修复错误”“常规”形状(所谓的“自动形状”)如矩形、文本框、直线或其他几何形状没有关系,可以使用此方法可靠地删除。一张桌子可能也是安全的,但不是一张图表。组形状可能也可以,但前提是它不包含图片或图表。如果你不删除它们的关系,那么图片和图表都可能是个问题
是否触发修复错误是PowerPoint和LibreOffice(或其他PPTX客户端)之间可能存在差异的行为。您可以尝试在不处理关系的情况下删除图片或图表形状,然后看看会发生什么,但为了可靠,您需要使用所有可能的客户机对其进行测试
删除一段关系要复杂一些,或者在这里的另一个
python-pptx
问题中涉及到,或者是一个很好的新问题相关问题 更多 >
编程相关推荐