このすばらしいガイドのおかげで、DOCX4J に簡単に置き換えることができました。
しかし今、私はもっと複雑なことをしようとしています。
私がやりたいのは、ドキュメント内でマーカー テキスト #1 を見つけ、ドキュメント内でマーカー テキスト #2 を見つけて、2 つの間のすべてをコピーすることです。次に、そのコンテンツを X 回貼り付けて、さらに変更を加えます。
誰かが私がこれを行う方法を知っていて、おそらく必要な主要な機能を教えてくれますか?
このすばらしいガイドのおかげで、DOCX4J に簡単に置き換えることができました。
しかし今、私はもっと複雑なことをしようとしています。
私がやりたいのは、ドキュメント内でマーカー テキスト #1 を見つけ、ドキュメント内でマーカー テキスト #2 を見つけて、2 つの間のすべてをコピーすることです。次に、そのコンテンツを X 回貼り付けて、さらに変更を加えます。
誰かが私がこれを行う方法を知っていて、おそらく必要な主要な機能を教えてくれますか?
一般的なケースでは、2 つのマーカーの間にさまざまな構造があり、特別な処理が必要になる可能性があるため (画像、脚注、sectPr 要素、ブックマークなどを考えてください)、これは簡単なことではありません。その一般的なケースについては、MergeDocx に関する私のブログ投稿を参照してください。
ただし、いくつかの単純化する仮定を立てることができれば、それはより簡単になります。
まず、マーカーがブロック レベルの要素であると仮定します。
第 2 に、ドキュメントが書式設定されたテキストと表だけであると仮定します。
次に、ブロック レベルのコンテンツのリストに対して操作を実行できます。
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
List<Object> blocks = documentPart.getContent();
必要に応じてオブジェクトを複製するための XmlUtils.deepCopy があります。
仮定 2 に違反する構造ごとに、特定の処理が必要になります。入力ドキュメントを制御できる場合は、これを管理できます。
ブックマークの使用に似たマーカー #1 と #2 の代わりに、ブロック レベルのコンテンツ コントロールの使用を検討してください。これにより、脆弱なポイント タグが回避されます。XML の観点からはより優れており、(作成の観点から) Word のユーザー インターフェイスに利点があります。