Какой хороший 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 в качестве механизма для преобразования формата. Манипулирование документами и популяция выполняются самим Докмосом.