我们已经讨论了两个 Word 文档的比较,即使它们受密码保护。如果有两个以上的文件进行比较怎么办?在本文中,我们将了解如何在 Java 中比较多个 Word 文档。此外,我们将学习如何接受或拒绝每个已识别的更改以获得所需的输出。

比较多个 Word 文档以发现 Java 中的差异

最近的短系列文章已经介绍了 Java 方法如何:

在本文结束时,您还将很好地了解如何:

如果您的开发环境还没有准备好执行比较,让我们快速准备它。

用于比较两个或多个 Word 文档的 Java 库 - 设置

我希望你现在已经熟悉了文档比较 Java API。我将使用相同的 GroupDocs.Comparison 继续前进。您可以使用以下配置 下载 或快速检查基于 maven 的应用程序的开发环境:

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-comparison</artifactId>
        <version>22.3</version> 
</dependency>

现在让我们跳到目标,开始比较多个 Word 文件。

在 Java 中比较两个以上的 Word 文件

与仅比较两个文件相比,比较多个文件并没有太大区别。只需继续向比较器添加更多文件,最后,像比较两个文件时一样点击比较。以下是在 Java 中比较两个以上 Word 文档以识别更改并突出显示发现的差异的步骤。

  • 使用 Comparer 类加载第一个 DOC/DOCX 文件。
  • 使用 add() 方法将第二个文件添加到 Comparer。
  • 继续使用相同/相似的 add() 方法向比较器添加更多文档。
  • 调用 compare 方法执行比较并获取已识别更改的摘要。

以下示例显示了如何在 Java 中比较多个 Word 文件并获取结果文档中的更改。

/*
 * 比较多个 Word 文档
 */
try (Comparer comparer = new Comparer("path/document-1.docx")) {
    comparer.add("path/document-2.docx");
    comparer.add("path/document-3.docx");
    final Path resultPath = comparer.compare("path/compared-result.docx");
}

使用 Java 接受或拒绝 Word 文件中已识别的更改

很确定您熟悉 Microsoft Word 的跟踪更改功能。与此类似,您可以以编程方式接受或拒绝最终输出文档的每个已识别更改。以下步骤显示了如何比较 Word 文档的 DOC/DOCX 文件中已识别的更改,然后接受或拒绝已识别的更改。

  • 使用 Comparer 类加载源 DOC/DOCX 文档。
  • 使用 add() 方法将第二个 Word 文档添加到比较器。
  • 使用 compare() 方法比较加载的文件。
  • 使用 getChanges() 方法获取已识别差异的集合。
  • 现在遍历变化,分析,然后你可以相应地设置每个变化的ComparisonAction
    • 将其设置为接受以同意更改。
    • 将其设置为拒绝以拒绝更改。
  • 调用 applyChanges() 方法以获取包含更改的已修改文档。

以下 Java 代码片段比较了两个 DOCX 文档,然后显示了如何接受和拒绝已识别的更改。

/*
 * 比较 Word 文档 - 接受或拒绝 Java 中的更改
 */
try (Comparer comparer = new Comparer("path/document-1.docx")) {
    comparer.add("path/document-2.docx");
    
    final Path resultPath = comparer.compare("path/compared-result.docx");
    ChangeInfo[] changes = comparer.getChanges();

    changes[0].setComparisonAction(ComparisonAction.REJECT);
    changes[1].setComparisonAction(ComparisonAction.ACCEPT);
    comparer.applyChanges(resultPath, new ApplyChangeOptions(changes));
}

获取免费 API 许可证

您可以获得免费的临时许可证 使用该 API 来比较多个 Word 文档而不受评估限制。

构建您自己的比较应用程序

以下是一些重要的链接,它们将帮助您构建自己的文档比较应用程序。

特征 | Documentation | API Reference | Running Examples – Source Code | Support | Release Notes

也可以看看