閱讀本文後,我們將能夠在基於 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 文檔。因此,您將獲得突出顯示已識別更改的結果文檔。

  • 使用源文檔路徑初始化 Comparer 對象。
  • 使用 add 方法添加要比較的第二個文檔。
  • 調用compare方法得到比較結果。 compare 方法將輸出文檔的名稱作為參數。
// 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 文檔的突出差異。刪除的內容會被標記為紅色,添加的內容會顯示為藍色,而修改後的內容會顯示為綠色。

word-file-text-comparison-and-show-differ

使用 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 比較兩個文本文件的類似代碼。步驟與比較任何其他兩個文檔完全相同:

  • 首先將文本文件傳遞給 Comparer 類。
  • 使用 add 方法添加第二個文件。
  • 調用 比較 方法。
// 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 比較文本文件

使用 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 文件後的結果。

PDF文件文本比較

也可以看看

GitHub 存儲庫 中公開提供了許多其他開源示例。您可以使用 入門 指南下載并快速運行示例。如有任何疑問,請查看文檔或隨時通過 forum 與我們聯繫。