java - 在 aspose word 中使用 FieldMergingCallback 时 MS Word 邮件合并字段格式丢失

标签 java aspose.words

我有一个模板,其中有一些位于表格内部和外部的合并字段。这些字段的值被查询并缓存到映射,然后通过自定义 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/

相关文章:

java - 如何使用 Java 读取 PDF 文件?

java - 如何在没有 DocumentBuilder 的情况下插入分页符?

java - 最后一行未使用 aspose word for java 合并到 ms word 表中

java - 从 docx 转换后尝试在 html 中添加一些内容时,文本重叠

java - 我如何使用java获取Word文档中段落的一部分的字符串的页码

java - 如何从返回android应用程序中的对象的android应用程序使用asmx web服务?

java - 通过java设置word文档页边距

java - int[][] 无法转换为 int

java - 在 Java 中捕获异常与抛出异常