2016-09-26 15 views
0

私のプログラムはテキストと画像をWordテンプレートに挿入します。これは、コンテンツ管理のデータバインディングを介してうまくいく(docx4jとContent-Control-Toolkitのおかげで)。サイズを変更せずにdocx4j経由でWordテンプレートに画像を挿入する方法

私の問題は、画像が注入後にサイズが変更されることです。 http://www.docx4java.org/forums/data-binding-java-f16/picture-content-control-size-t634.html

を、現在の行動はそれはそれはで、ページの幅よりも大きい場合を除き、その自然の大きさは、(与えられたdpiで)でどんなことができるようにすることです:私は実際に欲しいのは、ジェイソンがここdecribedことbehavoirですその場合は縮小されます。

この記事によれば、docx4jの振る舞いは、ピクチャが常に比率に対してコンテンツコントロールのサイズに合うように変更されています。 "古い"振る舞いを取り戻すことは可能ですか? Jasonが書いた、すでに実装されているスイッチであるか、それとも私自身で行う必要がありますか?

How to force Docx4j to refresh a replaced image fileの応答として、画像のサイズがメイン文書部分に格納されます。現時点では、XPathを使用してカスタムXML部分のコンテンツを設定しています。ドキュメントのXMLに直接触れることなく、必要なものを手に入れる可能性があるなら、私は本当にそれを好むでしょう。 Wordでドキュメントを開いた後にサイズを設定するマクロは、私にとってはオプションではありません。

答えて

1

まず、ピクチャコンテンツコントロールではなく、リッチテキストコンテンツコントロール内にピクチャを持つことが望ましいことに注意してください。

これは、Wordが画像コンテンツコントロールを「浮動」させる能力を制限するためです。

Wによってトリガされ、このため取り扱い:タグを含む 'OD:ハンドラ画像を=':描画/ WP:インライン/ A sdtContent既存のWを含んでいる:datastorage/bind.xslt#L165

基本的な動作は、W場合、すなわち:グラフィックを再利用するので、このように構成された書式設定が使用されます。

しかし、blip(これはいつですか?)を含んでいない "legacy"画像コンテンツコントロールの場合、xpathInjectImageはwp:extentが渡されて呼び出されます(bind.xslt#L240を参照)。ライン1143で

、場合(CXL == 0 || CYLは== 0)//あなたがその自然なサイズで画像をしたい場合、あなたはとき句を削除してみてください可能性がBPAIが大きそう

をうまくしてみましょうat bind.xslt#L212

ところで、エスケープされたXHTMLをバインドすることもできます。しかし、そこには、ページの幅だけでなく、表のセルの場合でも、それに合わせてイメージを収める努力をしています。

+0

すばやく詳細な回答をいただきありがとうございます。私は現時点で私の注意を必要とするコードにいくつかの他の問題があります。私はこれをできるだけ早く試してフィードバックを出します。 – Tim

+0

あなたを恋に落としてしまった場合は私を訂正してください。しかし、画像タグ付きのリッチテキストコントロールを使用すると、私の特定の問題を解決できません。たとえそれが好きな方法であっても、フローティングピクチャを必要とせずに、そうする理由はありません。 – Tim

+0

のような定数をチェックすることができます。https://github.com/plutext/docx4j/blob/master/src/main/java/org/docx4j/model/datastorage/BindingTraverserXSLT.java#の状態でKEEPNATURALIMAGESIZE自然な画像サイズで強制的に注射するL1143? – Tim

関連する問題