Что такое хороший Java API для создания документов Word?

У меня есть новое приложение, над которым я буду работать, где я должен сгенерировать документ Word, содержащий таблицы, графики, оглавление и текст. Какой хороший API для использования? Насколько вы уверены, что он поддерживает графики, таблицы и таблицы? Каковы некоторые скрытые поиски в их использовании?

Некоторые разъяснения:

  • Я не могу вывести PDF-файл, ему нужен документ Word.
  • Они используют MS Word 2003 (или 2007), а не OpenOffice
  • Приложение работает на * nix app-server

Было бы неплохо, если бы я мог начать с шаблона doc и просто заполнить пробелы таблицами, графиками и т. Д.

Изменить: Несколько хороших ответов ниже, каждый со своими ошибками, насколько это касается моей нынешней ситуации. Трудно выбрать из них «окончательный ответ». Подумайте, я оставлю его открытым и надеюсь на создание лучших решений.

Редактировать: проект OpenOffice UNO, похоже, ближе всего к тому, что я просил. Хотя POI, безусловно, более распространен, он слишком незрелый для того, что я хочу.

В 2007 году мой проект успешно использовал интерфейс универсальных сетевых объектов OpenOffice.org (UNO) для программного создания документов, совместимых с MS Word (* .doc), а также соответствующих документов PDF из веб-приложения Java (инфраструктура Struts / JSP).

OpenOffice UNO также позволяет создавать таблицы, таблицы, презентации и т. Д., Совместимые с MS-Office. Мы смогли динамически создавать сложные документы Word, включая диаграммы и таблицы.

Мы упростили процесс, используя шаблонные документы MS-Word со вставками вложений, в которые вставлено программное обеспечение, однако вы можете полностью создавать документы с нуля. objective заключалась в том, чтобы программное обеспечение создавало документы отчетов, которые могли бы быть разделены и дополнены конечными пользователями, прежде чем конвертировать их в PDF для окончательной доставки и архивирования.

Вы можете произвольно создавать документы в форматах OpenOffice, если вы хотите, чтобы пользователи использовали OpenOffice вместо MS-Office. В нашем случае пользователи хотят использовать инструменты MS-Office.

UNO входит в комплект OpenOffice. Мы просто связали наше приложение Java с библиотеками, связанными с UNO в пакете. Имеется комплект разработчика OpenOffice Software Development Kit (SDK), содержащий примеры приложений и Руководство разработчика UNO.

Я не исследовал, может ли новейшая OpenOffice UNO генерировать форматы документов MS-Office 2007 Open XML.

Важными вещами в OpenOffice UNO являются:

  1. Это бесплатное ПО
  2. Он поддерживает несколько языков (например, Visual Basic, Java, C ++ и другие).
  3. Он не зависит от платформы (Windows, Linux, Unix и т. Д.).

Вот несколько полезных веб-сайтов:

  • Открытый офис
  • Руководство разработчика Open Office UNO
  • Форум разработчиков OpenOffice (особенно форумы «Макросы и API» и «Кодовые fragmentы»).

Я думаю, что POI Apache может справиться с этой задачей. Возможная проблема, зависящая от использования вашей цели, может быть вызвана тем, что HWPF все еще находится в раннем развитии.

HWPF – это набор API для чтения и записи документов Microsoft Word 97 (-XP) с использованием (только) Java.

Вы можете использовать это: http://code.google.com/p/java2word

Я реализовал этот API под названием Java2Word. с несколькими строками кода вы можете создать один документ Microsoft Word.

Например.:

