Удалите текстовые фигуры со слайдов Powerpoint, где фигуры пустые

Мой код md2pptx создает слайды с помощью python-pptx. Иногда он игнорирует фигуры на ненужной странице.

В слайд-шоу Powerpoint эти пустые фигуры не отображаются. В LibreOffice так и есть.

Я довольно хорошо умею манипулировать XML, лежащим в основе слайда.

Возможно ли удалить пустые фигуры - возможно, удалив их элементы XML? Или сам python-pptx предлагает возможность удаления формы? (Думаю, нет.)

Предположим, я могу перейти к фигурам и выяснить, какие из них пусты.

Примечание. Я не собираюсь удалять слайды целиком, а только пустые фигуры.


person Martin Packer    schedule 12.02.2021    source источник


Ответы (1)


Удалить отдельную фигуру довольно легко и надежно, например:

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

Проблема заключается в том, что форма имеет отношение к какой-либо другой части пакета. Например, фигура Picture имеет отношение (обозначается rId) к части изображения (файлу) в пакете (zip-архив .pptx). В таких случаях, если вы также не разобрались с отношениями должным образом, вы можете получить ошибку восстановления при попытке открыть полученный файл в PowerPoint.

Обычная форма (так называемая автофигура), такая как прямоугольник, текстовое поле, линия или другая геометрическая форма, не имеет связей и может быть надежно удалена с помощью этого метода. Таблица, вероятно, тоже безопасна, но не диаграмма. Групповая фигура, вероятно, тоже подойдет, но только если она не содержит изображения или диаграммы. И изображение, и диаграмма могут стать проблемой, если вы также не удалите их взаимосвязь.

Вызывается ли ошибка восстановления или нет - это поведение, которое может отличаться в PowerPoint и LibreOffice (или другом PPTX-клиенте). Вы можете попробовать просто удалить изображение или фигуру диаграммы, не разбираясь в отношениях, и посмотреть, что произойдет, но для надежности вам нужно будет протестировать это со всеми возможными клиентами.

Удаление взаимоотношений немного сложнее и либо рассматривается в другом python-pptx вопросе здесь, на SO, либо может стать хорошим новым вопросом.

person scanny    schedule 12.02.2021