通过本文,我们将能够比较文本文件、Word 文件、PDF 文件和其他基于 Java 的应用程序中的文档。通过使用此功能,我们可以比较发票、合同、演示文稿、AutoCAD 设计、价目表或编程文件。我们还将有幸突出显示已识别的更改,并可以选择接受或拒绝任何更改。我们甚至可以使用 Java 的文档比较 API 构建我们自己的 文档比较工具,类似于 GroupDocs 推出的工具。
下面,您将了解以下主题:
Java 文档比较 API
作为先决条件,您可以从 下载 部分获得 GroupDocs.Comparison for Java。此外,对于基于 maven 的应用程序,您可以在 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>20.4</version>
</dependency>
使用 Java 比较 Word 文件并显示差异
下面的步骤将向您展示只需几行 Java 代码即可比较任意两个 Word 文档。因此,您将获得将突出显示已识别更改的结果文档。
// Compare two Word files from the provided location on disk
Comparer comparer = new Comparer("source.docx");
try {
comparer.add("target.docx");
comparer.compare("comparison.docx");
}
finally {
comparer.dispose();
}
在这里,我显示了上述代码生成的 Word 文档,其中包含比较的两个 Word 文档的突出显示差异。删除的内容会以红色标记,添加的内容会以蓝色显示,但绿色显示修改后的内容。
使用 Stream 比较 Word 文件的文本
您可以类似地将文档作为流传递给 Comparer 类,以将其与第二个文档进行比较。这是Java代码,可让您清楚地了解:
// Compare two Word file using Stream
Comparer comparer = new Comparer(new FileInputStream("source.docx"));
try {
comparer.add(new FileInputStream("target.docx"));
comparer.compare(new FileOutputStream("result.docx"));
}
finally {
comparer.dispose();
}
使用 Java 接受或拒绝 Word 文件中的比较更改
成功突出显示已识别的差异后,您可以选择接受或拒绝任何更改。只是作为一个例子,我交替接受和拒绝更改。您可以使用类似的代码一一显示每个更改,并根据您的要求决定接受/拒绝每个更改。
// Accept or Reject the identified changes of Word document in Java
Comparer comparer = new Comparer(source);
try {
comparer.add(target);
comparer.compare();
ChangeInfo\[\] changes = comparer.getChanges();
System.out.println("changes.length: " + changes.length + ".");
// Accept or Reject the changes
for (int n = 0; n < changes.length; n++) {
if (n % 2 == 0) {
changes\[n\].setComparisonAction(ComparisonAction.ACCEPT);
}
else {
changes\[n\].setComparisonAction(ComparisonAction.REJECT);
}
}
// Apply your decisions to get the resultant document.
comparer.applyChanges(outputFileName, new SaveOptions(), new ApplyChangeOptions(changes));
}
finally {
comparer.dispose();
}
使用 Java 比较文本文件并显示差异
使用 Comparer 类,我们还可以比较任何文本文件。下面是在 Java 中比较两个文本文件的类似代码。步骤与比较任何其他两个文档完全相同:
// Compare two text files to identify and highlight changes.
Comparer comparer = new Comparer("source.txt");
try {
comparer.add("target.txt");
comparer.compare("comparison.txt");
}
finally {
comparer.dispose();
}
这是显示使用上述代码匹配两个文本文件的比较结果的输出文档。
使用 Java 比较 PDF 文件的文本差异
我们可以使用上面相同的代码比较 PDF 文件,只需将文件扩展名更改为“.pdf”。顺便提一下,下面的代码比较了两个 pdf 文件并显示了 Java 中的差异。
// Compare two PDF file using Stream
Comparer comparer = new Comparer(new FileInputStream("source.pdf"));
comparer.add(new FileInputStream("target.pdf"));
comparer.compare(new FileOutputStream("result.pdf"));
以下是比较 PDF 文件后的结果。
也可以看看
许多其他开源示例可在 GitHub 存储库 上公开获得。您可以使用 入门 指南下载并快速运行示例。如有任何疑问,请查看文档或随时在 论坛 上与我们联系。