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 对象;
- 调用_A_dd方法并指定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 方法将目标文档添加到比较中;
- Comparer 对象的 Source 和 Targets 属性允许访问源文档和目标文档并提供 GeneratePreview 方法;
- 实例化 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 的最简单方法。请获得临时许可证 以不受任何功能限制地测试库。