Praca z edytowalnymi zakresami

Praca z edytowalnymi zakresami

Praca z zakresami edytowalnymi

Ten przewodnik pokazuje, jak przeglądać i usuwać zakresy edytowalne — regiony, które funkcja Worda „Restrict Editing” wyłącza z ogólnego ograniczenia edycji dokumentu, opcjonalnie ograniczone do konkretnego użytkownika lub grupy — w Aspose.Words FOSS dla .NET. Zakres edytowalny jest otoczony w drzewie dokumentu parą węzłów znaczników, EditableRangeStart and EditableRangeEnd, i opisany w całości przez EditableRange klasę fasadową.


Wyszukiwanie zakresów edytowalnych w dokumencie

Nie istnieje pojedyncza właściwość kolekcji dla zakresów edytowalnych; należy je znaleźć, przeglądając drzewo węzłów. CompositeNode.GetChildNodes(nodeType, isDeep) z NodeType.EditableRangeStart zwraca każdy węzeł EditableRangeStart w dokumencie (lub w poddrzewie, jeśli wywołano na węźle innym niż Document). Każda właściwość EditableRangeStart.EditableRange zwraca następnie odpowiadający obiekt fasady EditableRange.


Fasada EditableRange

EditableRange opisuje pojedynczy zakres edytowalny jako całość: Id go identyfikuje, SingleUser opcjonalnie podaje nazwę konkretnego użytkownika uprawnionego do edycji, a EditorGroup (wartość EditorType) opcjonalnie podaje nazwę grupy edytującej zamiast tego. EditableRangeStart i EditableRangeEnd zwracają parę węzłów znacznika, które otaczają zakres w dokumencie. EditableRange.Remove() usuwa zakres edytowalny — znosząc zwolnienie z ograniczenia edycji dla tego regionu, bez usuwania zawartości dokumentu wewnątrz niego.


Węzły znacznika: EditableRangeStart i EditableRangeEnd

EditableRangeStart i EditableRangeEnd są zamkniętymi podklasami Node, które oznaczają granice zakresu w przepływie treści dokumentu. EditableRangeStart.Id i EditableRangeEnd.Id identyfikują zakres; EditableRangeStart.EditableRange odwołuje się bezpośrednio do obiektu fasady, a EditableRangeEnd.EditableRangeStart odwołuje się do odpowiadającego znacznika początkowego. Będąc zwykłymi węzłami, oba obsługują standardowe Node — ParentNode, Document, PreviousSibling, NextSibling i Remove(), aby usunąć pojedynczy znacznik.


Ograniczanie dostępu za pomocą EditorType

EditorType wymienia grupy edycyjne, które EditableRange.EditorGroup może odwoływać: Administrators, Contributors, Editors, Owners, Everyone, Current, None i Unspecified (dostępne także jako Default, alias dla Unspecified).


Wskazówki i najlepsze praktyki

  • Użyj GetChildNodes(NodeType.EditableRangeStart, true) z isDeep: true, aby znaleźć edytowalne zakresy w dowolnym miejscu dokumentu, a nie tylko wśród bezpośrednich potomków węzła.
  • Przeczytaj EditableRange.SingleUser i EditorGroup razem, aby określić, do kogo zakres jest ograniczony — zakres może być przypisany jednemu konkretnemu użytkownikowi, jednej grupie edycyjnej lub żadnemu.
  • Wywołaj EditableRange.Remove() (na fasadzie) zamiast usuwać poszczególne węzły znacznika EditableRangeStart i EditableRangeEnd, aby oba końce zakresu były czyszczone konsekwentnie.

Typowe problemy

ProblemPrzyczynaRozwiązanie
Nie znaleziono zakresów edytowalnych, mimo że dokument ma ograniczoną edycjęWyszukiwanie użyło domyślnego (płytkiego) wywołania GetChildNodesPrzekaż isDeep: true, aby wyszukiwanie obejmowało całe poddrzewo dokumentu
Usunięcie zakresu edytowalnego nie usuwa zawartego tekstuEditableRange.Remove() usuwa tylko znaczniki zakresu i zwolnienie z edycji, a nie zawartość pomiędzy nimiTo jest oczekiwane – usuń zawartość osobno, jeśli również ma zostać usunięta
EditorGroup odczytuje się jako Unspecified, mimo że Word wyświetla grupę nazwanąGrupa edytora zakresu w dokumencie źródłowym mapuje się na EditorType.Unspecified/Default, a nie na jedną z wartości grupy nazwanejSprawdź także SingleUser – zakres może być zamiast tego ograniczony do pojedynczego użytkownika

FAQ

Jak znaleźć wszystkie edytowalne zakresy w dokumencie?

Wywołaj Document.GetChildNodes(NodeType.EditableRangeStart, true), a następnie odczytaj właściwość EditableRange na każdym zwróconym węźle EditableRangeStart.

Jak sprawdzić, kto ma uprawnienia do edycji danego zakresu?

Odczytaj EditableRange.SingleUser (konkretnego użytkownika) oraz EditableRange.EditorGroup (grupę edytującą EditorType) na obiekcie fasady.

Jak usunąć ograniczenie edycji z części dokumentu?

Wywołaj Remove() na obiekcie fasady EditableRange dla tego zakresu.

Jaka jest różnica między EditableRangeStart.EditableRange a EditableRangeEnd.EditableRangeStart?

EditableRangeStart.EditableRange bezpośrednio dociera do obiektu fasady opisującego cały zakres. EditableRangeEnd.EditableRangeStart cofa się do odpowiadającego węzła znacznika początkowego, z którego można następnie dotrzeć do EditableRange.


API Reference Podsumowanie

Klasa / EnumOpis
EditableRangeFasada dla jednego edytowalnego zakresu: Id, SingleUser, EditorGroup, Remove()
EditableRangeStartWęzeł oznaczający początek zakresu; Id, EditableRange
EditableRangeEndWęzeł oznaczający koniec zakresu; Id, EditableRangeStart
EditorTypeWyliczenie grup edycji: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default

Zobacz także

 Polski