あなたはdocxドキュメントをJavaオブジェクトとして読むのにどちらを使うのが良いのですか、そしてなぜですか?
言い換えると。ほとんどのWordタグをサポートするライブラリはどれですか。
開示:docx4jプロジェクトをリードしています
Docx4jはpptxおよびxlsxも処理できますが、主にdocx操作に使用されます。例として、執筆時のように、 docx4jフォーラム には約1000のトピックがあります。 pptxフォーラムにはボリュームの10%しかありません。
Docxドキュメントで何をしたいにせよ、docx4jはあなたを助けることができるはずです。一般的なワークフローの 単一ページの概要 があります。
多くの一般的な要件に対して、docx4jはより高レベルのAPIを提供します。これらには以下が含まれます:
Docxの作成/オープン/保存(もちろん)
さまざまなアプローチを使用したレポート/ドキュメントの生成:(i)変数置換、(ii)XMLデータバインディング(特に強力)、および(iii)差し込み印刷
HTML、XHTMLとしてエクスポート
PDFとしてエクスポート(フォントサポートあり)
それ以外の場合は、docxのJAXB表現を思いのままに操作できます。 JAXBはJavaコミュニティ標準であり、Java 6に含まれており、EclipseLinkのMOXyに強力な代替実装があります。 (POIはJAXBの代わりにXML Beanを使用します)
web app を使用して、docxを探索し、Javaコードを生成して、対応するJavaオブジェクトを作成できます。
もちろん、あなたが心に留めている特定のタスクがある場合、docx4jまたはPOIが特定の強みを持っている可能性があります。
Docx4jとPOIはどちらもASL v2ライセンスです。
docx4jは積極的にメンテナンスされています。そのソースコードは GitHub です。
さらに、必要に応じてdocx4jの商用サポートを利用できます。 MergeDocx などのいくつかの商用拡張も利用できます。
docx4jはOLE 2複合ドキュメント形式の its implementation のライブラリとしてPOIに依存しており、感謝しています。
Apache POIを試しましたが、問題はdocxファイルから何かを印刷するときです(例:docxからすべての "Heading1"要素を印刷するには)、大量の不良データと空白が印刷されます。 Docx4jはこの不正なデータを回避するため、試してみました。
Apache POIの主な焦点はスプレッドシートの処理にあると思いますが、Word文書を読み取る機能があり、それを行うためにxml Beanを使用しています。 Docx4jは主にjaxbを使用するdocxドキュメントを扱います。通常、jaxbはxmlにJavaオブジェクト変換を許可するため、docx4jがあなたのケースに適していると思います。
Docxドキュメントを扱っている場合、docx4jはApache POIよりも便利です。以下のリンクを使用して、docx4jの基本を学ぶことができます。また、docx4jのニースフォーラムがあります。
1 . http://blog.iprofs.nl/2012/09/06/creating-Word-documents-with-docx4j/ 2 . http://www.smartjava.org/content/create-complex-Word-docx-documents-programatically-docx4j ?