使用 Java 比较 Word 文档并突出显示差异

您可以轻松地比较两个或多个 Word 文档并以编程方式突出显示差异。您可能需要比较同一 Word 文件或不同文件的多个版本,以了解 Java 应用程序中的差异和相似之处。在本文中,您将学习如何使用 Java 比较两个或多个 Word 文档并突出差异

本文讨论/涵盖了以下主题:

用于比较 Word 文档的 Java API

我将使用 GroupDocs.Comparison for Java API 来比较 DOCX 文档。它进行比较以检测单词、段落和字符的内容变化,同时提供列出差异摘要的比较文档。它还使您能够检测相似文档格式之间文本样式的变化和差异。 API 支持比较所有行业标准文档格式,例如 PDF、HTML、Word、Excel、PowerPoint、Outlook 电子邮件、Visio 图表、OpenDocument、AutoCAD 和图像。

您可以 下载 API 的 JAR 或在您的基于 Maven 的 Java 应用程序中添加以下 pom.xml 配置来尝试下面提到的代码示例。

<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>21.6</version> 
</dependency>

使用 Java 比较 Word 文档

您可以按照下面给出的简单步骤比较两个或多个 Word 文档:

  1. 创建 Comparer 类的实例
  2. 向构造函数提供源 DOCX 文件路径
  3. 添加 目标 DOCX 文件进行比较
  4. 调用 Compare() 方法以及输出文件路径

以下代码示例展示了如何比较 Word 文档并突出显示使用 Java 的差异

// 初始化比较器
Comparer comparer = new Comparer("C:\\Files\\source.docx");

// 添加目标文件
comparer.add("C:\\Files\\target.docx");

// 比较并保存比较结果
comparer.compare("C:\\Files\\result.docx");
源和目标 Word 文档

源文件和目标文件

使用 Java 比较两个 Word 文档

使用 Java 比较两个 Word 文档

生成的文档还包括文档末尾的摘要页面。它显示了所有更改的摘要。

Comparer 类是控制文档比较过程的主类。此类的 Compare() 方法比较源文档和目标文档。此方法将结果保存到作为输入参数提供的文件路径中。该类的 Add() 方法,将文件添加到比较过程中。您可以使用 Add() 方法轻松地将多个文件添加到比较中,如下所示:

comparer.Add("target2.docx");
comparer.Add("target3.docx");

使用 Java 获取更改的文本

您可以按照下面给出的简单步骤以编程方式获取更改的文本:

  1. 创建 Comparer 类的实例
  2. 向构造函数提供源 DOCX 文件路径
  3. 添加 目标 DOCX 文件进行比较
  4. 调用 Compare() 方法
  5. 调用**getChanges()**方法,获取变更详情
  6. 显示更改

以下代码示例显示了如何使用 Java 获取更改的文本

// 初始化比较器
Comparer 比较r = new Comparer("C:\\Files\\source.docx");

// 添加目标文件
比较r.add("C:\\Files\\target.docx");

// 比较
final Path resultPath = 比较r.比较();

// 获取更改
ChangeInfo[] changes = 比较r.getChanges();
System.out.println("Count of changes: " + changes.length);

for (ChangeInfo change : changes) {
    System.out.printf("Change Type: %d, Text: %s%n", change.getType(), change.getText());
}
Count of changes: 10
Change Type: 2, Text: 
Change Type: 2, Text:  Company  HYPERLINK "http://www.aspose.com/" Aspose Pty Ltd Division GroupDocs 
Change Type: 2, Text: 
Change Type: 2, Text: Cool 
Change Type: 3, Text: test 
Change Type: 2, Text:  
Change Type: 2, Text: signatures
Change Type: 2, Text: Our 
Change Type: 2, Text: char&#091;
Change Type: 2, Text: 255] 

您可以通过调用 Comparer 类的 getChanges() 方法来获取源文件和目标文件之间的更改列表。它返回 ChangeInfo 对象的列表。 ChangeInfo 类提供了获取更改详细信息的方法,例如 getText() 以获取特定更改的文本。

比较 Word 文档中的书签

您可以按照以下给出的简单步骤以编程方式比较 Word 文档中存在的书签:

  1. 创建 Comparer 类的实例
  2. 向构造函数提供源 DOCX 文件路径
  3. 添加 目标 DOCX 文件进行比较
  4. 创建 CompareOptions 的实例
  5. CompareBookmarks 设置为 true
  6. 调用 Compare() 方法以及输出文件路径和 CompareOptions 对象

以下代码示例展示了如何使用 Java 比较 Word 文档中的书签

// 初始化比较器
Comparer comparer = new Comparer("C:\\Files\\source.docx");

// 添加目标文件
comparer.add("C:\\Files\\target.docx");

// 定义比较选项
CompareOptions compareOptions = new CompareOptions();
compareOptions.setCompareBookmarks(true);

// 比较并保存比较结果
comparer.compare("C:\\Files\\result.docx", compareOptions);
使用 Java 比较 Word 文档中的书签

使用 Java 比较 Word 文档中的书签

您可以通过应用各种比较选项来增强比较过程。为此,CompareOptions 类允许您通过提供各种方法来设置不同的比较选项。 setCompareBookmarks() 方法使您能够比较源文档和目标文档中可用的书签。

获得免费许可证

您可以通过请求 免费的临时许可证 来试用该 API,而不受评估限制。

结论

在本文中,您学习了如何使用 Java 比较两个或多个 Word 文档并突出显示 差异。您还学习了如何获取突出显示更改的文本。 此外,您还学习了如何以编程方式比较 Word 文档中的书签。您可以使用 文档 了解有关 Java API 的 GroupDocs.Comparison 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看