Есть ли Java API, который может создавать богатые документы Word? [закрытый]
У меня есть новое приложение, над которым я буду работать, где мне нужно создать документ Word, содержащий таблицы, графики, оглавление и текст. Что такое хороший API для этого? Насколько вы уверены, что он поддерживает графики, TOC и таблицы? Что за скрытые уловки в их использовании?
некоторые уточнения:
- Я не могу вывести PDF, они хотят слово doc.
- они используют MS Word 2003 (или 2007), а не OpenOffice
- приложения работает на * nix app-server
было бы неплохо, если бы я мог начать с шаблона doc и просто заполнить некоторые пробелы таблицами, графиками и т. д.
Edit: несколько хороших ответов ниже, каждый со своими ошибками, насколько моя текущая ситуация. Трудно выбрать из них" окончательный ответ". Думаю, я оставлю его открытым и надеюсь, что будут созданы лучшие решения.
Edit: проект OpenOffice UNO, похоже, ближе всего к тому, что я просил. В то время как пои конечно, больше мейнстрима, это слишком незрело для того, что я хочу.
16 ответов:
в 2007 году мой проект успешно использовался OpenOffice.org s Универсальные Сетевые Объекты (UNO) интерфейс для программного создания MS-Word совместимых документов (*.doc), а также соответствующие PDF-документы из веб-приложения Java (структура Struts/JSP).
OpenOffice UNO также позволяет создавать совместимые с MS-Office диаграммы, электронные таблицы, презентации и т. д. Мы смогли динамически создавать сложные документы Word, включая диаграммы и таблицы.
мы упростили процесс с помощью шаблона MS-Word документов с закладками вставками, в которые программное обеспечение вставило содержимое, однако, вы можете создавать документы полностью с нуля. Цель состояла в том, чтобы программное обеспечение генерировало отчетные документы, которые могли бы быть совместно использованы и дополнительно изменены конечными пользователями, прежде чем конвертировать их в PDF для окончательной доставки и архивирования.
вы можете дополнительно создавать документы в форматах OpenOffice, если вы хотите, чтобы пользователи использовали OpenOffice вместо MS-Office. В нашем случае пользователи хотят использовать инструменты MS-Office.
UNO входит в комплект OpenOffice suite. Мы просто связали наше приложение Java с библиотеками, связанными с UNO, в комплекте. Ан OpenOffice Software Development Kit (SDK) доступен, содержащий примеры приложений и руководство разработчика UNO.
Я не исследовал, может ли последний OpenOffice UNO генерировать документ MS-Office 2007 Open XML форматы.
важные вещи о OpenOffice UNO являются:
- это бесплатная
- он поддерживает несколько языков (например, Visual Basic, Java, C++ и другие).
- он не зависит от платформы (Windows, Linux, Unix и т. д.).
вот некоторые полезные веб-сайты:
- Open Office home
- Open Office UNO Developer's Руководство
- форум разработчиков OpenOffice (особенно форумы" макросы и API "и" фрагменты кода").
Я думаю Apache 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 *
ура Леонардо
Edit: проект в ссылке перемещен в https://github.com/leonardoanalista/java2word
Попробуйте Aspose.Слова для Java, он работает на любой ОС, где установлена Java.
Он выведет документ в DOC, DOCX или RTF, если вам нужен формат вывода MS Word. Все они поддерживаются одинаково хорошо.
с помощью этого API вы можете создать документ с нуля, буквально из узлов и установить их свойства форматирования. Вы также можете использовать DocumentBuilder, который предоставляет методы более высокого уровня, такие как создание строки таблицы, вставка поля и т. д. Или вы можете копировать/соединять / перемещать части между существующим предварительно созданным документом, скажем, вы хотите собрать контракт, просто возьмите и скопируйте части из нескольких документов и Aspose.Слова будут объединять стили, форматирование списка и т. д. Правильно в результирующем документе.
вы сможете вставить поле TOC с помощью Aspose.Слова, но на сегодняшний день поле TOC потребует обновления поля при открытии документа в Microsoft Word. Тем не менее, мы собираемся выпустить полную поддержку полей TOC в начале 2010 года. Например, он будет строить завершите TOC, как это делает MS Word.
Я на Aspose.Слова команды.
Это было упомянуто только кратко один раз, поэтому я хотел бы вызвать библиотеку docx4j, так как у меня было больше успеха с docx4j, чем что-либо еще. Поддержка Apache POI для документов Word не очень хороша. Также, в отличие от Aspose.Слова, docx4j библиотека с открытым исходным кодом.
единственный недостаток заключается в том, что с docx4j вам нужно создавать документы формата Office Open XML (docx), а не документы формата OLE2 (doc). Это формат по умолчанию для Word 2007, но Word 2003 и более ранних пользователей необходимо будет установить пакет совместимости.
попробовать Aspose.Слова для java.
Aspose.Words for Java-это расширенная (коммерческая) библиотека классов для Java, которая позволяет выполнять широкий спектр задач обработки документов непосредственно в приложениях Java.
Aspose.Words for Java поддерживает форматы DOC, OOXML, RTF, HTML и OpenDocument. С Aspose.Слова можно создавать, изменять и преобразовывать документы без использования Microsoft Word.
вы можете использовать Java COM мост, как Яков. Если это со стороны клиента, другой вариант - использовать Javascript.
Я использовал Aspose.Слова чтобы сделать слияние почты в. NET.я считаю, что у них также есть версия Java.
есть инструмент под названием JODConverter, который подключается к open office, чтобы открыть его конвертеры форматов файлов, есть версии, доступные как веб-приложение (сидит в tomcat), которое вы публикуете, и инструмент командной строки. Я стрелял в html и конвертировал его .doc и pdf успешно это в довольно большом проекте, еще не вышли в эфир, но я думаю, что буду использовать его. http://sourceforge.net/projects/jodconverter/
iText очень проста в использовании.
Если Вам требуются файлы doc, вы можете позвонить abiword (free lightweigh multi-os text procesor)из командной строки, он имеет несколько вариантов преобразования формата преобразования.
docx4j или poi, оба из которых являются ASL v2
@wondersofcomputing: iText на самом деле бесплатный и с открытым исходным кодом
после небольшого исследования я наткнулся на iText, API для создания PDF и RTF-файлов. Я думаю, что могу использовать поколение RTF для создания doc-читаемого файла, который затем можно редактировать с помощью Doc и повторно сохранять.
У кого-нибудь есть опыт работы с iText, используемым таким образом?
Билл, POI и iText API очень похожи с точки зрения программирования. Я работал с обоими в прошлом и нашел их простыми в использовании и хорошо зарегистрированный.
С помощью iText вы получаете преимущество в том, что можете переключаться между форматами (RTF и PDF) с незначительным изменением кода. Если я правильно помню, содержимое выкладывается с помощью тех же вызовов, а затем устанавливается как PDF или RTF, используя несколько строк кода.
однако я считаю, что форматирование в RTF ограничено по сравнению с DOC. Я не знаю, сможете ли вы реализовать дополнительные функции, которые вы ищете (таблицы, встроенные изображения) без приличного количества хлопот, если вообще есть.
учитывая то, что вы сказали, что о HWPF не хватает функциональности для ваших нужд (я имел дело только с Excel стороной POI) ваш лучший выбор может быть, чтобы убедить власть имущих, что PDF является лучшей технологией для работы.
Я разработал чистые XML-файлы на основе word в прошлом. Я использовал .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.
Comments