リッチなWord文書を作成できるJava APIはありますか? [閉まっている]
質問
表、グラフ、目次、テキストを含むWord文書を生成する必要がある場所で作業する新しいアプリがあります。これに使用するのに適したAPIは何ですか?グラフ、目次、および表をサポートしていると確信していますか?それらを使用する際の隠れた落とし穴は何ですか?
いくつかの説明:
- PDFを出力できません。Wordドキュメントが必要です。
- OpenOfficeではなくMS Word 2003(または2007)を使用しています
- アプリケーションは* nix app-serverで実行されています
テンプレートドキュメントから始めて、テーブル、グラフなどでいくつかのスペースを埋めることができたらいいと思います
編集:以下にいくつかの良い答えを示します。それぞれが私の現在の状況に関する欠点があります。 「最終回答」を選ぶのが難しいそれらから。開いたままにしておき、より良いソリューションが作成されることを願っています。
編集:OpenOffice UNOプロジェクトは、私が求めたものに最も近いようです。 POIは確かに主流ですが、私が望むものには未熟すぎます。
解決
2007年、私のプロジェクトはOpenOffice.orgのユニバーサルネットワークオブジェクトを正常に使用しました。 Java Webアプリケーション(Struts / JSPフレームワーク)からMS-Word互換ドキュメント(* .doc)および対応するPDFドキュメントをプログラムで生成する(UNO)インターフェイス。
OpenOffice UNOを使用すると、MS-Office互換のグラフ、スプレッドシート、プレゼンテーションなどを作成できます。グラフや表など、洗練されたWord文書を動的に作成することができました。
ブックマークが挿入されたテンプレートのMS-Wordドキュメントを使用してプロセスを簡素化しましたが、そこにソフトウェアがコンテンツを挿入しましたが、ドキュメントを最初から完全に構築できます。目標は、最終配信およびアーカイブ用にPDFに変換する前に、エンドユーザーが共有およびさらに調整できるレポートドキュメントをソフトウェアに生成させることでした。
ユーザーにMS-Officeの代わりにOpenOfficeを使用させたい場合は、オプションでOpenOffice形式のドキュメントを作成できます。この場合、ユーザーはMS-Officeツールを使用したいと考えています。
UNOはOpenOfficeスイートに含まれています。 Javaアプリをスイート内のUNO関連ライブラリにリンクするだけです。サンプルアプリケーションとUNO開発者ガイドを含む OpenOfficeソフトウェア開発キット(SDK)が利用可能です。
最新のOpenOffice UNOがMS-Office 2007 Open XMLドキュメント形式を生成できるかどうかは調査していません。
OpenOffice UNOの重要な点は次のとおりです。
- フリーウェアです
- 複数の言語(Visual Basic、Java、C ++など)をサポートしています。
- プラットフォームに依存しません(Windows、Linux、Unixなど)。
便利なWebサイトは次のとおりです。
- Open Officeホーム
- Open Office UNO開発者ガイド
- OpenOffice Developer's Forum (特に" Macros and API"と" Code Snippets"フォーラム)。
他のヒント
Apache POI がその役割を果たすことができると思います。目的に応じて考えられる問題は、HWPFがまだ初期の開発段階にあるという事実が原因である可能性があります。
HWPF 読み取り用のAPIのセットであり、 Microsoft Word 97(-XP)の作成 Javaのみを使用したドキュメント。
これを使用できます: 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
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チームに所属しています。
これは一度だけ簡単に言及されたので、docx4jで他の何よりも成功したので、docx4jライブラリーを呼び出したいと思います。 Apache POIのWordドキュメントのサポートはあまり良くありません。また、Aspose.Wordsとは異なり、docx4jはオープンソースライブラリです。
唯一の欠点は、docx4jでは、OLE2ベース(doc)形式のドキュメントではなく、Office Open XML(docx)形式のドキュメントを作成する必要があることです。これはWord 2007のデフォルト形式ですが、Word 2003以前のユーザーは互換性パックをインストールする必要があります。
Aspose.Words javaの場合。
Aspose.Words for Javaは、Javaアプリケーション内でさまざまなドキュメント処理タスクを直接実行できるJava用の高度な(商用)クラスライブラリです。
Aspose.Words for Javaは、DOC、OOXML、RTF、HTMLおよびOpenDocument形式をサポートしています。 Aspose.Wordsを使用すると、Microsoft Wordを使用せずにドキュメントを生成、変更、変換できます。
JACOB のようなJava COMブリッジを使用できます。クライアント側からの場合、別のオプションはJavascriptを使用することです。
.aで差し込み印刷を行うために Aspose.Words を使用しました。 Javaバージョンもあると思います。
オープンオフィスにフックしてファイル形式コンバーターを公開するJODConverterと呼ばれるツールがあり、投稿するwebapp(tomcatに配置)として利用できるバージョンとコマンドラインツールがあります。私はそれをhtmlで起動し、.docおよびpdfに変換しましたが、かなり大きなプロジェクトで成功していません。まだ公開されていませんが、使用するつもりです。 http://sourceforge.net/projects/jodconverter/
iText は本当に使いやすいです。
ドキュメントファイルを要求する場合、コマンドラインから abiword (無料の軽量マルチOSテキストプロセッサ)を呼び出すことができます。これには、いくつかの変換形式変換オプションがあります。
docx4j またはpoi、どちらもASL v2です
@wondersofcomputing:iTextは実際には無料でオープンソースです
もう少し調べてみると、PDFおよびRTFファイル作成APIであるiTextに出会いました。 RTF生成を使用して、Docで読み取り可能なファイルを作成し、Docを使用して編集し、再保存できると思います。
この方法で使用されるiTextの経験はありますか?
ビル、POIとiText APIはプログラミングの観点から非常に似ています。過去に両方で作業してきましたが、使いやすく、よく文書化されています。
iTextを使用すると、コードを少し変更するだけで形式(RTFとPDF)を切り替えることができるという利点が得られます。正しく覚えていれば、同じ呼び出しを使用してコンテンツがレイアウトされ、数行のコードを使用してPDFまたはRTFとして設定されます。
ただし、RTFのフォーマットはDOCと比較して制限されていると思います。あなたが探している高度な機能(テーブル、インライン画像)をまともな手間なしに実装できるかどうかはわかりません。
HWPFがニーズに十分な機能を備えていないことについてあなたが言ったことを考えると(私はPOIのExcel側のみを扱ってきました)、あなたの最善の策はPDFが最高のテクノロジーであると確信することです仕事のため。
過去に純粋なXMLベースのワードファイルを開発しました。私は.NETを使用しましたが、実際にはXMLなので言語は重要ではありません。これは簡単なことではありませんでした(数年前に必要だったプロジェクトがありました)。これらはWord 2007以降でのみ動作しますが、必要なのは各タグの機能を説明するMicrosoftのホワイトペーパーだけです。タグを使用して、Wordを使用している場合と同じ方法で、必要なすべてを実行できます(もちろん、最初は少し苦痛です)。
もう少し調査した結果、PDFおよびRTFファイルの作成である iText に出会いました。 API。 RTF生成を使用して、Docで読み取り可能なファイルを作成し、Docを使用して編集し、再保存できると思います。
この方法で使用されるiTextの経験はありますか?
これはWebアプリなので、さらに別の可能性があります。
MIMEタイプが" application / msword"に設定されたHTMLページをレンダリングできたため、ブラウザはHTMLを正常にインポートしたWordを生成し、編集と保存ができるようになりました。実際のWordドキュメント。
テーブルは正常に機能しますが、画像はまだ機能していません。 HTMLのタグと同じくらい簡単かもしれませんし、バイナリで画像データを含む応答の別の部分をストリーミングする必要があるかもしれません。 :)
これはリクエストよりもはるかに遅いですが、他の人を助けるかもしれません。 Docmosis は、ドキュメントをテンプレートとして使用して、doc、pdf、odt形式のドキュメントを作成するためのJava APIを提供します。 OpenOfficeをエンジンとして使用して、形式変換を実行します。ドキュメントの操作と取り込みは、Docmosis自体によって実行されます。