GroupDocs.Comparison for .NET 是一個 C# 庫,可讓您比較文檔並找出差異。比較和合併 Microsoft Word、Excel、PowerPoint, OpenDocument、PDF、文本、HTML 和許多其他文檔,檢索源文檔和目標文檔之間的更改列表,應用或拒絕更改並使用 GroupDocs 保存結果.比較API。除此之外,GroupDocs.Comparison 可以識別樣式和格式更改 - 如粗體、斜體、下劃線、刪除線、字體類型等。

GroupDocs.Comparison 使用的更改檢測算法允許檢測不同文檔部分和塊中的差異:

  • 文本塊——段落、單詞和字符;
  • 桌子;
  • 圖片;
  • 形狀等

以下是比較兩個文本文件並顯示差異的簡單步驟:

  • 使用源文檔路徑或流實例化 Comparer 對象;
  • 調用Add方法並指定目標文檔路徑或流;
  • 調用 比較 方法。

以下代碼片段使用幾行代碼演示了文檔比較的最簡單情況。

比較本地文件中的文檔

using (Comparer comparer = new Comparer(“source.docx”))
{
    comparer.Add(“target.docx”);
    comparer.Compare(“result.docx”);
}

比較流中的文檔

using (Comparer comparer = new Comparer(File.OpenRead(“source.docx”)))
{
    comparer.Add(File.OpenRead(“target.docx”));
    comparer.Compare(File.Create(“result.docx”));
}

假設您有兩份在不同年份簽訂的 DOCX 格式的合同。如果你使用上面的代碼來比較這些合約,你會得到一個 DOCX 文件,其中刪除的元素用紅色標記,添加的元素用藍色標記,修改的元素用綠色標記,如下所示:

接受或拒絕檢測到的差異

GroupDocs.Comparison 提供了在源文檔和目標文檔之間應用或放棄特定更改並保存包含(或不包含)選定更改的結果文檔的功能。

以下是對生成的文檔應用/拒絕更改的步驟。

以下代碼示例顯示瞭如何接受/拒絕檢測到的差異。

using (Comparer comparer = new Comparer(“source.docx”))
{
    comparer.Add(“target.docx”);
    comparer.Compare();
    ChangeInfo[] changes = comparer.GetChanges();
    changes[0].ComparisonAction = ComparisonAction.Reject;
    comparer.ApplyChanges(File.Create(“result.docx”), new SaveOptions(), new ApplyChangeOptions() { Changes = changes });
}

生成文檔頁面預覽

GroupDocs.Comparison 允許使用 Document 類的 GeneratePreview 方法為源文檔、目標文檔和結果文檔生成頁面預覽。

PreviewOptions 類用於管理預覽生成過程 - 指定所需的頁碼、圖像格式等。

以下是使用 GroupDocs.Comparison API 生成文檔預覽的步驟:

  • 創建一個新的 Comparer 類實例,並將源文檔路徑作為構造函數參數傳遞;
  • 使用 Add 方法將目標文檔添加到比較;
  • 資源 and Targets properties of Comparer object allows to access source and target documents and provides GeneratePreview method;
  • 實例化 PreviewOptions 對象:
    • 為每個頁面流創建委託(請參閱事件處理程序 CreatePageStream);
    • 圖像預覽格式 - PNG / JPG / BMP;
    • 要處理的頁碼;
    • 預覽圖像的自定義大小(如果需要)。
  • 調用 SourceTargets 文檔的 GeneratePreview 方法並將 PreviewOptions 傳遞給它。

獲取結果文檔的頁面預覽

using (Comparer comparer = new Comparer(“source.docx”))
{
    comparer.Add(“target.docx”);
    comparer.Compare(“result.docx”);
    Document document = new Document(File.OpenRead(“result.docx”));
    PreviewOptions previewOptions = new PreviewOptions(pageNumber =>
    {
        var pagePath = Path.Combine(“C:\\”, $"result\_{pageNumber}.png");
        return File.Create(pagePath);
    });
    previewOptions.PreviewFormat = PreviewFormats.PNG;
    previewOptions.PageNumbers = new int[] { 1, 2 };
    document.GeneratePreview(previewOptions);
}

比較多個文件

GroupDocs.Comparison 允許比較兩個以上的文檔。以下代碼示例顯示瞭如何以編程方式比較多個文檔。

using (Comparer comparer = new Comparer(“source.docx”)
{
    comparer.Add(“target1.docx”);
    comparer.Add(“target2.docx”);
    comparer.Add(“target3.docx”);
    comparer.Compare(“result.docx”);
}

安裝

NuGet 是下載和安裝適用於 GroupDocs.Comparison for .NET 的最簡單方法。請 獲取臨時許可證 以在沒有任何功能限制的情況下測試庫。

請查看 文檔 以了解有關該庫的更多信息。我們還提供免費技術支持,因此請隨時聯繫我們 - 我們很樂意提供幫助。