GroupDocs.Comparison for .NET 是一個 C# 庫,可讓您比較文檔並找出差異。比較和合併 Microsoft Word、Excel、PowerPoint, OpenDocument、PDF、文本、HTML 和許多其他文檔,檢索源文檔和目標文檔之間的更改列表,應用或拒絕更改並使用 GroupDocs 保存結果.比較API。除此之外,GroupDocs.Comparison 可以識別樣式和格式更改 - 如粗體、斜體、下劃線、刪除線、字體類型等。
GroupDocs.Comparison 使用的更改檢測算法允許檢測不同文檔部分和塊中的差異:
- 文本塊——段落、單詞和字符;
- 桌子;
- 圖片;
- 形狀等
以下是比較兩個文本文件並顯示差異的簡單步驟:
以下代碼片段使用幾行代碼演示了文檔比較的最簡單情況。
比較本地文件中的文檔
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 提供了在源文檔和目標文檔之間應用或放棄特定更改並保存包含(或不包含)選定更改的結果文檔的功能。
以下是對生成的文檔應用/拒絕更改的步驟。
- 使用源文檔路徑或流實例化 Comparer 對象;
- 調用Add方法並指定path目標文檔路徑或流;
- 調用比較方法;
- 調用GetChanges方法,獲取檢測到的變化列表;
- 將所需更改對象的 ComparisonAction 設置為 ComparisonAction.Accept 或 ComparisonAction.Reject 值;
- 調用 ApplyChanges 方法並將更改集合傳遞給它。
以下代碼示例顯示瞭如何接受/拒絕檢測到的差異。
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;
- 要處理的頁碼;
- 預覽圖像的自定義大小(如果需要)。
- 調用 Source 和 Targets 文檔的 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 的最簡單方法。請 獲取臨時許可證 以在沒有任何功能限制的情況下測試庫。