我有一个模板,其中有一些位于表格内部和外部的合并字段。这些字段的值被查询并缓存到映射,然后通过自定义 FieldMergingCallback 设置到该字段,下面是 java 代码:
// doc is a Document object
doc.getMailMerge().setFieldMergingCallback(new IFieldMergingCallback() {
@Override
public void fieldMerging(FieldMergingArgs arg0) throws Exception {
if (fieldCache.containsKey(arg0.getFieldName())) {
arg0.setText(fieldCache.get(arg0.getFieldName()));
}
}
@Override
public void imageFieldMerging(ImageFieldMergingArgs arg0) throws Exception {
return;
}
});
问题是我在使用 setText 方法时丢失了所有字段格式(\* Caps、\* Upper 等),我尝试在调用executeWithRegions() 后调用 doc.updateFields() 但格式仍然丢失.
如何在回调中保留格式?
这是一个遗留系统,因此我们陷入了 aspose word 14.5.0
最佳答案
您可以使用字段代码来获取开关并相应地设置值的格式。请看下面的代码:
doc.getMailMerge().setFieldMergingCallback(new IFieldMergingCallback() {
@Override
public void fieldMerging(FieldMergingArgs args) throws Exception {
// This is a dummy value.
String value = args.getFieldName();
// Get field code to check formatting switches.
String fieldCode = args.getField().getFieldCode(false);
// Format the value according to the switches in the field code.
if (fieldCode.contains("\\* Upper"))
value = value.toUpperCase();
if (fieldCode.contains("\\* Lower"))
value = value.toLowerCase();
args.setText(value);
}
@Override
public void imageFieldMerging(ImageFieldMergingArgs arg0) throws Exception {
return;
}
});
希望这有帮助。
披露:我在 Aspose.Words 团队工作。
关于java - 在 aspose word 中使用 FieldMergingCallback 时 MS Word 邮件合并字段格式丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59471376/