1

Wordファイル内のテキストとロゴを置き換えるためにdocx4j 2.8.1を使用しています。約 50 個のドキュメントの処理は非常に遅いため、パフォーマンスを改善したいと考えています。docx4j のパフォーマンスを向上させるために推奨されるオプションは何ですか?

文字列 (ロゴではなく) を置き換えるコードは次のようになります。

 String xml = XmlUtils.marshaltoString(documentPart.getJaxbElement(), true);
 HashMap<String, String> mappings = buildReplaceMap(userData);

 Object obj = XmlUtils.unmarshallFromTemplate(xml, mappings);
 documentPart.setJaxbElement(obj);
4

1 に答える 1

0

http://www.docx4java.org/docx4j/docx4j-nightly-20130328.jarを試してください。

実験的な variableReplace メソッドが含まれています。質問に従って documentPart とマッピングを想定すると、次のように呼び出すことができます。

documentPart.variableReplace(mappings);

documentPart.setJaxbElement は必要ありません。

175 ページのドキュメントでのテストでは、処理に 1/3 秒かかりました (約 3 倍速くなりました)。

さらなるパフォーマンスの向上は、より多くのリソース (同時に実行する場合はより多くのコア) とより多くの RAM を提供することで最も簡単に実現できます。

どう考えているか教えてください。

于 2013-03-28T09:46:00.940 に答える