Aspose.Words for .NET使用文档教程(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技术交流群(761297826

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值