執行 MS Word 文檔的比較以了解文檔的兩個版本之間的差異。 MS Word 提供了一個內置選項來比較兩個文檔的內容。然而,隨著文檔數量的增加,手動進行文檔比較變得困難。為了自動執行此過程,本文介紹瞭如何使用 Java 比較兩個 MS Word (DOC/DOCX) 文檔。
用於比較 MS Word 文檔的 Java API
Aspose.Words for Java 是一個功能強大的文檔操作 API,可讓您創建、讀取、修改和轉換 MS Word 文檔。此外,它允許您比較兩個 Word 文檔,同時考慮或忽略內容的格式。您可以下載 API 或使用 Maven 配置安裝它。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>20.9</version>
<classifier>jdk17</classifier>
</dependency>
使用 Java 比較 MS Word 文檔
以下是使用 Aspose.Words for Java API 執行簡單 Word 文檔比較的步驟。
- 使用 Document 類加載要比較的文檔。
- 調用 Document.compare(Document, String, Date) 方法將文檔與作為參數傳遞的文檔進行比較。
以下代碼示例顯示瞭如何使用 Java 比較兩個 MS Word 文檔。
Document docA = new Document(dataDir + "DocumentA.doc");
Document docB = new Document(dataDir + "DocumentB.doc");
docA.compare(docB, "user", new Date()); // docA now contains changes as revisions
Java Word 文檔比較 - 忽略格式
可能會出現文檔對內容應用不同格式的情況。在這種情況下,您更願意只比較文本而忽略格式、頁眉/頁腳、腳註、表格、註釋等。以下是在比較兩個 MS Word 文檔時忽略文檔格式的步驟。
- 使用 Document 類加載要比較的文檔。
- 創建 CompareOptions 類的對象。
- 設置 CompareOptions.setIgnoreFormatting(true)。
- 使用 Document.compare(Document, String, Date, CompareOptions) 方法比較文檔。
以下代碼示例顯示瞭如何使用 Java 比較忽略內容格式的 MS Word 文檔。
// 有關完整示例和數據文件,請訪問 https://github.com/aspose-words/Aspose.Words-for-Java
String dataDir = Utils.getDataDir(CompareTwoWordDocumentswithCompareOptions.class);
com.aspose.words.Document docA = new com.aspose.words.Document(dataDir + "DocumentA.doc");
com.aspose.words.Document docB = new com.aspose.words.Document(dataDir + "DocumentB.doc");
com.aspose.words.CompareOptions options = new com.aspose.words.CompareOptions();
options.setIgnoreFormatting(true);
options.setIgnoreHeadersAndFooters(true);
options.setIgnoreCaseChanges(true);
options.setIgnoreTables(true);
options.setIgnoreFields(true);
options.setIgnoreComments(true);
options.setIgnoreTextboxes(true);
options.setIgnoreFootnotes(true);
// DocA 現在包含作為修訂的更改。
docA.compare(docB, "user", new Date(), options);
if (docA.getRevisions().getCount() == 0)
System.out.println("Documents are equal");
else
System.out.println("Documents are not equal");
為比較差異設置目標 Word 文檔
Aspose.Words for Java 還允許您在比較期間指定源 Word 文檔。為此,您可以使用與 MS Word 的“顯示更改”選項相關的 CompareOptions.setTarget() 屬性。以下代碼示例顯示瞭如何在比較中指定目標文檔。
Document docA = new Document(dataDir + "TestFile.doc");
Document docB = new Document(dataDir + "TestFile - Copy.doc");
CompareOptions options = new CompareOptions();
options.setIgnoreFormatting(true);
// 與 Microsoft Word“比較文檔”對話框中的“顯示更改”選項相關。
options.setTarget(ComparisonTargetType.NEW);
docA.compare(docB, "user", new Date(), options);
設置粒度以在 Java 中比較 Word 文件
您還可以在比較兩個 MS Word 文檔時設置更改的粒度。這可以使用 CompareOptions.setGranularity() 屬性來完成。以下是可能的粒度選項。
以下代碼示例顯示了在使用 Java 比較 MS Word 文檔時如何設置粒度。
DocumentBuilder builderA = new DocumentBuilder(new Document());
DocumentBuilder builderB = new DocumentBuilder(new Document());
builderA.writeln("This is A simple word");
builderB.writeln("This is B simple words");
CompareOptions co = new CompareOptions();
co.setGranularity(Granularity.CHAR_LEVEL);
builderA.getDocument().compare(builderB.getDocument(), "author", new Date(), co);
結論
在本文中,您了解瞭如何使用 Java 在各種情況下比較兩個 MS Word 文檔。您可以使用 文檔 探索更多關於 Aspose.Words for Java 的信息。
免費試用
Aspose 提供臨時許可證 供您免費試用其 API。你可以得到你的評估 Aspose.Words for Java。