Чи існує API Java, який може створювати багаті документи Word? [зачинено]


111

У мене є нова програма, над якою я працюю над тим, де мені потрібно створити документ Word, який містить таблиці, графіки, зміст та текст. Що для цього варто використовувати API? Наскільки ви впевнені, що він підтримує графіки, ToC та таблиці? Які існують приховані проблеми використання їх?

Деякі роз’яснення:

  • Я не можу вивести PDF, вони хочуть Word Word.
  • Вони використовують MS Word 2003 (або 2007), а не OpenOffice
  • Програма працює на * nix app-сервері

Було б добре, якби я міг почати з шаблону документа і просто заповнити пробіли таблицями, графіками тощо.

Редагувати: Кілька хороших відповідей нижче, кожен зі своїми помилками, що стосується моєї поточної ситуації. Важко вибрати з них «остаточну відповідь». Подумайте, я залишу це відкритим, і сподіваюся на створення кращих рішень.

Редагувати: Проект OpenOffice UNO здається найближчим до того, про що я просив. Хоча POI, безумовно, більш мейнстрім, він занадто незрілий для того, що я хочу.


26
Не впевнений, як закриття цього питання через 30 місяців після його останнього редагування та через 3 роки після його первинного запитання буде дуже результативним. Якщо я змінив заголовок на "Як створити багаті документи Word за допомогою API Java?" чи могло б це виправити?
billjamesdev

1
у випадку, якщо комусь потрібен повний огляд наявних java api esupu.com/open-source-office-document-java-api-review
Supun Sameera

Ви можете подивитися на docxtemplater, https://github.com/edi9999/docxtemplater/, що є бібліотекою, яку я створив для створення docx із шаблонів docx
edi9999

1
Питання слід знову відкрити. Питання було перероблено так, щоб відповідати правилам, тому я хотів би закликати того, хто має повноваження повторно відкрити це питання. Перед питанням було: Який хороший API Java для створення документів Word? Тепер питання: чи існує API Java, який може створювати багаті документи Word? Питання тепер чітко вказує на те, чого хоче запитувана особа: створення документів Word з графіками, документами та таблицями. Питання також більше не вимагає "хорошого" Java API. Добре для всіх різне.
Sjoerd Pottuit

Відповіді:


56

У 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 з бібліотеками, що стосуються ООН, в межах набору. Доступний комплект розробки програмного забезпечення OpenOffice (SDK), що містить приклади програм та посібник розробника ООН.

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

Важливі речі щодо OpenOffice UNO:

  1. Це безкоштовно
  2. Він підтримує кілька мов (наприклад, Visual Basic, Java, C ++ та інші).
  3. Це незалежно від платформи (Windows, Linux, Unix тощо).

Ось кілька корисних веб-сайтів:


1
Поки що це найбільш сумісний із набором інструментів, про який я попросив. Я відзначу це "прийнятим". Хоча я повністю усвідомлюю, що POI є більш мейнстрімом, він просто не має функціоналу, якого я хочу ще.
billjamesdev

30

Я думаю, POI AI може зробити цю роботу. Можлива проблема в залежності від використання, яке ви прагнете, може бути спричинене тим, що HWPF ще в ранньому розвитку.

HWPF - це набір API для читання та запису документів Microsoft Word 97 (-XP) за допомогою (лише) Java.


Будь-які знання можливостей графіка та таблиці? Як щодо змісту? Хтось має реальний досвід робити ці речі в POI?
billjamesdev

1
Дивлячись на документацію для POI, здається, що цей HWPF дуже рано розвивається, в основному дозволяє зчитувати текст з .doc, не дуже для динамічного створення "складних" документів.
billjamesdev

Я не вірю, що він обробляє складніші графіки / таблиці тощо.
Брайан Агнеу


9

Ви можете використовувати це: http://code.google.com/p/java2word

Я реалізував цей API під назвою Java2Word. за допомогою декількох рядків коду можна створити один документ Word 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


1
Ви протестували це за допомогою фактичного MS Word? Мені вдалося створити файли, які OpenOffice та LibreOffice можуть читати, але не MSWord у Windows. (Я повідомив про цю проблему на code.google.com/p/java2word/isissue/detail?id=16 )
Штейн Г. Стріндгауг

2
Не вдається відкрити файли, створені java2word за допомогою OpenOffice? Чудово працює з Office 2010
Ashika Umanga Umagiliya

