Ответ 1
Раскрытие информации: я возглавляю проект docx4j
Хотя docx4j также может обрабатывать pptx и xlsx, он в основном используется для манипулирования docx. В качестве иллюстрации, на момент написания статьи на форуме docx4j было около 1000 тем. Форум pptx имеет только 10% объема.
Что бы вы ни хотели сделать с документом docx, docx4j должен быть в состоянии помочь вам. Там один обзор страницы общего рабочего процесса.
Для многих общих требований docx4j предоставляет API более высокого уровня. Они включают:
-
Создать/открыть/сохранить документацию (конечно)
-
Генерация отчетов/документов с использованием различных подходов: (i) подстановка переменных, (ii) привязка данных XML (особенно сильная) и (iii) Mailmerge
-
Экспортировать как HTML, XHTML
-
Экспорт в PDF (с поддержкой шрифтов)
Для всего остального вы можете манипулировать представлением docx в JAXB для вашего сердца. JAXB - это стандарт сообщества Java, включенный в Java 6, с мощной альтернативной реализацией в EclipseLink MOXy. (POI использует XML Beans вместо JAXB)
Там есть веб-приложение, которое поможет вам изучить документ и создать код Java для создания соответствующих объектов Java.
Конечно, если вы имеете в виду какую-то конкретную задачу, возможно, у docx4j или POI есть особая сила.
И docx4j, и POI имеют лицензию ASL v2.
docx4j активно поддерживается; его исходный код находится на GitHub.
Кроме того, коммерческая поддержка доступна для docx4j, если вы этого хотите, как и несколько коммерческих расширений, например, MergeDocx.
docx4j использует POI как библиотеку для реализации формата составного документа OLE 2, за что мы ему благодарны.