Revisions

Revisions

本指南展示了如何使用 Aspose.Words FOSS for .NET 检查、接受、拒绝并记录 Word 文档中的跟踪更改。Aspose.Words FOSS for .NET 可以通过 Document.Revisions 检查、接受和拒绝 Word 文档中的跟踪更改(revisions),并且可以在编辑时通过 Document.StartTrackRevisions()/StopTrackRevisions() 记录新的跟踪更改。


读取跟踪更改

Document.Revisions 返回文档中每个 Revision 的 RevisionCollection;Range.Revisions 将相同的范围限制在特定区间。每个 Revision 会报告更改的作者和时间(Author,DateTime),更改的类型(RevisionType:Insertion、Deletion、FormatChange、StyleDefinitionChange 或 Moving),以及适用的位置(ParentNode,ParentStyle)。Document.HasRevisions 会提前告知加载的文档是否包含任何跟踪更改。


接受和拒绝修订

调用 Revision.Accept() 或 Revision.Reject() 可解决单个跟踪更改,或使用 RevisionCollection.AcceptAll() / RejectAll() 一次性处理整个集合。Document.AcceptAllRevisions() 是文档级的便利函数,可一次性接受所有修订。若要有选择地接受或拒绝子集,请实现 IRevisionCriteria.IsMatch(revision) 并将其传递给 RevisionCollection.Accept(criteria) 或 Reject(criteria)。


修订组

来自同一作者且类型相同的连续修订会一起显示为一个 RevisionGroup——可通过 Revision.Group 访问单个修订,或通过 RevisionCollection.Groups(一个 RevisionGroupCollection)访问文档中的每个组。每个组报告其合并的 Text、Author 和 RevisionType。


记录新的已跟踪更改

在进行编辑之前调用 Document.StartTrackRevisions(author) 或其重载版本 StartTrackRevisions(author, dateTime),这样后续的更改会记录为修订而不是直接应用;调用 StopTrackRevisions() 以结束跟踪。Document.TrackRevisions 属性反映跟踪当前是否处于激活状态。


查看原始内容与最终内容

Document.RevisionsView 控制在存在修订时文档是以其 Original 还是 Final 状态(一个 RevisionsView 值)呈现,而不改变底层的修订数据。


技巧与最佳实践

  • 在遍历 Document.Revisions 之前检查 Document.HasRevisions,以跳过对没有已跟踪更改的文档进行不必要的处理。
  • 相比手动过滤并逐个调用 Revision.Accept(),更倾向于使用带自定义 IRevisionCriteria 的 RevisionCollection.Accept(criteria)/Reject(criteria)。
  • RevisionGroup 对于呈现可读的更改摘要非常有用——将连续的同作者、同类型修订进行分组,可以避免把每个插入的字符都视为单独的条目。
  • 始终将 StartTrackRevisions() 与后续的 StopTrackRevisions() 调用配对,以免无关的编辑被记录为修订痕迹。

常见问题

问题原因修复
Document.Revisions 在编辑后为空StartTrackRevisions() 在编辑前从未被调用在进行想要跟踪的编辑之前调用 StartTrackRevisions(author)
RevisionCollection.Accept(criteria) 不接受任何内容IRevisionCriteria.IsMatch() 与任何修订都不匹配首先将标准逻辑与实际的 Revision.Author/RevisionType/ParentNode 值进行核对
文档在 AcceptAllRevisions() 之后仍显示已跟踪的更改标记查看状态,而非修订数据如果需要已解析的内容视图,请将 Document.RevisionsView 设置为 Final

FAQ

如何检查文档是否包含任何修订痕迹?

阅读 Document.HasRevisions ——如果 Document.Revisions 至少包含一个 Revision,则它是 true。

Revision.Accept() 与 RevisionCollection.AcceptAll() 有何区别?

Revision.Accept() 解析单个特定修订;RevisionCollection.AcceptAll()(或 Document.AcceptAllRevisions())一次性解析集合中的所有修订。

我如何仅接受特定作者所做的修订?

实现 IRevisionCriteria.IsMatch(revision) 来检查 revision.Author,然后使用该实现调用 RevisionCollection.Accept(criteria)。

我如何将自己的编辑记录为追踪更改?

在进行编辑之前调用 Document.StartTrackRevisions(author),完成后调用 Document.StopTrackRevisions()。

存在哪些修订类型?

RevisionType 定义了 Insertion、Deletion、FormatChange、StyleDefinitionChange 和 Moving。


API Reference 摘要

类 / 方法描述
Document.Revisions文档中所有已跟踪更改的 RevisionCollection
Revision一个已跟踪的更改:Author, DateTime, RevisionType, Accept(), Reject()
RevisionCollectionAcceptAll(), RejectAll(), Accept(criteria), Reject(criteria), Groups
RevisionGroup / RevisionGroupCollection连续的同作者、同类型修订被归为一组
IRevisionCriteria自定义谓词(IsMatch(revision))用于选择性接受/拒绝
Document.StartTrackRevisions() / StopTrackRevisions()将新编辑记录为修订更改
Document.RevisionsViewOriginal 或 Final 的修订内容呈现

另请参阅

 中文