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