0

私はDocx4jを初めて使用し、私の仕事はdocxテンプレートのテキストを置き換えることです。docx4j の入門ガイドを読みましたが、概念全体を完全には理解していないと思います。とにかく...私はすでに [Docx4j のアンマシャリング テンプレート][1] を試しまし 。有効なキーまたは値が含まれているため、プレースホルダーを置き換えません。

私は

<w:proofErr w:type="spellEnd"/>

スペルチェックを無効にしましたが、それでも機能しませんでした...また、アプリの実行にはかなりの時間がかかります。

Getting_Started.pdf のデータバインドされた例を理解できなかったので、オプションが不足しています...

docx の一部の文字列テキストを単純に置き換えるにはどうすればよいですか?

編集: unmarshallFromTemplate.docx にテキストを追加して保存すると、新しいテキスト行が置き換えられないことがわかりました。the - タグは何らかの形で複数のタグに分割されています:

<w:p w:rsidR="002512F8" w:rsidRDefault="002512F8" w:rsidP="002512F8"><w:r><w:t>My</w:t></w:r><w:r w:rsidR="001A5174"><w:t xml:space="preserve"> favourite ice cream is ${DEGREE</w:t></w:r><w:r><w:t>}.</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/></w:p>

document.xml のテキストを編集し、不足している情報を追加してもあまり役に立ちませんでした。

とにかく、ここに使用している Template.docx の document.xml があります: http://uploaded.net/file/vz4qr23o

編集2:

さて皆さん。私は自分自身に非常に適した回避策を見つけましたが、それを理解するのになぜそんなに時間がかかったのかわかりません. 私が言っていたように: 実行が分割されました。私の意見では、その理由は ${} でした。したがって、プレースホルダーの前に # を使用し、すべてのプレースホルダーを書き直して、すべてが 1 回の実行になるようにしました。

document.xml に数回切り替えてパッセージを書き直す必要がありましたが、その後は機能しました。次に、単純に replace(placeholder, xml) を使用して、整列化された document.xml のテキストを置き換えてから、再度整列化を解除しました。働いた。話の終わり、毎晩のビルドやマッピングをファックしてください。THX

4

2 に答える 2

1

docx4j に組み込まれているプレースホルダーの検索と置換コードは問題なく機能しますが、プレースホルダーがrsidエンティティによって分割されるという問題がある場合は、「テンプレート」を保存するときに文法とスペル チェックが無効になっていることを確認する必要があります (つまり、ソースドキュメント。これは、テキスト ランが断片化するのを防ぐのに役立ちます (あちこちにブックマーク タグが挿入されるため、校正も無効にしたい場合があることに注意してください)。

検索と置換を実行し、新しいドキュメントまたは更新されたドキュメントを取得したら、スペル チェックを簡単に再度有効にすることができます。このスレッドには RSID に関する詳細があります:生成された xml での rsid のスペル チェックと文法チェックをオフ

于 2013-06-12T13:17:47.163 に答える