Docx4j - 替换占位符会破坏格式

时间:2018-01-18 13:02:27

标签: java docx4j

尝试使用docx4j框架替换word模板中的占位文本时,格式总是丢失:


original format in template


format after replacement

我尝试将代码简化为我在此处所做的核心:

private void replacePlaceholder(WordprocessingMLPackage template,
                                String name,
                                String placeholder) {
    List<Object> texts =
        doc.getAllElementFromObject(template.getMainDocumentPart(), Text.class);
    for (Object text : texts) {
        Text textElement = (Text) text;

        if (textElement != null
                && textElement.getValue() != null
                && placeholder != null
                && textElement.getValue().equals(placeholder)) {
            textElement.setValue(name);
        }
    }
}

WordprocessingMLPackage wp = 
    WordprocessingMLPackage.load(context.getResourceAsStream("/template.docx"));
replacePlaceholder(wp, "Apr. 2007 - Dez. 2012", "tempDatum");

任何人都知道我应该做些什么才能保留原始格式?

1 个答案:

答案 0 :(得分:0)

像杰森在评论中指出的那样,我的代码并没有改变格式! 但是因为它总是跳回到标准格式,我只是在我的模板中编辑了那个标准格式,保存了它然后就可以了!