对某个Word文档进行文档拼接后字体被改变的问题

当我使用如下代码对某个Word文档进行文档拼接后字体被改变了。其他测试文件没有这个问题,将此测试文件的内容复制到另一个空文件中进行测试也没有问题,仅仅是这个文件发现了这个问题。

public static void main(String[] args) throws Exception {
    Document doc = new Document();
    Document src1 = new Document("E:\\test.docx");
    Document src2 = new Document("E:\\test.docx");
    // 拼接文件
    doc.appendDocument(src1, ImportFormatMode.KEEP_DIFFERENT_STYLES);
    doc.appendDocument(src2, ImportFormatMode.KEEP_DIFFERENT_STYLES);
    // 保存拼接完成的文件
    Section firstSection = doc.getFirstSection();
    doc.getSections().remove(firstSection);
    doc.save("E:\\result.docx");
}

输入:

输出:

输入文件 test:
test.docx (34.0 KB)

输出文件 result:
result.docx (9.9 KB)

虽然我调整了代码解决了如上问题。

public static void main(String[] args) throws Exception {
    Document doc = new Document("E:\\test.docx");
    Document src1 = new Document("E:\\test.docx");
    // 拼接文件
    doc.appendDocument(src1, ImportFormatMode.KEEP_SOURCE_FORMATTING);
    // 保存拼接完成的文件
    doc.save("E:\\result.docx");
}

但我想请教下此类问题产生的具体原因,以及这个文件到底存在什么不同之处,以便我们去追踪错误来源。

@whitemeen 这是因为 “new Document() ”创建的文档与旧版本的 MS Word 兼容,而某些兼容选项没有激活,所以导致了这个问题。你可以激活以下选项来避免这个问题:

Document doc = new Document();
doc.getCompatibilityOptions().setDoNotExpandShiftReturn(true);
Document src1 = new Document(getMyDir() + "append.docx");
Document src2 = new Document(getMyDir() + "append.docx");