Как вы думаете, что лучше использовать для чтения документа docx как java-объектов и почему?
другими словами. какая библиотека поддерживает большинство тегов слов?
Как вы думаете, что лучше использовать для чтения документа docx как java-объектов и почему?
другими словами. какая библиотека поддерживает большинство тегов слов?
Раскрытие информации: я возглавляю проект 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, за что мы ему благодарны.
Я думаю, что основное внимание Apache POI уделяется работе с электронными таблицами, хотя у меня есть функции для чтения текстовых документов, и для этого используется xml beans. Docx4j в основном занимается документами docx с использованием jaxb. Обычно jaxb разрешает преобразование объекта jml в xml, поэтому я думаю, что docx4j будет предпочтительнее для вашего случая.
Я попробовал Apache POI, но проблема в том, что вы печатаете что-либо из файла docx (например: Чтобы напечатать все элементы "Heading1" из docx), он печатает множество плохих данных и пробелов. Docx4j избежит этих плохих данных, я попробовал.
Если вы имеете дело с документом docx, docx4j более удобен, чем Apache POI. Вы можете использовать следующие ссылки для изучения основ docx4j. Кроме того, есть хороший форум docx4j.
1. http://blog.iprofs.nl/2012/09/06/creating-word-documents-with-docx4j/ 2. http://www.smartjava.org/content/create-complex-word-docx-documents-programatically-docx4j?
Я не использовал docx4j, и я намерен попробовать его. Poi может обрабатывать только стандартные документы openxml. Файл Microsoft docx не поддерживает полностью формат openxml. Так много форматов может потерять использование poi. Docx4j утверждает, что он нацелен на поддержку 100% форматов файла docx. Я думаю, что он будет работать лучше.