閱讀本文後,我們將能夠在基於 Java 的應用程序中比較文本文件、Word 文件、PDF 文件和其他文檔。通過使用此功能,我們可以比較發票、合同、演示文稿、AutoCAD 設計、價目表或編程文件。我們還將有權突出顯示已識別的更改,並可以選擇接受或拒絕任何更改。我們甚至可以構建自己的文檔比較工具,類似於 GroupDocs 推出的工具,使用 Java 文檔比較 API。
下面,您將了解以下主題:
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 存儲庫 中公開提供了許多其他開源示例。您可以使用 入門 指南下載并快速運行示例。如有任何疑問,請查看文檔或隨時通過 forum 與我們聯繫。