Apache POI или docx4j для работы с документами docx - программирование
Подтвердить что ты не робот

Apache POI или docx4j для работы с документами docx

Как вы думаете, что лучше использовать для чтения документа docx как java-объектов и почему?

другими словами. какая библиотека поддерживает большинство тегов слов?

4b9b3361

Ответ 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, за что мы ему благодарны.

Ответ 2

Я думаю, что основное внимание Apache POI уделяется работе с электронными таблицами, хотя у меня есть функции для чтения текстовых документов, и для этого используется xml beans.  Docx4j в основном занимается документами docx с использованием jaxb. Обычно jaxb разрешает преобразование объекта jml в xml, поэтому я думаю, что docx4j будет предпочтительнее для вашего случая.

Ответ 3

Я попробовал Apache POI, но проблема в том, что вы печатаете что-либо из файла docx (например: Чтобы напечатать все элементы "Heading1" из docx), он печатает множество плохих данных и пробелов. Docx4j избежит этих плохих данных, я попробовал.

Ответ 5

Я не использовал docx4j, и я намерен попробовать его. Poi может обрабатывать только стандартные документы openxml. Файл Microsoft docx не поддерживает полностью формат openxml. Так много форматов может потерять использование poi. Docx4j утверждает, что он нацелен на поддержку 100% форматов файла docx. Я думаю, что он будет работать лучше.