リッチなWord文書を作成できるJava APIはありますか?[閉まっている]


111

テーブル、グラフ、目次、テキストを含むWord文書を生成する必要がある場所で作業する新しいアプリがあります。これに使用するのに適したAPIは何ですか?グラフ、目次、表をサポートしていることをどの程度確信していますか?それらを使用する上でのいくつかの隠れた落とし穴は何ですか?

いくつかの説明:

  • PDFを出力できません。Word文書が必要です。
  • OpenOfficeではなくMS Word 2003(または2007)を使用している
  • アプリケーションは* nix app-serverで実行されています

テンプレートドキュメントから始めて、いくつかのスペースにテーブルやグラフなどを記入するだけでいいのですが。

編集:以下のいくつかの良い答えは、私の現在の状況に関してはそれぞれ独自の欠点があります。それらから「最終的な答え」を選ぶのは難しい。私はそれを開いたままにして、より良いソリューションが作成されることを望みます。

編集:OpenOffice UNOプロジェクトは、私が要求したものに最も近いようです。POIは確かに主流ですが、私が望むものには未熟すぎます。


26
この質問が最後に編集されてから30か月後、最初に質問されてから3年以上経過すると、この質問をどのように締めくくれば非常に生産的になるでしょうか。タイトルを「Java APIでリッチなWord文書を作成するにはどうすればよいですか?」に変更した場合 これで修正できるでしょうか?
billjamesdev 2012年


あなたは見ている可能性がありますdocxtemplater、https://github.com/edi9999/docxtemplater/私はDOCXテンプレートからdocxファイルを生成するために作成したライブラリである
edi9999

1
質問を再開する必要があります。質問はルールに合うように言い換えられたので、この質問を再開する権限を持つ人には誰でも連絡したいと思います。質問の前に:Word文書を作成するための優れたJava APIは何ですか?質問は次のとおりです。リッチなWord文書を作成できるJava APIはありますか?質問は、質問者が何を望んでいるかを明確に示しています。グラフ、目次、および表を使用してWord文書を作成することです。また、この質問は「良い」Java APIを求めなくなりました。良いことは誰にとっても異なります。
Sjoerd Pottuit 2018

回答:


56

2007年、私のプロジェクトはOpenOffice.orgのユニバーサルネットワークオブジェクト(UNO)インターフェイスを使用して、Java Webアプリケーション(Struts / JSPフレームワーク)からプログラムでMS-Word互換ドキュメント(* .doc)と対応するPDFドキュメントを生成しました。

OpenOffice UNOを使用すると、MS-Office互換のチャート、スプレッドシート、プレゼンテーションなどを構築することもできます。チャートやテーブルを含む高度なWordドキュメントを動的に構築できました。

ソフトウェアがコンテンツを挿入したブックマーク挿入を含むテンプレートMS-Wordドキュメントを使用することでプロセスを簡略化しましたが、ドキュメントを完全にゼロから構築できます。最終的な配信とアーカイブのためにPDFに変換する前に、エンドユーザーが共有およびさらに調整できるレポートドキュメントをソフトウェアで生成することが目標でした。

ユーザーがMS-Officeの代わりにOpenOfficeを使用する場合は、オプションでOpenOffice形式でドキュメントを作成できます。私たちの場合、ユーザーは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など)。

ここにいくつかの便利なウェブサイトがあります:


1
これまでのところ、これは私が求めたツールセットと最も互換性があります。「承認済み」とマークします。POIの方が主流であることは十分認識していますが、POIにはまだ必要な機能がありません。
billjamesdev 2009年

30

Apache POIでその仕事ができると思います。目的とする使用方法によっては、HWPFがまだ開発の初期段階にあることが原因で問題が発生する可能性があります。

HWPF は、Java(のみ)を使用してMicrosoft Word 97(-XP)ドキュメントを読み書きするためのAPIのセットです。


グラフとテーブルの可能性に関する知識はありますか?目次はどうですか?誰かがPOIでそれらのことをした実際の経験がありますか?
billjamesdev 2008年

1
POIのドキュメントを見ると、このHWPFは開発の非常に早い段階にあり、主に.docからテキストを読み取ることができますが、「複雑な」ドキュメントの動的な作成はできません。
billjamesdev 2008年

