Удалить отдельную фигуру довольно легко и надежно, например:
sp = shape._element
sp.getparent().remove(sp)
Проблема заключается в том, что форма имеет отношение к какой-либо другой части пакета. Например, фигура Picture
имеет отношение (обозначается rId
) к части изображения (файлу) в пакете (zip-архив .pptx). В таких случаях, если вы также не разобрались с отношениями должным образом, вы можете получить ошибку восстановления при попытке открыть полученный файл в PowerPoint.
Обычная форма (так называемая автофигура), такая как прямоугольник, текстовое поле, линия или другая геометрическая форма, не имеет связей и может быть надежно удалена с помощью этого метода. Таблица, вероятно, тоже безопасна, но не диаграмма. Групповая фигура, вероятно, тоже подойдет, но только если она не содержит изображения или диаграммы. И изображение, и диаграмма могут стать проблемой, если вы также не удалите их взаимосвязь.
Вызывается ли ошибка восстановления или нет - это поведение, которое может отличаться в PowerPoint и LibreOffice (или другом PPTX-клиенте). Вы можете попробовать просто удалить изображение или фигуру диаграммы, не разбираясь в отношениях, и посмотреть, что произойдет, но для надежности вам нужно будет протестировать это со всеми возможными клиентами.
Удаление взаимоотношений немного сложнее и либо рассматривается в другом python-pptx
вопросе здесь, на SO, либо может стать хорошим новым вопросом.
person
scanny
schedule
12.02.2021