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

Docx4j - replacing placeholder destroys format

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

之前

之后

我试图将代码简化为我在这里所做的事情的核心:

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");

有人知道我应该怎么做才能保留我的原始格式吗?

正如 Jason 在评论中指出的,我的代码没有改变格式!
但是因为它总是跳回标准格式,所以我只是在我的模板中编辑了标准格式,保存它然后就可以使用了!