【问题标题】:Remove Text Shapes from Powerpoint slides where the shapes are empty从形状为空的 Powerpoint 幻灯片中删除文本形状
【发布时间】:2021-05-16 06:28:29
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: python powerpoint openxml python-pptx


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 1970-01-01
      相关资源
      最近更新 更多