由于 PDF 是数字世界中使用最多的格式之一,因此通常需要比较同一文档的两个版本。本文讨论,如何使用 C# 比较两个 PDF 文档并突出差异。此外,我们将了解如何比较受密码保护的 PDF 文件、接受和拒绝更改,以及将两个以上的 PDF 文件与 C# 示例进行比较。

使用 .NET API 比较 PDF 文档以发现差异

此处讨论了以下主题:

.NET API 来比较 PDF 文件

GroupDocs.Comparison for .NET 是允许在 .NET 应用程序中比较多个 PDF 文档和许多其他具有相同文档格式的文件的 API。我将在本文的 C# 代码示例中使用此 API 来比较 PDF 文档。

您可以从 下载部分 下载 DLL 或 MSI 安装程序,或通过 NuGet 在您的 .NET 应用程序中安装 API。

PM> Install-Package GroupDocs.Comparison

使用 C# 比较 PDF 文档

如果您有多个 PDF 文档副本,您可以比较这些文件以找出差异(添加、删除) 。比较 PDF 内容后,您可以创建一个突出显示所有已识别更改的新文档。以下是使用 C# 比较两个 PDF 文档并突出显示差异的步骤。

  • 使用 Comparer 类加载第一个 PDF 文档。
  • 使用 Add() 方法将第二个文件添加到 Comparer
  • 通过调用 Compare() 方法比较两个 PDF 文件并获取更改摘要。

以下 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
    • 为每个更改选择 AcceptReject
  • 调用 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 文档。

其他几个 自定义 可用于控制比较结果。您可以设置比较敏感度、仅显示摘要页面、忽略 gaps 等。从 documentation 了解有关 GroupDocs.Comparison for .NET 的更多信息。您可以为各种 文档格式 构建自己的文档比较应用程序。如有疑问,请通过 论坛 联系我们。

也可以看看