У меня есть шаблон .pptx MS PowerPoint с несколькими слайдами. Каждый слайд имеет групповую форму.
Мне нужно:
чтение групповой фигуры из слайда в файле шаблона pptx (фигуры в моем шаблоне имеют набор свойств «имя формы», поэтому их можно найти с помощью apache poi, изучая метод getShapeName ()
https://poi.apache.org/components/slideshow/xslf-cookbook.html#GetShapes
"скопировать" или "клонировать" эту извлеченную форму группы и добавить ее в качестве нового объекта формы группы на новом слайде, где эта новая форма группы будет содержать все новые дочерние формы, которые также существовали на слайде шаблона форма группы
Похоже, я не могу использовать XSLFSheet.addShape(..)
, потому что у него есть жестко закодированное исключение, которое он всегда выдает:
throw new UnsupportedOperationException(
"Adding a shape from a different container is not supported -"
+ " create it from scratch witht XSLFSheet.create* methods");
Я не могу использовать XSLFSlide.importContent (XSLFSheet), потому что это перезапишет все на новом целевом слайде. Мне нужно добавить несколько групповых фигур на моем новом целевом слайде - поэтому я не могу удалить их все при многократном вызове importContent (..).
Я видел упоминание об этом, но без решения:
Как создать файл PPTX с помощью шаблона power-point с использованием Apache POI
Добавление фигур в слайд Powerpoint с использованием XSLF (проект Apache POI)
изменить существующий файл powerpoint с помощью программирования Java
Я использую эти зависимости с Java 8
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
Я не могу использовать aspose из-за его больших требований к памяти - и открытой проблемы NPE, которую он выбрасывает на разные машины