Робота з редагованими діапазонами

Робота з редагованими діапазонами

Робота з редагованими діапазонами

Цей посібник показує, як перевіряти та видаляти редаговані діапазони — області, які функція Word «Обмежити редагування» виключає з загального обмеження редагування документа, за необхідності застосовуючи їх до конкретного користувача або групи — у Aspose.Words FOSS для .NET. Редагований діапазон у дереві документа обрамлений парою маркерних вузлів, EditableRangeStart and EditableRangeEnd, і описується в цілому як EditableRange фасадний клас.


Пошук редагованих діапазонів у документі

Не існує єдиного властивості колекції для редагованих діапазонів; знаходьте їх, обходячи дерево вузлів. CompositeNode.GetChildNodes(nodeType, isDeep) з NodeType.EditableRangeStart повертає кожен EditableRangeStart вузол у документі (або у піддереві, якщо викликано на вузлі, відмінному від Document). Кожна властивість EditableRangeStart.EditableRange потім повертає відповідний EditableRange фасадний об’єкт.


Фасад EditableRange

EditableRange описує один редагований діапазон в цілому: Id ідентифікує його, SingleUser за потреби називає конкретного користувача, якому дозволено його редагувати, а EditorGroup (значення EditorType) за потреби називає групу редагувальників замість цього. EditableRangeStart та EditableRangeEnd повертають пару маркерних вузлів, які охоплюють діапазон у документі. EditableRange.Remove() видаляє редагований діапазон – знімає виключення з обмеження редагування для цієї області, не видаляючи вміст документа всередині.


Маркерні вузли: EditableRangeStart і EditableRangeEnd

EditableRangeStart і EditableRangeEnd є запечатаними підкласами Node, які позначають межі діапазону у потоці вмісту документа. EditableRangeStart.Id і EditableRangeEnd.Id ідентифікують діапазон; EditableRangeStart.EditableRange звертається безпосередньо до об’єкта фасаду, а EditableRangeEnd.EditableRangeStart повертається до відповідного початкового маркера. Будучи звичайними вузлами, обидва підтримують стандартні члени Node — ParentNode, Document, PreviousSibling, NextSibling і Remove() для видалення окремого маркера.


Обмеження доступу за допомогою EditorType

EditorType перераховує групи редагування, на які може посилатися EditableRange.EditorGroup: Administrators, Contributors, Editors, Owners, Everyone, Current, None та Unspecified (також доступно як Default, псевдонім для Unspecified).


Поради та кращі практики

  • Використовуйте GetChildNodes(NodeType.EditableRangeStart, true) разом з isDeep: true, щоб знаходити редаговані діапазони в будь-якому місці документа, а не лише серед безпосередніх дочірніх елементів вузла.
  • Прочитайте EditableRange.SingleUser і EditorGroup разом, щоб визначити, до кого обмежений діапазон — діапазон може бути обмежений одним конкретним користувачем, однією групою редагування або ні тим, ні іншим.
  • Викличте EditableRange.Remove() (на фасаді) замість того, щоб окремо видаляти вузли маркерів EditableRangeStart і EditableRangeEnd, щоб обидва кінці діапазону очищалися послідовно.

Типові проблеми

ПроблемаПричинаВиправлення
Не знайдено редагованих діапазонів, незважаючи на те, що документ має обмежене редагуванняПошук використав типовий (поверхневий) GetChildNodes викликПередайте isDeep: true, щоб пошук охопив весь піддерево документа
Видалення редагованого діапазону не видаляє вкладений текстEditableRange.Remove() лише видаляє маркери діапазону та звільнення від редагування, а не вміст між нимиЦе очікувано — видаліть вміст окремо, якщо його також потрібно видалити
EditorGroup читається як Unspecified, хоча Word показує іменовану групуГрупа редактора діапазону у вихідному документі відображається як EditorType.Unspecified/Default, а не як одне зі значень іменованої групиПеревірте SingleUser також – діапазон може бути обмежений окремим користувачем

FAQ

Як знайти всі редаговані діапазони в документі?

Викличте Document.GetChildNodes(NodeType.EditableRangeStart, true), потім прочитайте властивість EditableRange у кожному поверненому вузлі EditableRangeStart.

Як визначити, хто має право редагувати даний діапазон?

Прочитайте EditableRange.SingleUser (конкретного користувача) і EditableRange.EditorGroup (групу редагування EditorType) на об’єкті фасаду.

Як видалити обмеження редагування з частини документа?

Викличте Remove() на фасадному об’єкті EditableRange для цього діапазону.

У чому різниця між EditableRangeStart.EditableRange та EditableRangeEnd.EditableRangeStart?

EditableRangeStart.EditableRange безпосередньо досягає фасадного об’єкта, що описує весь діапазон. EditableRangeEnd.EditableRangeStart повертається до відповідного вузла стартового маркера, з якого потім можна досягти EditableRange.


API Reference Підсумок

Клас / ПеречисленняОпис
EditableRangeФасад для одного редагованого діапазону: Id, SingleUser, EditorGroup, Remove()
EditableRangeStartВузол, що позначає початок діапазону; Id, EditableRange
EditableRangeEndВузол, що позначає кінець діапазону; Id, EditableRangeStart
EditorTypeПерелік груп редагування: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default

Дивіться також

 Українська