由於 PDF 是數字世界中最常用的格式之一,因此通常需要比較同一文檔的兩個版本。本文討論如何使用 C# 比較兩個 PDF 文檔並突出顯示差異。此外,我們將看到如何比較受密碼保護的 PDF 文件、接受和拒絕更改,以及使用 C# 示例比較兩個以上的 PDF 文件。

使用 .NET API 比較 PDF 文檔以查找差異

此處討論以下主題:

.NET API 比較 PDF 文件

GroupDocs.Comparison for .NET 是一種 API,它允許在 .NET 應用程序中比較多個 PDF 文檔和許多其他具有相同文檔格式的文件。我將在本文的 C# 代碼示例中使用此 API 來比較 PDF 文檔。

您可以從 下載部分 下載 DLL 或 MSI 安裝程序,或通過 NuGet 在您的 .NET 應用程序中安裝 API。

PM> Install-Package GroupDocs.Comparison

使用 C# 比較 PDF 文檔

如果您有一個 PDF 文檔的多個副本,您可以比較這些文件以找出差異(添加、刪除)。比較 PDF 內容後,您可以創建一個新文檔,突出顯示所有已識別的更改。以下是使用 C# 比較兩個 PDF 文檔並突出顯示差異的步驟。

  • 使用 Comparer 類加載第一個 PDF 文檔。
  • 使用 Add() 方法將第二個文件添加到 Comparer。
  • 比較兩個 PDF 文件並通過調用 Compare() 方法獲取更改摘要。

以下 C# 代碼片段顯示瞭如何比較 PDF 文檔並突出顯示結果文檔中的更改。

/*
 * 使用 C# 比較兩個 PDF 文檔並突出顯示更改
 */
using (Comparer comparer = new Comparer(@"path/document-ver1.pdf"))
{
    comparer.Add(@"path/document-ver2.pdf");
    comparer.Compare(@"path/compared-result.pdf");
}

使用 C# 接受或拒絕 PDF 文件的已識別更改

就像跟踪更改功能一樣,您可以通過編程方式接受或拒絕 PDF 文檔中每個已識別的更改。以下步驟顯示如何比較然後接受或拒絕 PDF 文檔中已識別的更改。

  • 使用 Comparer 類加載源和目標 PDF 文件。
  • 使用 Compare() 方法比較加載的文檔。
  • 使用 GetChanges() 方法獲取已識別的更改。
  • 現在遍歷更改並設置 ComparisonAction
    • 為每個更改選擇接受或拒絕。
  • 調用 ApplyChanges() 方法以獲取包含已接受更改的結果文檔。

以下代碼片段比較兩個 PDF 文檔,然後接受一個已識別的更改,然後使用 C# 拒絕另一個文檔。

/*
 * 通過使用 C# 比較 PDF 文檔來接受和拒絕已識別的更改
 */
using (Comparer comparer = new Comparer(@"path/document-1.pdf"))
{
    comparer.Add(@"path/document-2.pdf");
    comparer.Compare();
    ChangeInfo[] changes = comparer.GetChanges();
    
    // 拒絕第一個確定的更改,並且不會將其添加到結果文檔中
    changes[0].ComparisonAction = ComparisonAction.Reject;
    comparer.ApplyChanges(@"path/rejected-change-result.pdf", new ApplyChangeOptions { Changes = changes, SaveOriginalState = true });

    changes = comparer.GetChanges();
    changes[0].ComparisonAction = ComparisonAction.Accept;
    comparer.ApplyChanges(@"path/accepted-change-result.pdf", new ApplyChangeOptions { Changes = changes });
}

使用 C# 比較兩個以上的 PDF 文件

同樣,您可以比較兩個以上的文檔。以下是比較多個 PDF 文檔的差異並突出顯示已識別更改的步驟。

  • 使用 Comparer 類加載第一個 PDF 文件。
  • 使用 Add() 方法將其他文檔添加到 Comparer。
  • 使用 Compare() 方法比較所有 PDF 文件並獲取更改和更改摘要。

以下示例顯示如何在 C# 中比較多個 PDF 文件並在生成的文檔中獲取更改。

/*
 * 使用 C# 比較多個 PDF 文檔
 */
using (Comparer comparer = new Comparer(@"path/document-1.pdf"))
{
    comparer.Add(@"path/document-2.pdf");
    comparer.Add(@"path/document-3.pdf");
    comparer.Add(@"path/document-4.pdf");

    comparer.Compare(@"path/compare-result.pdf");
}

使用 C# 比較受密碼保護的 PDF 文檔

您可以通過在加載這些文檔時提供密碼來比較受密碼保護的文件。以下步驟顯示我們如何使用 C# 比較受密碼保護的文檔的 PDF 內容。

  • 通過提供密碼準備源文檔和目標文檔的加載選項。
  • 使用 Comparer 類加載源文檔。
  • 使用準備好的加載選項將目標文檔添加到 Comparer。
  • 通過調用 Compare() 方法獲取差異摘要。

以下示例比較兩個受密碼保護的 PDF 文件,並使用 C# 在單獨的文檔中突出顯示已識別的差異。

/*
 * 使用 C# 比較受密碼保護的 PDF 文檔
 */
using (Comparer comparer = new Comparer(@"path/protected-document-1.pdf", new LoadOptions(){ Password = "SourceFilePassword" }))
{
    comparer.Add(@"path/protected-document-2.pdf", new LoadOptions() { Password = "TargetFilePassword" });
    comparer.Compare(@"path/compared-protected-docs-result.pdf");
}

獲取免費的 API 許可證

您可以 獲得免費的臨時許可證 以不受評估限制地使用 API。

結論

總之,我們學習瞭如何使用 C# 比較兩個或多個 PDF 文件。此外,我們突出顯示差異並以編程方式接受或拒絕已識別的更改。最後,我們了解瞭如何在 .NET 應用程序中比較受密碼保護的 PDF 文檔。

其他幾個 自定義 可用於控制比較結果。您可以設置比較敏感度、僅顯示摘要頁面、忽略間隙等。從 文檔 了解有關 GroupDocs.Comparison for .NET 的更多信息。您可以為各種文檔格式構建自己的文檔比較應用程序。如有疑問,請通過論壇 聯繫我們。

也可以看看