IDocument myDoc = new Document2004(); myDoc.getBody().addEle(new Heading1("Heading01")); myDoc.getBody().addEle(new Paragraph("This is a paragraph...") 

Существует несколько примеров использования. В принципе вам понадобится один файл jar. Сообщите мне, нужна ли вам дополнительная информация о том, как ее настроить.

* Я написал это, потому что у нас была настоящая необходимость в проекте. Больше в моем блоге:

http: //leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html *

приветствие Леонардо

Изменить : проект по ссылке перенесен на https://github.com/leonardoanalista/java2word

Попробуйте Aspose.Words для Java, он работает на любой ОС, где установлена ​​Java.

Он выведет документ в DOC, DOCX или RTF, если вам нужен формат вывода MS Word. Все они одинаково хорошо поддерживаются.

Используя этот API, вы можете создать документ с нуля, буквально из узлов и установить их свойства форматирования. Вы также можете использовать DocumentBuilder, который предоставляет методы более высокого уровня, такие как создание строки таблицы, вставка поля и т. Д. Или вы можете копировать / вступать / перемещать части между существующим предварительно созданным документом, например, хотите собрать контракт, просто захватить и скопировать fragmentы из нескольких документов и Aspose.Words будут слияния стилей, форматирования списка и т. д. должным образом в результирующем документе.

Вы сможете вставить поле TOC с помощью Aspose.Words, но на сегодняшний день для поля TOC потребуется обновление поля, когда документ открывается в Microsoft Word. Тем не менее, мы собираемся выпустить полную поддержку полей TOC в начале 2010 года. Например, он будет строить полный TOC, как это делает MS Word.

Я нахожусь в команде Aspose.Words.

Это было упомянуто только кратко один раз, поэтому я хотел бы назвать библиотеку docx4j, поскольку у меня был больше успеха с docx4j, чем с чем-либо еще. Поддержка Apache POI для документов Word не очень хороша. Кроме того, в отличие от Aspose.Words, docx4j является библиотекой с открытым исходным кодом.

Единственный недостаток – с docx4j вам нужно создавать документы формата Office Open XML (docx), а не документы формата OLE2 (doc). Это формат по умолчанию для Word 2007, но Word 2003 и более ранние пользователи должны установить пакет совместимости.

Попробуйте Aspose.Words для java.

Aspose.Words для Java – это продвинутая (коммерческая) библиотека classов для Java, которая позволяет выполнять широкий спектр задач обработки документов непосредственно в ваших Java-приложениях.

Aspose.Words для Java поддерживает форматы DOC, OOXML, RTF, HTML и OpenDocument. С помощью Aspose.Words вы можете создавать, изменять и конвертировать документы без использования Microsoft Word.

Вы можете использовать Java COM-мост, например JACOB . Если это с клиентской стороны, другой вариант – использовать Javascript.

Я использовал Aspose.Words для слияния в .NET. Я считаю, что у них также есть версия Java.

Есть инструмент под названием JODConverter, который подключается к открытому офису, чтобы выставить его преобразователи формата файла, есть версии, доступные как webapp (сидит в tomcat), который вы отправляете, и инструмент командной строки. Я увольняю html на нем и конвертируюсь в .doc и pdf, так что он находится в довольно большом проекте, но не стал жить, но я думаю, что я его буду использовать. http://sourceforge.net/projects/jodconverter/

iText очень прост в использовании.

Если вы запрашиваете файлы doc, вы можете вызвать abiword (бесплатный многопроцессорный многопроцессорный текстовый процессор) из командной строки, он имеет несколько вариантов преобразования формата конвертации.

docx4j или poi, оба из которых являются ASL v2

@wondersofcomputing: iText на самом деле бесплатный и с открытым исходным кодом

После немного большего количества исследований я столкнулся с iText, PDF и RTF-файлом создания файлов. Я думаю, что я могу использовать генерацию RTF для создания Doc-читаемого файла, который затем может быть отредактирован с помощью Doc и повторно сохранен.

У кого-нибудь есть опыт работы с iText, используемым таким образом?

Билл, POI и iText API очень похожи с точки зрения программирования. Я работал с обоими и в прошлом, и нашел их простыми в использовании и хорошо документированными.

Благодаря iText вы получаете преимущество в том, что имеете возможность переключаться между форматами (RTF и PDF) с незначительными изменениями в коде. Если я правильно помню, контент выкладывается с использованием тех же вызовов, а затем устанавливается как PDF или RTF, используя несколько строк кода.

Однако я считаю, что форматирование в RTF ограничено по сравнению с DOC. Я не знаю, сможете ли вы реализовать расширенные функции, которые вы ищете (таблицы, встроенные изображения), без достаточного количества хлопот, если вообще.

Учитывая то, что вы сказали о том, что HWPF не обладает достаточной функциональностью для ваших нужд (я имею дело только со стороной Excel в POI), лучшим вариантом может быть убеждение в том, что PDF-файл является лучшей технологией для работы .

В прошлом я разработал текстовые файлы на основе XML. Я использовал .NET, но язык не должен иметь значения, поскольку он действительно XML. Это было не самое простое дело (был проект, который требовал его пару лет назад.) Они работают только в Word 2007 или выше, но все, что вам нужно, это технический документ Microsoft, который описывает, что делает каждый тег. Вы можете выполнить все, что хотите, с тегами так же, как если бы вы использовали Word (конечно, сначала немного больно.)

После немного большего количества исследований я столкнулся с iText , PDF и RTF-файлом создания файлов. Я думаю, что я могу использовать генерацию RTF для создания Doc-читаемого файла, который затем может быть отредактирован с помощью Doc и повторно сохранен.

У кого-нибудь есть опыт работы с iText, используемым таким образом?

Еще одна возможность, поскольку это веб-приложение.

Мне удалось отобразить HTML-страницу с типом MIME, установленным на «application / msword», что заставило браузер порождать Word, который импортировал html просто отлично, позволяя редактировать и сохранять так же, как если бы я вывел реальный Word-документ.

Таблицы отлично работают, но изображения я еще не работал. Это может быть так же просто, как просто тег в HTML, или мне, возможно, придется передать отдельную часть ответа, содержащую данные изображения в двоичном формате, или какой-либо другой метод, который я еще не придумал. 🙂

Несмотря на то, что это намного позже запроса, оно может помочь другим. Docmosis предоставляет Java API для создания документов в формате doc, pdf, odt с использованием документов в виде шаблонов. Он использует OpenOffice в качестве механизма для преобразования формата. Манипулирование документами и популяция выполняются самим Докмосом.

  • Использование Office Interop на веб-сайте ASP.net MVC6
  • Получение заголовков из документа Word
  • Как получить событие «KeyPress» из Word 2010 Addin (разработанное на C #)?
  • Преобразование Word doc, docx и Excel xls, xlsx в PDF с PHP
  • Заменить текст закладки в файле Word с помощью Open XML SDK
  • Ошибка «Определенный пользователем тип не определена»
  • Отправка HTTP-запросов с помощью VBA из Word
  • Вставка новых строк в Word с использованием OpenXML
  • Как конвертировать MS doc в pdf
  • Давайте будем гением компьютера.