logo Aspose.Words开发者指南 我也要发布文档

(4):如何比较两个Word文档


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

【下载Aspose.Words for .NET最新试用版】

如何比较两个word文档


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

限制

在这里,有一些普遍的限制:

  • 在调用此方法之前,正在比较的文档必须没有修订。
  • 标记——仅限于SmartTag,其他标记完全被忽略。
  • 比较回退形状,而不是实际的Dml比较。


有一条关于“相等”的重要说明:实际上,“相等”在这里的意思是比较法不能将更改表示为修订。一般来说,这意味着文档文本和文本格式是相同的。但是文档之间可能还有其他不同之处。例如,Word只支持样式的格式修改,我们不能表示样式的插入/删除。因此文档可以有不同的样式集,而Compare方法仍然不会产生修订。


下面的示例显示了正常的比较用例:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
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文档是否“相等”:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
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的值。属性IgnoreFormatting设置为true,以忽略文档格式设置。当CompareOptions时,页眉和页脚内容将被忽略。IgnoreHeadersAndFooters被设置为true。下面的代码示例显示了如何忽略文档的格式化和页眉页脚内容:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
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有“显示更改”选项,比较结果取决于此选项。Target属性用于此目的。此属性指定比较期间将哪个文档应使用作为目标。例如,这个选项和IgnoreFormatting设置一起决定了必须使用哪个文档作为相等文本范围的格式化源。ComparisonTargetType枚举用于指定将在比较期间使用的基本文档。下面的代码示例展示了如何为两个文档的比较设置目标文档:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
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);


为你推荐:Aspose专题 - Aspose最新资源合集


现在购买正版授权,您可有福咯!6月1日-6月30日订购Aspose.Words系列产品,最高立减30000元!>>立即进入抢购通道


850X100.png