私はそれがより複雑なグラフ/表などを処理するとは思わない
ブライアン・アグニュー


9

あなたはこれを使うことができます:http : //code.google.com/p/java2word

Java2Wordと呼ばれるこのAPIを実装しました。数行のコードで、1つのMicrosoft Word文書を生成できます。

例えば。:

IDocument myDoc = new Document2004();
myDoc.getBody().addEle(new Heading1("Heading01"));
myDoc.getBody().addEle(new Paragraph("This is a paragraph...")

いくつかの使用例があります。基本的には、1つのjarファイルが必要です。設定方法についてさらに詳しい情報が必要な場合はお知らせください。

*私がこれを書いたのは、プロジェクトで本当に必要なことが1つあったからです。私のブログの詳細:

http://leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html *

レオナルドを乾杯

編集:リンク内のプロジェクトをhttps://github.com/leonardoanalista/java2wordに移動


1
実際のMS Wordを使用してテストしましたか?私はOpenOfficeとLibreOfficeがWindowsでMSWordを読むことができないファイルを作成することに成功しました。(私はcode.google.com/p/java2word/issues/detail?id=16でこの問題を報告しました
Stein G. Strindhaug

2
OpenOfficeを使用してjava2wordで生成されたファイルを開くことができません。Office 2010で
正常に動作します

.docxファイルの作成をサポートしていますか?@Leonardo
MaheshVarma 2013


4

Aspose.Words for Javaを試してください。JavaがインストールされているすべてのOSで動作します。

MS Word出力形式が必要な場合は、ドキュメントをDOC、DOCX、またはRTFに出力します。すべてが等しくサポートされています。

このAPIを使用すると、文字どおりノードからドキュメントを最初から作成し、そのフォーマットプロパティを設定できます。テーブル行の作成、フィールドの挿入など、より高レベルのメソッドを提供するDocumentBuilderを使用することもできます。または、既存の事前に作成されたドキュメント間で部分をコピー/結合/移動することができます。複数のドキュメントからの断片とAspose.Wordsは、スタイル、リストのフォーマットなどを結果のドキュメントに適切にマージします。

Aspose.Wordsを使用してTOCフィールドを挿入できますが、現在のところ、Microsoft Wordでドキュメントを開いたときにTOCフィールドでフィールドを更新する必要があります。ただし、2010年の初めにTOCフィールドの完全なサポートをリリースする予定です。たとえば、MS Wordと同様に完全なTOCを構築します。

私はAspose.Wordsチームに所属しています。


4

それは簡単に一度だけ言及されたので、docx4jで何よりも成功したので、docx4jライブラリを呼び出したいと思います。Apache POIによるWord文書のサポートはあまり良くありません。また、Aspose.Wordsとは異なり、docx4jはオープンソースライブラリです。

唯一の欠点は、docx4jでは、OLE2ベース(doc)形式のドキュメントではなく、Office Open XML(docx)形式のドキュメントを作成する必要があることです。これはWord 2007のデフォルトの形式ですが、Word 2003以前のユーザーは互換パックをインストールする必要があります。


3

Aspose.Words for javaをお試しください。

Aspose.Words for Javaは、Javaアプリケーション内でさまざまなドキュメント処理タスクを直接実行できる、Java用の高度な(商用)クラスライブラリです。

Aspose.Words for Javaは、DOC、OOXML、RTF、HTMLおよびOpenDocument形式をサポートしています。Aspose.Wordsを使用すると、Microsoft Wordを使用せずにドキュメントを生成、変更、および変換できます。


2

JACOBのようなJava COMブリッジを使用できます。クライアント側からの場合は、JavaScriptを使用することもできます。


ありがとう、しかし、これはWindowsマシンで実行する必要があるようです、いいえ?これを読んだ後、ホストマシンのOSを明確にしましたが、情報に感謝します。
billjamesdev 2008年

WebサーバーマシンでJACOBを使用するには、Microsoft Word自体をインストールする必要があります。これは、COMインターフェースを介してWordドキュメントを作成および操作するには、Wordアプリケーションの実際のインスタンスを起動する必要があるためです。一般に、マルチユーザーサーバーでのWord + COMの使用は、Wordがそのような使用のために設計されていないため、非常に問題があります。たとえば、ドキュメントの一部の複製は、SelectionオブジェクトとWindowsクリップボードを使用して行われます。サーバーマシンの設定。私はこれにかなり火傷しました(ただし、いくつかの微調整を見つけました)
hello_earth '01 / 01/20


2

ファイル形式コンバーターを公開するためにオープンオフィスにフックするJODConverterと呼ばれるツールがあり、投稿するwebapp(tomcatにあります)として利用可能なバージョンとコマンドラインツールがあります。私はそれでhtmlを発射して.docとpdfに変換してきましたが、それはかなり大きなプロジェクトにあり、まだ稼働していませんが、使用するつもりです。 http://sourceforge.net/projects/jodconverter/


2

iTextは本当に使いやすいです。

コマンドラインからabiword(無料の軽量マルチOSテキストプロセッサ)を呼び出すことができるdocファイルを必要とする場合は、いくつかの変換形式変換オプションがあります。



1

もう少し調査した後、iText、PDFおよびRTFファイル作成APIに出くわしました。RTF生成を使用してDoc読み取り可能なファイルを作成し、Docを使用して編集して再保存できると思います。

この方法で使用されるiTextの経験はありますか?

Bill、POI、およびiText APIは、プログラミングの観点からは非常によく似ています。私は過去に両方を使用したことがありますが、どちらも使いやすく、十分に文書化されています。

iTextを使用すると、コードを少し変更するだけで、フォーマット(RTFとPDF)を切り替えることができるという利点があります。私が正しく覚えている場合、コンテンツは同じ呼び出しを使用してレイアウトされ、数行のコードを使用してPDFまたはRTFとして設定されます。

ただし、DOCに比べてRTFのフォーマットは限られていると思います。探している高度な機能(テーブル、インライン画像)を、面倒な手間をかけずに実装できるかどうかはわかりません。

HWPFに必要な機能が十分にない(私はPOIのExcel側しか扱っていない)とのあなたの言ったことを考えると、PDFがその仕事に最適なテクノロジーであるという力を納得させることが最善の策かもしれません


1

私は過去に純粋なXMLベースのワードファイルを開発しました。私は.NETを使用しましたが、言語は本当にXMLであるため、問題にはなりません。これは最も簡単なことではありませんでした(数年前に必要だったプロジェクトの場合)。これらはWord 2007以降でのみ機能しますが、必要なのは、各タグの機能を説明したMicrosoftのホワイトペーパーだけです。Wordを使用する場合と同じ方法で、タグを使用して必要なすべてを実行できます(もちろん、最初は少し面倒です)。


0

もう少し調査した後、私はiText、PDFおよびRTFファイル作成API に出会いました。RTF生成を使用して、Docを使用して編集して再保存できるDoc読み取り可能なファイルを作成できると思います。

この方法で使用されるiTextの経験はありますか?


私はiTextを使用してRTFにエクスポートしましたが、それは少し不安定です:たとえば、TOCはうまく機能せず、使用が非常に簡単ではありません(ドキュメントがない)
AlfaTeK

0

これはWebアプリなので、さらに別の可能性があります。

MIMEタイプを "application / msword"に設定してHTMLページをレンダリングすることができました。これにより、ブラウザーはHTMLを正常にインポートしたWordを生成し、実際のWordドキュメントを出力するかのように編集および保存できるようになりました。

テーブルは正常に機能しますが、まだ機能していない画像です。HTMLのタグと同じくらい簡単な場合もあれば、画像データを含む応答の別の部分をバイナリでストリーミングする必要がある場合や、まだ思いついていない他の方法がある場合もあります。:)


0

これはリクエストよりはるかに遅いですが、他の人を助けるかもしれません。 Docmosisは、ドキュメントをテンプレートとして使用して、ドキュメントをdoc、pdf、odt形式で作成するためのJava APIを提供します。OpenOfficeをエンジンとして使用して、フォーマット変換を実行します。ドキュメントの操作とポピュレーションはDocmosis自体によって実行されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.