У меня есть новое приложение, над которым я буду работать, где мне нужно создать документ Word, содержащий таблицы, графики, оглавление и текст. Какой хороший API для этого использовать? Насколько вы уверены, что он поддерживает графики, ToC и таблицы? Какие скрытые ошибки при их использовании?
Некоторые пояснения:
- Я не могу вывести PDF-файл, им нужен документ Word.
- Они используют MS Word 2003 (или 2007), а не OpenOffice
- Приложение работает на сервере приложений * nix
Было бы неплохо, если бы я мог начать с шаблона документа и просто заполнить некоторые пробелы таблицами, графиками и т. Д.
Изменить: несколько хороших ответов ниже, каждый со своими недостатками в моей текущей ситуации. Трудно выбрать из них «окончательный ответ». Думаю, я оставлю его открытым и надеюсь, что будут созданы лучшие решения.
Изменить: проект OpenOffice UNO кажется наиболее близким к тому, о чем я просил. Хотя POI, безусловно, более распространен, он слишком незрел для того, что я хочу.
Ответы:
В 2007 году мой проект успешно использовал интерфейс универсальных сетевых объектов OpenOffice.org (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, в пакете. Доступен пакет разработки программного обеспечения (SDK) OpenOffice, содержащий примеры приложений и Руководство разработчика UNO.
Я не исследовал, может ли последняя версия OpenOffice UNO создавать форматы документов MS-Office 2007 Open XML.
Важными особенностями OpenOffice UNO являются:
Вот несколько полезных веб-сайтов:
источник
Я думаю, что Apache POI справится с этой задачей. Возможная проблема в зависимости от цели использования может быть вызвана тем, что HWPF все еще находится на ранней стадии разработки.
источник
Вы можете использовать это: http://code.google.com/p/java2word
Я реализовал этот API под названием Java2Word. с помощью нескольких строк кода вы можете создать один документ Microsoft Word.
Например.:
Есть несколько примеров использования. В основном вам понадобится один файл 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, который предоставляет методы более высокого уровня, такие как создание строки таблицы, вставка поля и т. Д. Или вы можете копировать / присоединять / перемещать части между существующим предварительно созданным документом, скажем, вы хотите собрать контракт, просто возьмите и скопируйте части из нескольких документов и Aspose.Words правильно объединит стили, форматирование списка и т. д. в итоговый документ.
Вы сможете вставить поле оглавления с помощью Aspose.Words, но на сегодняшний день поле оглавления потребует обновления поля при открытии документа в Microsoft Word. Тем не менее, мы собираемся выпустить полную поддержку полей оглавления в начале 2010 года. Например, оно построит полное оглавление, как это делает 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.
источник
Вы можете использовать Java COM-мост, например JACOB . Если это со стороны клиента, другим вариантом будет использование Javascript.
источник
Я использовал Aspose.Words для слияния почты в .NET. Я считаю, что у них тоже есть Java-версия.
источник
Есть инструмент под названием JODConverter, который подключается к открытому офису, чтобы открыть конвертеры формата файла, есть версии, доступные в виде веб-приложения (находится в tomcat), которое вы публикуете, и инструмент командной строки. Я использовал html и успешно конвертировал его в .doc и pdf, это в довольно большом проекте, еще не запущен, но я думаю, что собираюсь его использовать. http://sourceforge.net/projects/jodconverter/
источник
iText действительно прост в использовании.
Если вам требуются файлы doc, вы можете вызвать abiword (бесплатный легкий текстовый процессор с несколькими ОС ) из командной строки, у него есть несколько параметров преобразования формата преобразования.
источник
docx4j или poi, оба являются ASL v2
@wondersofcomputing: iText на самом деле бесплатный и с открытым исходным кодом
источник
Билл, POI и iText API очень похожи с точки зрения программирования. Я работал с обоими в прошлом и нашел их простыми в использовании и хорошо задокументированными.
С iText вы получаете возможность переключаться между форматами (RTF и PDF) с незначительными изменениями кода. Если я правильно помню, контент размещается с использованием тех же вызовов, а затем устанавливается как PDF или RTF с использованием нескольких строк кода.
Однако я считаю, что форматирование в RTF ограничено по сравнению с DOC. Я не знаю, сможете ли вы реализовать расширенные функции, которые вы ищете (таблицы, встроенные изображения), без приличных хлопот, если вообще.
Учитывая то, что вы сказали о том, что HWPF не имеет достаточной функциональности для ваших нужд (я имел дело только с Excel стороной POI), лучшим вариантом может быть убедить власть имущих в том, что PDF - лучшая технология для работы .
источник
Раньше я разрабатывал текстовые файлы на чистом XML. Я использовал .NET, но язык не имеет значения, поскольку это настоящий XML. Это было не самое простое решение (пару лет назад у него был проект, который требовал этого). Они работают только в Word 2007 или более поздних версиях, но все, что вам нужно, - это технический документ Microsoft, описывающий, что делает каждый тег. Вы можете выполнять все, что хотите, с помощью тегов так же, как если бы вы использовали Word (конечно, поначалу немного сложнее).
источник
После небольшого исследования я наткнулся на iText , API для создания PDF- и RTF-файлов. Я думаю, что могу использовать генерацию RTF для создания файла в формате Doc, который затем можно будет редактировать с помощью Doc и повторно сохранять.
У кого-нибудь есть опыт использования iText таким образом?
источник
Еще одна возможность, поскольку это веб-приложение.
Мне удалось отобразить HTML-страницу с типом MIME, установленным на «application / msword», что привело к тому, что браузер запустил Word, который импортировал html просто отлично, позволяя редактировать и сохранять, как если бы я выводил настоящий документ Word.
Таблицы работают нормально, но изображения у меня еще не появились. Это может быть так же просто, как просто тег в HTML, или мне, возможно, придется передать отдельную часть ответа, содержащую данные изображения в двоичном формате, или какой-либо другой метод, который я еще не придумал. :)
источник
Хотя это намного позже, чем запрос, это может помочь другим. Docmosis предоставляет Java API для создания документов в формате doc, pdf, odt с использованием документов в качестве шаблонов. Он использует OpenOffice в качестве движка для преобразования формата. Манипулирование документами и заполнение выполняется самим Docmosis.
источник