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

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

Некоторые пояснения:

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

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

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

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

Ответ 1

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

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

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

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

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

Я не исследовал, может ли последний OpenOffice UNO создавать форматы документов Microsoft Open Office Open.

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

  • Это бесплатная
  • Он поддерживает несколько языков (например, Visual Basic, Java, С++ и т.д.).
  • Он не зависит от платформы (Windows, Linux, Unix и т.д.).

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

Ответ 2

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

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

Ответ 3

Вы можете использовать это: 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 *

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

Ответ 4

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

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

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

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

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

Ответ 5

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

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

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

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

Ответ 11

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

Ответ 12

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

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

Ответ 13

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

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

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

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

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

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

Ответ 14

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

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

Ответ 15

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

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

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

Ответ 16

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