Word格式处理控件Aspose.Words for .NET教程——比较两个文档的差异

郭璞
2023-12-01

Aspose.Words For .NET是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外,API支持所有流行的Word处理文件格式,并允许将Word文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。

>>Aspose.Words for .NET已经更新至最新版,新增4大新功能,包括Xamarin不再需要单独的DLL,FindReplaceOptions类扩展了新属性,实现了“ Letterlike”符号的正确呈现以及支持在文本框范围内动态拉伸图像,以及3钟增强型功能,点击下载体验

Aspose文档管理产品  Aspose技术交流群(761297826)


使用Document.Compare方法可以比较两个文档以查看它们之间的差异。此方法模仿Microsoft Word的“比较”功能,并由于许多编辑和格式修订而产生文档差异。主要方法是,如果我们拒绝所有修订,那么将获得与原始文档相同的文档。相反,如果接受所有修订,则将获得最终(比较目标)文档。

局限性

有一些一般限制:

  • 在调用此方法之前,被比较的文档不得进行任何修订。
  • 标记-仅限于SmartTag。其他标记将被完全忽略。
  • Dml-比较后备形状,而不是实际的Dml比较。

有一个关于“相等”的重要说明。实际上,“平等”在这里意味着比较方法不能将更改表示为修订。通常,这意味着文档文本和文本格式都相同。但是文档之间可能会有其他差异。例如,Word仅支持样式的格式修订,而我们不能表示样式的插入/删除。因此,文档可以具有不同的样式集,并且Compare方法仍然不会产生任何修订。

以下代码示例演示了正常比较情况。

Document docA = new Document(dataDir + "TestFile.doc");
Document docB = new Document(dataDir + "TestFile - Copy.doc");
// DocA now contains changes as revisions. 
docA.Compare(docB, "user", DateTime.Now);

下面的代码示例演示如何测试Word文档是否为“相等”。

Document docA = new Document(dataDir + "TestFile.doc");
Document docB = new Document(dataDir + "TestFile - Copy.doc");
// DocA now contains changes as revisions. 
docA.Compare(docB, "user", DateTime.Now);
if (docA.Revisions.Count == 0)
    Console.WriteLine("Documents are equal");
else
    Console.WriteLine("Documents are not equal");

比较Word文档并忽略文档格式

CompareOptions类允许选择用于文档比较操作的高级选项。比较文档时,可以忽略文档格式,页眉-页脚,字段,脚注,表,文本框,注释和大小写更改。将CompareOptions.IgnoreFormatting属性的值设置为true以忽略文档格式。将CompareOptions.IgnoreHeadersAndFooters设置为true时,将忽略页眉和页脚内容。下面的代码示例演示如何忽略文档的格式和页眉页脚内容。

Document docA = new Document(dataDir + "TestFile.doc");
Document docB = new Document(dataDir + "TestFile - Copy.doc");

CompareOptions options = new CompareOptions();
options.IgnoreFormatting = true;
options.IgnoreHeadersAndFooters = true;
options.IgnoreCaseChanges = true;
options.IgnoreTables = true;
options.IgnoreFields = true;
options.IgnoreComments = true;
options.IgnoreTextboxes = true;
options.IgnoreFootnotes = true;

// DocA now contains changes as revisions. 
docA.Compare(docB, "user", DateTime.Now, options);
if (docA.Revisions.Count == 0)
    Console.WriteLine("Documents are equal");
else
    Console.WriteLine("Documents are not equal");

设置目标文档以进行比较差异

MS Word在比较文档对话框中有“显示更改”选项,比较结果取决于此选项。CompareOptions.Target属性用于此目的。此属性指定在比较期间应将哪个文档用作目标。例如,此选项与IgnoreFormatting设置一起确定必须将哪个文档用作文本范围相等的格式源。ComparisonTargetType枚举用于指定将在比较期间使用的基础文档。下面的代码示例演示如何设置目标文档以比较两个文档。

Document docA = new Document(dataDir + "TestFile.doc");
Document docB = new Document(dataDir + "TestFile - Copy.doc");

CompareOptions options = new CompareOptions();
options.IgnoreFormatting = true;
// Relates to Microsoft Word "Show changes in" option in "Compare Documents" dialog box. 
options.Target = ComparisonTargetType.New;

docA.Compare(docB, "user", DateTime.Now, options);
 类似资料: