web-dev-qa-db-ja.com

リッチWordドキュメントを作成できるJava AP​​Iはありますか?

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

いくつかの説明:

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

テンプレートドキュメントから始めて、テーブル、グラフなどでいくつかのスペースを埋めることができたらいいですね。

編集:以下のいくつかの良い答え、それぞれが私の現在の状況に関する独自の欠点があります。それらから「最終的な答え」を選ぶのは難しい。私はそれを開いたままにしておき、より良い解決策が作成されることを願っています。

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

109
billjamesdev

2007年、私のプロジェクトではOpenOffice.orgの niversal Network Objects (UNO)インターフェイスを使用して、MS-Word互換ドキュメント(* .doc)とそれに対応するPDFドキュメントをプログラムで生成し、 Java Webアプリケーション(Struts/JSPフレームワーク)から。

OpenOffice UNOを使用すると、MS-Office互換のチャート、スプレッドシート、プレゼンテーションなどを作成することもできます。チャートや表を含む洗練されたWord文書を動的に作成することができました。

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

ユーザーがMS-Officeの代わりにOpenOfficeを使用するようにする場合は、オプションでOpenOffice形式のドキュメントを作成できます。この場合、ユーザーはMS-Officeツールを使用したいと考えています。

UNOはOpenOfficeスイートに含まれています。 Javaアプリをスイート内のUNO関連ライブラリに単にリンクしました。 OpenOffice Software Development Kit (SDK)は、サンプルアプリケーションとUNO開発者ガイドが含まれています。

最新のOpenOffice UNOがMS-Office 2007 Open XMLドキュメント形式を生成できるかどうかは調査していません。

OpenOffice UNOの重要な点は次のとおりです。

  1. フリーウェアです
  2. 複数の言語(Visual Basic、Java、C++など)をサポートしています。
  3. プラットフォームに依存しません(Windows、Linux、Unixなど)。

便利なWebサイトは次のとおりです。

54
Rob Garverick

Apache POI ができると思います。使用する目的によっては、HWPFがまだ初期の開発段階にあるという事実が原因である可能性があります。

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

30
Jorge Ferreira

これを使用できます: 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 *

乾杯レオナルド

Edit:リンク内のプロジェクトを https://github.com/leonardoanalista/Java2Word に移動しました

9
Leonardo

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

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

4
Joshua Born

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
romeok

Javaで Aspose.Words を試してください。

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

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

3
mutley

Open Officeにフックしてファイル形式コンバーターを公開するJODConverterというツールがあり、投稿するWebアプリケーション(Tomcatに配置)として使用可能なバージョンとコマンドラインツールがあります。私はそれでhtmlを発火し、.docとpdfに変換しましたが、かなり大きなプロジェクトで成功しましたが、まだ公開されていませんが、使用するつもりです。 http://sourceforge.net/projects/jodconverter/

2
Andrew Hancox

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

2
Gulzar Nazim

Aspose.Words を使用して、.NETで差し込み印刷を行いました。彼らはJavaバージョンも持っていると思います。

2
tvanfosson

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

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

2
cam2574

少し調べてみると、PDFおよびRTFファイル作成APIであるiTextに出会いました。 RTF生成を使用してDocで読み取り可能なファイルを作成し、Docを使用して編集し、保存し直すことができると思います。

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

Bill、POIおよびiText APIは、プログラミングの観点から非常に似ています。私は過去に両方で仕事をしてきましたが、使いやすく、よく文書化されていました。

ITextを使用すると、コードを少し変更するだけで形式(RTFとPDF)を切り替えることができるという利点が得られます。記憶が正しければ、同じ呼び出しを使用してコンテンツがレイアウトされ、数行のコードを使用してPDFまたはRTFとして設定されます。

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

HWPFがあなたのニーズに十分な機能を持っていないことについてあなたが言ったことを考えると(私はPOIのExcel側のみを扱ってきました)最善の策はPDF仕事に最適なテクノロジーです

1
James McMahon

過去に純粋なXMLベースのWordファイルを開発しました。 .NETを使用しましたが、実際にはXMLであるため、言語は重要ではありません。これは簡単なことではありませんでした(数年前にそれを必要としていたプロジェクトがありました)。これらはWord 2007以降でのみ動作します。 Wordを使用している場合と同じ方法で、タグを使用して必要なすべてを実行できます(もちろん、最初はもう少し苦労します)。

1
schmoopy

docx4j またはpoi、両方ともASL v2

@wondersofcomputing:iTextは実際には無料でオープンソースです

1
JasonPlutext

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

0
Paul Jowett

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

MIMEタイプが「application/msword」に設定されたHTMLページをレンダリングできたため、ブラウザでWordが生成され、htmlが正常にインポートされ、実際のWord文書を出力するかのように編集および保存できました。

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

0
billjamesdev

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

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

0
billjamesdev