Чи підтримує він створення файлів .docx? @Leonardo
MaheshVarma

Не вдома проект: github.com/leonardoanalista/java2word
vhunsicker

4

Спробуйте Aspose.Words для Java, він працює на будь-якій ОС, де встановлена ​​Java.

Він виведе документ у DOC, DOCX або RTF, якщо вам потрібен вихідний формат MS Word. Усі підтримуються однаково добре.

За допомогою цього API ви можете створити документ з нуля, буквально з вузлів і встановити їх властивості форматування. Ви також можете скористатися DocumentBuilder, який забезпечує такі методи вищого рівня, як створення рядка таблиці, вставлення поля і т.д. фрагменти з декількох документів та Aspose.Words стилі об'єднають, форматування списку тощо належним чином в отриманому документі.

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

Я в команді Aspose.Words.


4

Про це згадувалося лише коротко, тому я хотів би зателефонувати в бібліотеку docx4j, оскільки я мав більший успіх у docx4j, ніж будь-що інше. Підтримка POI для документів Word не дуже хороша. Крім того, на відміну від Aspose.Words, docx4j є бібліотекою з відкритим кодом.

Єдиний недолік полягає в тому, що при docx4j вам потрібно створити документи формату Office Open XML (docx), а не документи на базі OLE2 (doc). Це формат за замовчуванням для Word 2007, але Word 2003 та більш раннім користувачам потрібно буде встановити пакет сумісності.


3

Спробуйте Aspose.Words для Java.

Aspose.Words for Java - це розширена (комерційна) бібліотека класів для Java, яка дозволяє виконувати великий діапазон завдань з обробки документів безпосередньо у ваших додатках Java.

Aspose.Words для Java підтримує формати DOC, OOXML, RTF, HTML і OpenDocument. За допомогою Aspose.Words можна створювати, змінювати та конвертувати документи, не використовуючи Microsoft Word.


2

Ви можете використовувати Java COM міст, як JACOB . Якщо це з боку клієнта, іншим варіантом буде використання Javascript.


Дякую, але, схоже, це вимагатиме запуску на машині Windows, ні? Я уточнив ОС хост-машини, прочитавши це, але дякую за інформацію.
billjamesdev

Використання JACOB на веб-серверній машині вимагатиме встановлення самого Microsoft Word на ньому, оскільки для створення та керування документами Word через COM-інтерфейс потрібно з'ясувати фактичні екземпляри програми Word. Взагалі таке використання Word + COM на багатокористувацькому сервері є досить проблематичним, оскільки Word не призначений для такого використання - наприклад, дублювання частин документа традиційно робиться за допомогою об’єкта Selection та буфера обміну Windows, що немислимо в веб- налаштування серверної машини. я був дуже спалений цим (хоча знайшов декілька
твік


2

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


2

iText дуже простий у використанні.

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


1

docx4j або poi, обидва вони ASL v2

@wondersofcomputing: iText насправді безкоштовний і з відкритим кодом


1

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

Хтось має досвід роботи з iText, який використовується таким чином?

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

За допомогою iText ви отримуєте перевагу в можливості перемикатися між форматами (RTF і PDF) з незначними змінами коду. Якщо я добре пам'ятаю, вміст викладається за допомогою тих же дзвінків, а потім встановлюється як PDF або RTF, використовуючи кілька рядків коду.

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

З огляду на те, що ви сказали, що щодо недостатньої функціональності HWPF (я маю справу лише з POI на Excel), найкраще переконатись у тому, що PDF - це найкраща технологія для роботи .


1

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


0

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

Хтось має досвід роботи з iText, який використовується таким чином?


Я використовував iText для експорту на RTF, і це трохи лускаво: ТОЦ, наприклад, не так добре працює, і це дійсно не дуже просто у використанні (відсутні документи)
AlfaTeK

0

Ще одна можливість, оскільки це веб-додаток.

Мені вдалося відтворити HTML-сторінку із типом MIME, встановленим на "application / msword", що призвело до того, що браузер нерестує Word, який імпортує html просто чудово, дозволяючи редагувати та зберігати так само, як якщо б я вивів справжній документ Word.

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


0

Хоча це набагато пізніше запиту, воно може допомогти іншим. Docmosis забезпечує API Java для створення документів у форматі doc, pdf, odt, використовуючи документи як шаблони. Він використовує OpenOffice як двигун для здійснення перетворень формату. Маніпулювання документами та популяція здійснюється самим Докмозом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.