docx4j はじめに
このドキュメントの最新バージョンは、常に見つけることができます docx4j svn in /docs (内 Flat OPC XML Word 2007のフォーマット、 HTML 、および PDF )。
このドキュメントは、英語からGoogle翻訳を使用して翻訳された。 あなたが翻訳を向上させることができる場合はございましたら、お改良版で送信すること自由に感じ。 最新のは、常に英語版を参照してください。
とは何です docx4j?
docx4j "パッケージ"docxを解凍するためのライブラリであり、メモリ内の表現を作成するWordprocessingML XMLを解析する Java 。 最近のバージョンの docx4j また、Powerpointのpptxファイルをサポートします。
これは、同様のマイクロソフトのOpenXML SDKのですするには、概念です。NETを起動します
docx4j オープンソース、使用可能なApacheライセンス(v2)の下にあります。 オープンソースのプロジェクトとして、貢献を歓迎します。 をご参照ください docx4j フォーラムで http://dev.plutext.org/forums/ 詳細については、。
docx4j 大きく依存しています JAXBは、Java XMLバインディングのためのJCP標準。 あなたが考えることができます docx4j 他の中のJAXB()の実装として:
* オープン梱包規則
* WordprocessingML(ブリッド)は、XMLを開く部分の
* Presentation ML (pptx) part of OpenXML
ライブラリは100%忠実に旅行docxファイルを丸めるように設計され、すべての2007 WordMLをサポートします。 新しいWordのサポートは2010年の機能がすぐに追加されます。
docx4j プロジェクトによって後援される Plutext (www.plutext.com )。
か docx4j あなたのために?
docx4j docxの文書(および阻血プレゼンテーション処理)は、Javaです。
これは、古いバイナリ(*. doc)をファイルではありません。 ApacheのポイのHWPF時にこれらのについては、見てください。 (実際には、 docx4j の基本的な変換のためのHWPFを使用します。doc関連。docx)を
またそれはRTFファイルです。
あなたは、。NETプラットフォーム上でのdocx文書を処理する場合には、MicrosoftのOpenXML SDKのではなくなるはずです。
代替 docx4j は、Apacheのポイ。 私は特にお勧めします、その処理Excel文書です。 また、Word文書を処理するために、使用することができ、XMLBeansを使用します(以降にXMLBeansを使用する場合はJAXBは)それは良い選択があるかもしれない。
どのようなものの種類はあなたが行うことができます docx4j?
* docxのは(からファイルシステムを既存のオープンは、SMB / CIFSは、WebDAVは)VFSを使用して
* 新規作成のdocx
*は プログラム)ドキュメント(もちろんのdocx操作
* Template substitution; CustomXML binding
* のインポート(バイナリdoc)をApacheのポイHWPFを使用して
*は、 形式をプロデュース(/消費のWord 2007のxmlPackageをpkgの)
* 保存のdocxはJCRのに(にファイルシステムとしてのdocxすなわち、圧縮)、または()解凍
*は、 適用フィルタ変換共通など、
* PDFファイルまたはエクスポートのHTML
* 差分)はコントロールのコンテンツ/比較ドキュメントや、段落をSDTを(
* フォントのサポート(フォントの置換、文書の使用に埋め込まれた任意のフォント)
プロジェクトを使用 docx4j
Docx4allはSwingベースのワードプロセッサです。
Word 2007のPlutextのコラボレーションは、使用 docx4j サーバー、独立してバージョン管理することができますより小さな断片に細断処理Word文書に。
あなたのプロジェクトをご希望の場合はご連絡くださいPlutextはここに記載すること。
どのようなWord文書をサポートしてですか?
docx4j / docx文書によるまたはWord 2007、または互換機能パックをインストールしている以前のバージョンの作成の読み書きができる。
関連部品の docx4j ECMAのスキーマから生成されます。
これは、/ Word 2003でXML文書を読み書きすることはできません。 これらの主な問題は、XML名前空間が異なっています。
docx4j 2010 docxファイルをWordをサポートします。
使用 docx4j バイナリ
あなたの最新バージョンをダウンロードすることができます docx4j から http://dev.plutext.org/docx4j/
一般的に、我々は現在、毎晩、ビルドに対する最新の正式リリース以来、多くの場合、数ヶ月古いことができる開発された。
支援のjarファイルは。tar.gzのバージョン、または関連するサブディレクトリで見つけることができます。
使用して docx4j 介して Maven
Maven POM で見つけることができます http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/m2/org/docx4j/docx4j
JDKバージョン
あなたが使用する必要 Java 1.5+。
これは、JAXBのためです 1 。 1.4場合使用する必要が場合は、retrotranslatorすることができます 伝えて それが動作します。
JAXBは約単語
docx4j JAXBは整列し、メイン文書の一部、スタイルの部分を含むWordprocessingMLドキュメント内の主要な部分を、マーシャリング解除使用して、テーマの一部、およびプロパティの部品。
JAXBのは、SunのJava 6のディストリビューションではなく、1.5に含まれています。 ですから、1.5のJDKを使用している場合は、あなたのクラスパスにJAXBの2.1.xのが必要になります。
ビットの docx4jなど、 org.docx4j.wml と org.docx4j.dml JAXBはのxjcはを使用して生成された。 我々は、特にwml.xsdスキーマを変更ように、キーによりクラスがもう少し人間に優しい(すなわちCT_とST_としないすべてのスタートです)。
Log4jの
docx4j ログは、log4jを使用します。 ログを有効にするには、あなたのクラスパスにlog4.propertiesまたは刈Ⅲが必要です。 たとえば、参照してください http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/resources/log4j.xml
Javadoc
Javadocはオンラインで閲覧またはダウンロードするために、ディレクトリで見つけることができます http://dev.plutext.org/docx4j/
docx4j ソースコード
現在のソースコードのコピーを入手するには:
svn co http://dev.plutext.org/svn/docx4j/trunk/docx4j docx4j
また、それは、、オンラインで閲覧することができます:
http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/
ビルディング docx4j ソースから
コマンドライン - クイックガイド
"クイック"という場合は、専門家とアリインストールされて提供されます。 私たちは、実際のビルドを実行する依存関係はないつかむのmavenを使用してください。
ディレクトリを作成すると呼ばれるワークスペースは、はそれにcdします。
svn co http://dev.plutext.org/svn/docx4j/trunk/docx4j docx4j
オープンpom.xmlは、次の行を見つける
<systemPath>/usr/lib/jvm/java-6-sun/jre/lib/rt.jar</systemPath>
それはあなたのシステムに合わせて編集します。
mvn install
ant dist
これはantコマンドはdocx4j.jarを作成し、それを配置するとdistディレクトリ内のすべての依存関係。
Eclipseの
前提条件
* Eclipseはインストールされて
* EclipseのインストールSubversionのプラグインなど http://subclipse.tigris.org/update_1.2.x
* インストール Maven and the Eclipse plugin
また、上述したように:
* Javaの1.5または6
* JAXBは: 両方の JAXB実装は、Javaに含ま6と 2.xの リファレンス実装です。 (これは)のいずれかでサポートの価格はランタイム
手順
* File > New "Project .." > SVN > Checkout Projects from SVN
* 新規に作成されたリポジトリーロケーション; URLをさ http://dev.plutext.org/svn/docx4j
* フォルダをクリック "trunk"し、[docx4j; [次へ]
* あなたはプロジェクトとしてそれをチェックアウトしたいウィザードをプロジェクト設定を使用新
*は、 その後、プロジェクトを選択してJavaの> Javaの。[次へ]
* 選択してプロジェクト名(たとえば、'docx4j')次へをクリック
* [完了](私達が)ステップへのビルド設定をJavaをよ定義で
他のダイアログボックスのカップル後、あなたのワークスペースに新しいプロジェクトが必要です。
今、我々は設定する必要がクラス パスの構築 に等をEclipseようにすることができますが。
* タブのビルドパスソース>ビルドパスをJava>をパス>は、構成のビルド
* srcの上をクリックし、ボタンを押して削除する
*は、 次にをクリックして""フォルダを追加して、java'srcの移動を介して/メイン/ javaをダニ'
*は、 その後、追加 src/svg, src/diffx and src/pptx4j/java 同様に
Mavenのビット:
*は、 参照してください-確認インストールされてよろしいがあるMavenは、そのプラグインが前提で動作します。
* ランmvnでインストール docx4j あなたはコマンドプロンプト(念のため)
* 上のプロジェクトをクリックし右> Mavenの2>を有効にする
プロジェクトがエラーであることのEclipseが今で働く2。
既存のdocxドキュメントを開きます。
org.docx4j.openpackaging.packages. WordprocessingMLPackage docxのドキュメントを表します。
ドキュメントを読み込むには、すべてあなたがしなければならないされます:
WordprocessingMLPackage wordMLPackage =
WordprocessingMLPackage.load(new java.io.File(inputfilepath));
このメソッドはまた、フラットのOPC XMLを読み込むことができますします。
その後、)メイン文書の一部を(/ document.xml単語得ることができます:
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
その後、あなたはその内容を操作することができます。
WordMLの概念
このはるかに超え何かをするには、基本的なWordMLの概念を理解している必要があります。
マイクロソフトのオープンパッケージ仕様によると、各docxの文書はパーツのファイルの数、最大圧縮構成されます。 パーツは、通常はXMLですが、(イメージの一部となるかもしれませんが、たとえば、)ではない。
にWordML導入は、ドキュメント、この範囲外です超えて。 あなたが1で非常に読みやすい導入を見つけることができます世紀パート 3(プライマー)でのエディション http://www.ecma-international.org/publications/standards/Ecma-376.htm または http://www.ecma-international.org/news/TC45_current_work/TC45_available_docs.htm (より良いリンクは、その最大圧縮ではないので)。
JAXBは:マーシャリングとアンマーシャリング
docx4j 一部を含む各クラスを表す。 たとえば、そこにあるMainDocumentPart クラス 。 XML部分からの継承 JaxbXmlPart 、いわゆる含まれているメンバjaxbElementを 。ときに一部の内容を操作したい場合は、jaxbElementその動作です。
場合はdocxの文書を使用して開く docx4j、 docx4j 自動的に マーシャリングを解除 (木の種類のJavaオブジェクトの内容は、各XML部分を強く jaxbElement)。
同様に、/ときに教えて docx4j 、docxファイルとしてこれらのJavaオブジェクトを保存する docx4j 自動的に マーシャリング jaxbElement 各パーツです。
場合によっては、マーシャリングまたはマーシャリング解除のものに自分自身になるでしょう。 クラス org.docx4j.jaxb.Context すべてのJAXBContextsで使わ定義 docx4j:
Jc |
org.docx4j.wml
|
jcThemePart |
org.docx4j.dml |
jcDocPropsCore |
org.docx4j.docProps.core org.docx4j.docProps.core.dc.elements org.docx4j.docProps.core.dc.terms |
jcDocPropsCustom |
org.docx4j.docProps.custom |
jcDocPropsExtended |
org.docx4j.docProps.extended |
jcXmlPackage |
org.docx4j.xmlPackage |
jcRelationships |
org.docx4j.relationships |
jcCustomXmlProperties |
org.docx4j.customXmlProperties |
jcContentTypes |
org.docx4j.openpackaging.contenttype |
jcPML |
org.docx4j.pml
|
アーキテクチャ
docx4j 3層があります:
1。
org.docx4j.openpackaging
OpenPackagingは、レベルの表記梱包処理のことをにオープン:にdocxファイルを解凍WordprocessingMLPackageと
から
その継承オブジェクトのセット;削除できるように/追加される部分がする。docxを保存
この層は、もともとOpenXML4Jに(これは、Apacheのポイで使用される)に基づいています。
部品は一般的にサブクラスです
org.docx4j.openpackaging.parts.JaxbXmlPart
部品は、ツリーに配置されます。 の部分は、子孫がある場合、それは必要があります
org.docx4j.openpackaging.parts.relationships.RelationshipsPart
その人の子孫の部品を識別します。 サンプルPartsList()がどのように作品を示しています次のセクションを参照してください。
JaxbXmlPartは、コンテンツツリーを持って:
public Object getJaxbElement() {
return jaxbElement;
}
public void setJaxbElement(Object jaxbElement) {
this.jaxbElement = jaxbElement;
}
2。
JAXBの
コンテンツ
ツリーは、モデル
の3つの階層の2番目のレベルは。
、コメント、フッタほとんどの部分は(を含むMainDocumentPart、スタイル、ヘッダー/
文末
/脚注)を使用する
org.docx4j.wml
(WordprocessingML);
wmlの
参照
org.docx4j.dml
(のDrawingML)必要に応じて。
これらのクラスは、Open XMLスキーマから生成された
3。
org.docx4j.model
本パッケージには2つの層は、余分な機能を提供する低、およびビルド徐々にさらに発展されている。
サンプル
で物事を行う方法パッケージorg.docx4j.samplesの例が含まれ docx4j。 これらが含まれます:
基本
* CreateWordprocessingMLDocument
* DisplayMainDocumentPartXml
* OpenAndSaveRoundTripTest
* OpenMainDocumentAndTraverse
出力/変換
* CreateHtml
* CreatePdf
* ExportInPackageFormat
* ImportFromPackageFormat
* AddImage
* ConvertEmbeddedImageToLinked
パーツの取り扱い
* CopyPart
* ImportForeignPart
* PartsList
* StripParts
雑多
* CompareDocuments
* CreateDocxWithCustomXml
* CustomXmlBinding
* DocProps
* Filter
* HyperlinkTest
* NumberingRestart
* UnmarshallFromTemplate
あなたがソースコードをインストールした場合、あなたはすでにこのパッケージがあるでしょう。
あなたは、あなたが、、オンラインで閲覧することができますしていない場合
http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/samples
様々なさも のサンプル文書は 、ディレクトリ/サンプルドキュメント、これらが最もチェックすることによってアクセスを簡単に docx4j SVNの。
パーツリスト
の理解を得るためにどのように docx4j 作品のdocx文書の構造は、実行することができます PartsList )阻血サンプルのdocxファイル(または。 ない場合は、それはパッケージが使用される部品がの階層を示します。 これは、一部を各か判断するに使用されるクラスはあなたをどの表し、ここでその部分はJaxbXmlPartです、それはクラスは何も言うことをjaxbElementは です。
例:
Part /_rels/.rels [org.docx4j.openpackaging.parts.relationships.RelationshipsPart]
containing JaxbElement:org.docx4j.relationships.Relationships
Part /docProps/app.xml [org.docx4j.openpackaging.parts.DocPropsExtendedPart]
containing JaxbElement:org.docx4j.docProps.extended.Properties
Part /docProps/core.xml [org.docx4j.openpackaging.parts.DocPropsCorePart]
containing JaxbElement:org.docx4j.docProps.core.CoreProperties
Part
/word/document.xml
[org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart]
containing JaxbElement:org.docx4j.wml.Document
Part /word/settings.xml [
org.docx4j.openpackaging.parts.WordprocessingML
.DocumentSettingsPart]
containing JaxbElement:org.docx4j.wml.CTSettings
Part /word/styles.xml [
org.docx4j.openpackaging.parts.WordprocessingML
.StyleDefinitionsPart]
containing JaxbElement:org.docx4j.wml.Styles
Part /word/media/image1.jpeg [ org.docx4j.openpackaging.parts.WordprocessingML .ImageJpegPart]
docxを走査
OpenMainDocumentAndTraverse.java サンプルディレクトリにどのようにdocxののJAXB表現を走査する方法を示します。
JAXBは約1厄介なことは、そのオブジェクトは、テーブルのように表すことができると言うが org.docx4j.wml.Tbl (あなたが期待する)。 またはそれに包まれる可能性があります javax.xml.bind.JAXBElementその場合、実際のテーブルを取得するには、のような何かをする必要があります:
if ( ((JAXBElement)o).getDeclaredType().getName().equals( "org.docx4j.wml.Tbl" ) )
org.docx4j.wml.Tbl tblは=(org.docx4j.wml.Tbl)((JAXBElement)o)の。GetValueメソッド();
新しいdocxファイルを作成する
新しいdocxを作成するには:
/ /パッケージの作成
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
/ /それを保存する
wordMLPackage.save(new java.io.File("helloworld.docx") );
それだけです。
createPackage() は便利なメソッドです。:
/ /パッケージの作成
WordprocessingMLPackage wordMLPackage = new WordprocessingMLPackage();
/ /作成メイン文書の一部(ワード/ document.xml)
MainDocumentPart wordDocumentPart = new MainDocumentPart();
/ /作成メイン文書の一部のコンテンツ
ObjectFactory factory = Context.getWmlObjectFactory();
org.docx4j.wml.Body body = factory .createBody();
org.docx4j.wml.Document wmlDocumentEl = factory .createDocument();
wmlDocumentEl.setBody(body);
/ /一部のコンテンツを配置
wordDocumentPart.setJaxbElement(wmlDocumentEl);
/ /パッケージの関係をメイン文書の一部を追加します。
必要に応じて/ /()を作成する
wmlPack.addTargetPart(wordDocumentPart);
テキストの段落を追加する
MainDocumentPartは メソッドを含む:
public org.docx4j.wml.P addStyledParagraphOfText(String styleId, String text)
あなたは段落を指定されたスタイルを使用して追加するには、そのメソッドを使用できます。
XMLは、我々は次のようになります作成するために探している:
<
w:p
xmlns:w
="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
>
<
w:r
>
<
w:t
>
Hello world
</
w:t
>
</
w:r
>
</
w:p
>
addStyledParagraphOfTextは 、オブジェクトの構造をJAXBの方法構築し、ドキュメントに追加するそれを。
ObjectFactory factory = Context.getWmlObjectFactory();
/ /作成項
org.docx4j.wml.P para = factory.createP();
/ /作成のテキスト要素
org.docx4j.wml.Text t = factory.createText();
t.setValue(simpleText);
/ /実行を作成する
org.docx4j.wml.R run = factory.createR();
run.getRunContent().add(t);
para.getParagraphContent().add(run);
/ /ここでドキュメントの本文に私達の段落を追加します。
Body body = this.jaxbElement.getBody();
Body.getEGBlockLevelElts().add(para)
また、XMLをマーシャリングで段落を作成できます:
/ /と仮定すると文字列のXMLは、上記のXMLを含む
org.docx4j.wml.P para = XmlUtils.unmarshalString(xml);
この動作するためには、そのすべての名前空間が正しく文字列の中で宣言されるようにする必要があります。
パーツを追加する
あなたは新しいスタイルの部分を追加したい場合は? ここではその方法:
/ /作成スタイルの一部
StyleDefinitionsPart stylesPart = new StyleDefinitionsPart();
/ /読み込むそれをデフォルトのスタイルで
stylesPart.unmarshalDefaultStyles();
/メイン文書の一部との関係をスタイルの一部を追加/
wordDocumentPart.addTargetPart(stylesPart);
あなたは、ヘッダーまたはフッターを追加すると同じアプローチを取ると思います。
場合はこの方法を部分を追加すると、自動的にソースの部分の関係を一部追加されます。
一般的に、また、一部(との関係IDを使用して)メイン文書パーツへの参照を追加する必要があります。 これは、画像に、ヘッダーとフッターを適用します。 (コメントは、脚注と文末脚注は、あなたがメイン文書の一部に追加するものでは少し違う、アールは、個々のコメント/脚注/文末脚注参照)です。
にdocxの(X)HTMLの
docx4j XSLTはXHTMLにdocxを変換するために使用:
AbstractHtmlExporter exporter = new HtmlExporterNG2();
/ /は* 2に注意が
/ /するStreamResult(この場合、出力ストリーム内の)をお書きください
OutputStream os = new java.io.FileOutputStream(inputfilepath + ".html" );
javax.xml.transform.stream.StreamResult result
=
new
javax.xml.transform.stream.StreamResult(os);
exporter.html(wordMLPackage, result,
inputfilepath + "_files" );
あなたが生成されたHTMLを見つけるきれいです。
docx4j XSLTは自体は簡単に保たれる重い物を持ち上げるので、JavaのXSLT拡張関数を使用します。
PDFファイルをdocxを
docx4j XSLは、ため、これでPDFを作成するために使用することは変えることができます生成されます。
現在は、Apache FOPのが統合されて docx4j PDFファイルを作成するため。 (すぐに、私たちは、物事を変更する docx4j のための、あなたのレンダラのための優先で使用するためかどうか、それはFOPの、or XEPなどなどの商用ツールを's)を生成します
PDFを作成するには:
/ /フォントのアイデンティティ最良のMicrosoft Windows上でのマッピング
wordMLPackage.setFontMapper( new IdentityPlusMapper());
/ / Aコンバータをセットアップする
org.docx4j.convert.out.pdf.PdfConversion c
=
new
org.docx4j.convert.out.pdf.viaXSLFO.Conversion(wordMLPackage);
/ /出力ストリームに書き込む
OutputStream os = new java.io.FileOutputStream(inputfilepath + ".pdf" );
c.output(os);
画像処理
いつは、Word 2007で文書に画像を追加すると、一般的に新規パーツとして(あなたは結果のdocxに参加を見つけることがすなわち、ベース64形式で画像を含む)追加されます。
いつで文書を開く docx4j、 docx4j will create an image part representing it.
また、リンクされたイメージを作成することです。 この例では、イメージがdocxのパッケージでは、埋め込まれていないのではなく、その外部の場所で参照されます。
docx4j'のS BinaryPartAbstractImage クラスを使用する両方の埋め込まれた(適切な関係を持つalong画像にリンク)を作成できるようにするためのメソッドを含んでいます。
/ **
を作成する*指定されたバイト配列から画像の一部にそれを添付
*メイン文書の一部であり、それを返す.* /
public static BinaryPartAbstractImage createImagePart(WordprocessingMLPackage wordMLPackage,
byte [] bytes)
/ **
を作成する*指定されたバイト配列から画像の一部は、ソースの一部に添付
*(メイン文書の一部を例えば、ヘッダー部分など)、および.*、それを返します/
public static BinaryPartAbstractImage createImagePart(WordprocessingMLPackage wordMLPackage,
Part sourcePart, byte [] bytes)
/ **
を作成する*リンクされたイメージの一部であり、指定されたソースの一部のrelとしてそれを添付
*(一部を例えばヘッダ) * /
public static
BinaryPartAbstractImage createLinkedImagePart(
WordprocessingMLPackage wordMLPackage, Part sourcePart, String fileurl)
イメージについては、ドキュメントに表示されるにも、メイン文書の一部に適切なXMLが必要です。 このXMLは、2つの基本形態をとることができます:
* Word 2007に同梱 :描画フォーム を
<w:p>
<w:r>
<w:drawing>
<wp:inline distT ="0" distB ="0" distL ="0" distR ="0" >
<wp:extent cx ="3238500" cy ="2362200" / >
<wp:effectExtent l ="19050" t ="0" r ="0" b ="0" / >
:
<a:graphic >
<a:graphicData .. >
<pic:pic >
:
<pic:blipFill>
< a:blip r:embed ="rId5" / >
:
< / pic:blipFill>
:
< / pic:pic>
< / a:graphicData>
< / a:graphic>
< / wp:inline>
< / w:drawing>
< / w:r>
< / w:p>
* Word 2003でのVMLベースワット :PICT形式のフォーム
<w:p>
<w:r>
<w:pict>
<v:shapetype id ="_x0000_t75" coordsize ="21600,21600" .. >
<v:stroke joinstyle ="miter" / >
<v:formulas>
:
< / v:formulas>
:
< / v:shapetype>
<v:shape .. style ="width:428.25pt;height:321pt" >
< v:imagedata r:id ="rId4" o:title ="" / >
< / v:shape>
< / w:pict>
< / w:r>
< / w:p>
docx4j 2007のWordができます作成同梱 :図面を/ WPを採用:インラインフォーム をあなたのために:
/ **
* Create a <wp:inline> element suitable for this image,
*どのリンクすることができますかwに埋め込ま:π/ワット:R / Wを:図面。
* If the image is wider than the page, it will be scaled
*自動的に。 Javadocを参照他の署名のために。
* @パラメータの テキストを、例えば任意のfilenameHint元のファイル名
* @パラメータの テキストはalt付けられたようにHTMLの
* @パラメータ ID1のidは文書固有の
* @パラメータ id2の別のID文書ユニークで
* @パラメータの リンクが trueである場合は、このことに 埋め込まれていないリンク する* /
public Inline createImageInline(String filenameHint, String altText,
int id1, int id2, boolean link)
そのことができますに追加し、ワット :rを/ワット:図面を。
最後に、と docx4j場合は、フォーマットのWord(例えばPDFファイル)でPNG形式、サポートされる形式ですにサポートされてから画像を変換することができます。 このについては、 docx4j 使用して ImageMagickが。 だから機能を場合は、この使用する場合はしたい場合は、ImageMagickをインストールする必要があります。 docx4j ImageMagickは使用して呼び出します:
Process p = Runtime.getRuntime().exec(
"imconvert -density "
+ density +
" -units PixelsPerInch - png:-"
);
名注imconvert を幹部 へのパスをいっぱい供給する必要がないことを私たちはこれを使用。 あなたはそれを収容する必要があります。
テキスト抽出
簡単な方法はdocxのテキストをから抽出し、使用することですtextutilsを
public static void extractText(Object o, Writer w)
順番出力WriterにテキストにはSAXのContentHandlerを介して渡されるオブジェクトをマーシャリングします。
テキスト置換
テキストの置換は非常に簡単です表される、探している場合は、文字列を提供org.docx4j.wml.Textフォーム オブジェクト の場合は期待する。
しかし、それは必ずしもされません。 文字列は、テキスト全体壊れたされる可能性が次のいずれかの理由で実行されます:
* 単語部分が)大胆なフォーマットに(別の例
* スペル/文法
* 編集順序(rsid)
docx4j 最終的には、これらのケースに対応しません今はありません。
題目は、するには、さまざまな方法でテキスト置換を行うことができます、例えば:
* メイン文書の一部を横断すると見て org.docx4j.wml.Text オブジェクト
* 再度アンマーシャリングをマーシャリングする文字列は、/検索が、交換
docx4j XmlUtilsも含まれていますです:
/ **
*はwml)は$を(key1が含まれている文字列を与えると、$(key2の)を返すに適し
*オブジェクト* /
public static Object unmarshallFromTemplate(String wmlTemplateString,
java.util.HashMapのは)String>はマッピングを<String,
、文字列を含む上で動作するUnmarshallFromTemplateの例を参照してください:
<w:p>
<w:r>
<w:t> My favourite colour is ${colour} . < / w:t>
< / w:r>
< / w:p>
<w:p / >
<w:p>
<w:r>
<w:t> My favourite ice cream is ${icecream} . < / w:t>
< / w:r>
< / w:p>
ヒントとコツ
フラットのOPC XML形式での作業
場合はdocxの文書の内部を観察するには、それが痛みのビットは、関連する部分を見て解凍する必要があることです。
がこの問題を回避2つの方法があります。
1つは、 http://www.codeplex.com/PackageExplorer 、これdocxファイルを解凍することができますし、かなりの部分を印刷します。
もう1つは)WordのXMLドキュメント(*. xmlをとしてdocxを保存することです。 これはXPontusなどのXMLエディタで開くことができます単一のXMLファイルを生成します。
docx4j 、フラットのOPC XMLファイルを開くことができますし、それらに保存します。
フラットのOPCのXMLファイルを開くには:
WordprocessingMLPackage wordMLPackage =
WordprocessingMLPackage.load(new java.io.File(inputfilepath));
フラットのOPC XMLとして保存するには:
wordMLPackage.save(new java.io.File(outputfilepath));
どちらの場合では、フラットのOPCコードが使用される場合にのみ、ファイル拡張子が。xmlを。
UnmarshalFromStringしています。
文書)に挿入するときは、docxの文書を操作している、それはしばしばXMLの整列化スニペット(文字列は、段落を表すなどに便利です。
たとえば、指定された:
<
w:p
xmlns:w
="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
>
<
w:r
>
<
w:t
>
Hello world
</
w:t
>
</
w:r
>
</
w:p
>
することができます単に:
/ /と仮定すると文字列のXMLは、上記のXMLを含む
org.docx4j.wml.P para = XmlUtils.unmarshalString(xml);
クローニング
XmlUtils、次の方法のいずれかを使用JAXBオブジェクトのクローンを作成するには:
/ **クローンこのJAXBオブジェクトは、デフォルトのJAXBContextを使用します。 * /
public static <T> T deepCopy(T value)
/ **クローンこのJAXBオブジェクトの* /
public static <T> T deepCopy(T value, JAXBContext jc)
@XmlRootElement
最もよく使われるオブジェクトがある@ XmlRootElementでアノテーション をので、彼らが整列することができます整列。
いくつかのケースでは、不足しているこの注釈を見つけるかもしれない。
代替する場合、コードのJAXBソースすることはできません追加アノテーションをすることですマーシャリングは QNameの 結果の使用に関する明示的なコードです。 たとえば、XmlUtilsが含まれて:
/ **マーシャルW3Cのドキュメントに、オブジェクトの
* @ XmlRootElementでアノテーションを欠いています * /
public static
org.w3c.dom.Document marshaltoW3CDomDocument(Object o, JAXBContext jc,
String uri, String local, Class declaredType)
あなたは、こののように使うことができます:
CTFootnotes footnotes =
wmlPackage.getMainDocumentPart().getFootnotesPart().getJaxbElement().getValue();
CTFtnEdn ftn = footnotes.getFootnote().get(1);
/ / CTFtnEdnではありません@ XmlRootElementでので、..
Document d = XmlUtils.marshaltoW3CDomDocument( ftn,
Context.jc, Namespaces.NS_WORD12, "footnote" , CTFtnEdn. class );
あなたがマーシャリングを解除する必要がある場合は、使用することができます:
public static Object unmarshalString(String str, JAXBContext jc, Class declaredType)
docx4j フォーラム
無料のコミュニティのサポートが利用可能です docx4j フォーラムで http://dev.plutext.org/forums/
この議論は一般的に英語です。 あなたの言語でフォーラムの司会をし、ボランティアできる場合は私たちにお知らせください。
その他のサポートオプション
無料のコミュニティサポートが利用できる場合 docx4j フォーラムは、お客様のニーズを満たしていないか、または単にいくつかのコーディングをすると、コンサルティングや優先supportからプログラミングを購入する歓迎されてアウトソーシングしたい http://www.plutext.com/m/index.php/docx4j-support.html
Plutextからサービスを購入することにより、あなたの継続的な開発を支援する docx4j。
ロードマップ
Wordの2010をサポートします。 機構の互換性をサポートするための新しいXML要素を導入/スキーマのWord 2010、および。 これは、ラベルの3.0正当化メイン。
HTMLの輸出は: もの昔の取得を取り除く。ng2の標準化。 アイデアは努力を集中しているに削除私は任意の必要'が使用して'、混乱を/ノウハウ。
PDFファイルの輸出: viaXSLFOを標準化し、viaHTMLとviaIText取得を取り除くの。 HTMLと同様に、アイデアが努力を集中しているに削除私は任意の必要'が使用する'、混乱を/ノウハウ。 docx4j だけで、ユーザーが実際にPDFを生成するFOPのか、同等のを持っている依存のためのXSLを生成することができます。 これは、作るの依存関係を削減する docx4j ライター。 目標をfop jarファイルを(280万)を削除することです、PDFレンダラのjarファイル(160万)、iTextのjarファイル(110万)、コアレンダラ(1M)の。
フォントの処理は: ものを除く。パノースの、jarファイルをようにFOPのカスタマイズ我々が行う必要はありません。
レイアウトモデル/中間形式: docx4j DocumentModelは、さらに発展をサポートすることができる含まれています:
* 検索は、/置換
* 推定ページのコンテンツ
* XSLTを、リストを、で囲むセクション
挿入OLEオブジェクトは:ので、スプレッドシート、PDFファイル等に埋め込むことができます。
押印
この文書は、Word 2007で、使用して書かれています:
* XMLはかなり使用して印刷 http://www.softlion.com/webTools/XmlPrettyPrint/default.aspx またはパッケージエクスプローラ
* Javaのソースコードが使用してフォーマット http://www.java2html.de
PDFおよびHTMLバージョンを使用して生成された docx4j (FOPのとするためのXSLを介してPDFファイル)。
連絡Plutext
あなたはサポート、一般的な支払いがない限りどのようにタイプの質問に直接投稿してくださいしない docx4j forum 。 Plutextフォーラムにはフォーラムに向けられている必要がありますし、メールで受信する質問を投稿することがあります。
Plutextのいずれかで連絡することができます jason@plutext.org 、または jharrop@plutext.com