Práce s editovatelnými oblastmi

Práce s editovatelnými oblastmi

Práce s editovatelnými oblastmi

Tento návod ukazuje, jak prohlížet a odstraňovat editovatelné oblasti – regiony, které funkce Wordu „Restrict Editing“ vylučuje z celkového omezení úprav dokumentu, volitelně omezené na konkrétního uživatele nebo skupinu – v Aspose.Words FOSS pro .NET. Editovatelný rozsah je v stromu dokumentu ohraničen dvojicí značkových uzlů, EditableRangeStart and EditableRangeEnd, a jako celek je popisován pomocí EditableRange třídy fasády.


Vyhledávání editovatelných oblastí v dokumentu

Neexistuje jediná vlastnost kolekce pro editovatelné oblasti; najdete je procházením stromu uzlů. CompositeNode.GetChildNodes(nodeType, isDeep) s NodeType.EditableRangeStart vrací každý EditableRangeStart uzel v dokumentu (nebo v podstromu, pokud je voláno na uzlu jiném než Document). Každá vlastnost EditableRangeStart.EditableRange pak vrací odpovídající fasádní objekt EditableRange.


Fasáda EditableRange

EditableRange popisuje jednu editovatelnou oblast jako celek: Id ji identifikuje, SingleUser volitelně pojmenovává konkrétního uživatele, který ji může upravovat, a EditorGroup (hodnota typu EditorType) volitelně pojmenovává místo toho skupinu upravovatelů. EditableRangeStart a EditableRangeEnd vracejí dvojici značkovacích uzlů, které oblast v dokumentu ohraničují. EditableRange.Remove() odstraňuje editovatelnou oblast – zruší výjimku z omezení úprav pro tento region, aniž by smazal obsah dokumentu uvnitř ní.


Značkové uzly: EditableRangeStart a EditableRangeEnd

EditableRangeStart a EditableRangeEnd jsou uzavřené podtřídy Node, které označují hranice rozsahu v toku obsahu dokumentu. EditableRangeStart.Id a EditableRangeEnd.Id identifikují rozsah; EditableRangeStart.EditableRange dosahuje přímo objektu fasády a EditableRangeEnd.EditableRangeStart se vrací k odpovídajícímu počátečnímu značkovači. Jako běžné uzly oba podporují standardní členy Node – ParentNode, Document, PreviousSibling, NextSibling a Remove() pro smazání jednotlivého značkovače.


Omezení přístupu pomocí EditorType

EditorType vypisuje editační skupiny, na které může odkazovat EditableRange.EditorGroup: Administrators, Contributors, Editors, Owners, Everyone, Current, None a Unspecified (také k dispozici jako Default, alias pro Unspecified).


Tipy a osvědčené postupy

  • Použijte GetChildNodes(NodeType.EditableRangeStart, true) s isDeep: true k nalezení editovatelných rozsahů kdekoli v dokumentu, nejen mezi okamžitými potomky uzlu.
  • Přečtěte si EditableRange.SingleUser a EditorGroup společně, abyste určili, na koho je rozsah omezen – rozsah může být omezen na jednoho konkrétního uživatele, jednu editační skupinu nebo na nikoho.
  • Zavolejte EditableRange.Remove() (na fasádě) místo odstraňování uzlů značkovačů EditableRangeStart a EditableRangeEnd jednotlivě, aby oba konce rozsahu byly důsledně vyčištěny.

Časté problémy

ProblémPříčinaOprava
Nebyla nalezena žádná editovatelná oblast, i když má dokument omezené úpravyVyhledávání použilo výchozí (povrchní) GetChildNodes voláníPředejte isDeep: true, aby vyhledávání zahrnovalo celý podstrom dokumentu
Odstranění editovatelné oblasti neodstraní obsažený textEditableRange.Remove() odstraňuje pouze značky oblasti a výjimku úprav, ne obsah mezi nimiJe to očekávané – obsah odstraňte samostatně, pokud má být také smazán
EditorGroup se čte jako Unspecified, i když Word zobrazuje pojmenovanou skupinuEditorová skupina oblasti ve zdrojovém dokumentu se mapuje na EditorType.Unspecified/Default místo jedné z hodnot pojmenované skupinyZkontrolujte také SingleUser – rozsah může být místo toho omezen na jednotlivého uživatele

FAQ

Jak najdu všechny editovatelné rozsahy v dokumentu?

Zavolejte Document.GetChildNodes(NodeType.EditableRangeStart, true), poté přečtěte vlastnost EditableRange u každého vráceného uzlu EditableRangeStart.

Jak zjistím, kdo má povoleno upravovat daný rozsah?

Přečtěte EditableRange.SingleUser (konkrétní uživatel) a EditableRange.EditorGroup (editační skupina EditorType) na objektu fasády.

Jak odstraním omezení úprav z části dokumentu?

Zavolejte Remove() na objektu fasády EditableRange pro tento rozsah.

Jaký je rozdíl mezi EditableRangeStart.EditableRange a EditableRangeEnd.EditableRangeStart?

EditableRangeStart.EditableRange dosahuje přímo k facade objektu popisujícímu celý rozsah. EditableRangeEnd.EditableRangeStart se vrací k odpovídajícímu uzlu startovního markeru, ze kterého lze poté dosáhnout EditableRange.


API Reference Shrnutí

Třída / EnumPopis:
EditableRangeFasáda pro jeden editovatelný rozsah: Id, SingleUser, EditorGroup, Remove()
EditableRangeStartUzel označující začátek rozsahu; Id, EditableRange
EditableRangeEndUzel označující konec rozsahu; Id, EditableRangeStart
EditorTypeVýčet editačních skupin: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default

Viz také:

 Čeština