变量没有被取代

时间:2017-11-24 09:27:52

标签: java docx docx4j

我写了一些代码来替换docx tamplate文件头中的变量。

List<SectionWrapper> sectionWrappers = this.wordMLPackage.getDocumentModel().getSections();
for (SectionWrapper sw : sectionWrappers) {
    HeaderFooterPolicy hfp = sw.getHeaderFooterPolicy();
    HeaderPart defaultHP = hfp.getDefaultHeader();
        if (defaultHP != null) {
            defaultHP.variableReplace(getVariablesForChange());
            if (hfp.getFirstHeader() != null) {
              hfp.getFirstHeader().variableReplace(getVariablesForChange());
            }
        }
}

getVariablesForChange()是一个包含变量和值的Map。 当我运行单元测试时,替换是完全正常但我在Tomee Plume上的Web应用程序中使用它,变量不会被替换。 例如,变量为:${TOCHANGE}在更改TOCHANGE后它看起来像这样。

Docx4j版本是:3.3.6

请帮我解决此问题。

1 个答案:

答案 0 :(得分:0)

如果您的KEY在docx中的不同运行中分开,它将无法运行。

请参阅https://github.com/plutext/docx4j/blob/master/src/main/java/org/docx4j/model/datastorage/migration/VariablePrepare.java