Существует ли Java API, который может создавать насыщенные документы Word?[закрыто]

StackOverflow https://stackoverflow.com/questions/203174

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Некоторые уточнения:

  • Я не могу вывести 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, в составе пакета.Ан Комплект разработки программного обеспечения OpenOffice (SDK) доступен с примерами приложений и руководством разработчика UNO.

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

Важные особенности OpenOffice UNO:

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

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

Другие советы

Я думаю Апач POI может выполнить работу.Возможная проблема, зависящая от цели использования, может быть вызвана тем фактом, что 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, который предоставляет методы более высокого уровня, такие как создание строки таблицы, вставка поля и т. д.Или вы можете копировать/объединять/перемещать части между существующими предварительно созданными документами, скажем, вы хотите собрать контракт, просто возьмите и скопируйте части из нескольких документов, и Aspose.Words правильно объединит стили, форматирование списка и т. д. в результирующем документе.

Вы сможете вставить поле TOC с помощью Aspose.Words, но с сегодняшнего дня поле TOC потребует обновления поля при открытии документа в Microsoft Word.Однако мы собираемся реализовать полную поддержку полей TOC в начале 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.Слова для Явы.

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

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

Вы можете использовать мост Java COM, например ДЖЕЙКОБ.Если это со стороны клиента, другим вариантом будет использование Javascript.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top