Revisions

Revisions

Это руководство показывает, как просматривать, принимать, отклонять и фиксировать отслеживаемые изменения в документе Word с помощью Aspose.Words FOSS для .NET. Aspose.Words FOSS для .NET может просматривать, принимать и отклонять отслеживаемые изменения (ревизии) в документе Word через Document.Revisions, а также фиксировать новые отслеживаемые изменения при редактировании через Document.StartTrackRevisions()/StopTrackRevisions().


Чтение отслеживаемых изменений

Document.Revisions возвращает RevisionCollection каждого Revision в документе; 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.HasRevisions перед перебором Document.Revisions, чтобы избежать лишней работы с документами без отслеживаемых изменений.
  • Отдавайте предпочтение RevisionCollection.Accept(criteria)/Reject(criteria) с пользовательским IRevisionCriteria вместо ручной фильтрации и вызова Revision.Accept() по одному.
  • RevisionGroup полезен для представления удобочитаемого резюме изменений — группировка последовательных правок одного автора и одного типа избавляет от обработки каждого вставленного символа как отдельного пункта.
  • Всегда сочетайте StartTrackRevisions() с последующим вызовом StopTrackRevisions(), чтобы несвязанные правки не фиксировались как отслеживаемые изменения.

Распространённые проблемы

ПроблемаПричинаИсправление
Document.Revisions пуст после правокStartTrackRevisions() никогда не вызывался перед правкойВызовите StartTrackRevisions(author) перед внесением правок, которые нужно отслеживать
RevisionCollection.Accept(criteria) ничего не принимаетIRevisionCriteria.IsMatch() не совпадает ни с одной ревизиейСначала проверьте логику критериев на фактических значениях Revision.Author/RevisionType/ParentNode values first
Документ по-прежнему отображает разметку отслеживаемых изменений после AcceptAllRevisions()Просмотр состояния, а не данных ревизииУстановите Document.RevisionsView в Final, если вам нужен просмотр разрешённого содержимого

FAQ

Как проверить, содержит ли документ какие-либо отслеживаемые изменения?

Прочтите Document.HasRevisions — это true, если Document.Revisions содержит хотя бы один Revision.

В чём разница между 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.RevisionsRevisionCollection всех отслеживаемых изменений в документе
RevisionОдно отслеживаемое изменение: Author, DateTime, RevisionType, Accept(), Reject()
RevisionCollectionAcceptAll(), RejectAll(), Accept(criteria), Reject(criteria), Groups
RevisionGroup / RevisionGroupCollectionПоследовательные изменения одного автора и одного типа группируются вместе
IRevisionCriteriaПользовательский предикат (IsMatch(revision)) для выборочного принятия/отклонения
Document.StartTrackRevisions() / StopTrackRevisions()Записывайте новые правки как отслеживаемые изменения
Document.RevisionsViewOriginal или Final представление пересмотренного контента

См. также:

 Русский