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 在评论中指出的,我的代码没有改变格式!
但是因为它总是跳回标准格式,所以我只是在我的模板中编辑了标准格式,保存它然后就可以使用了!
当尝试用 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 在评论中指出的,我的代码没有改变格式!
但是因为它总是跳回标准格式,所以我只是在我的模板中编辑了标准格式,保存它然后就可以使用了!