Arbeiten mit bearbeitbaren Bereichen
Arbeiten mit editierbaren Bereichen
Dieser Leitfaden zeigt, wie man bearbeitbare Bereiche prüft und entfernt – die Regionen, die Word-„Restrict Editing“ von der allgemeinen Bearbeitungseinschränkung eines Dokuments ausnimmt, optional auf einen bestimmten Benutzer oder eine Gruppe beschränkt – in Aspose.Words FOSS für .NET. Ein bearbeitbarer Bereich wird im Dokumentbaum von einem Paar Markierungs-Knoten umschlossen, EditableRangeStart and EditableRangeEnd, und als Ganzes beschrieben durch die EditableRange Fassade-Klasse.
Editierbare Bereiche in einem Dokument finden
Es gibt keine einzelne Sammlungs-Eigenschaft für editierbare Bereiche; finden Sie sie, indem Sie den Knotenbaum durchlaufen. CompositeNode.GetChildNodes(nodeType, isDeep) mit NodeType.EditableRangeStart gibt jeden EditableRangeStart-Knoten im Dokument zurück (oder in einem Unterbaum, wenn es auf einem Knoten aufgerufen wird, der nicht Document ist). Jede EditableRangeStart.EditableRange-Eigenschaft liefert dann das entsprechende EditableRange-Fassade-Objekt.
Die EditableRange-Fassade
EditableRange beschreibt einen einzelnen editierbaren Bereich als Ganzes: Id identifiziert ihn, SingleUser benennt optional einen bestimmten Benutzer, der ihn bearbeiten darf, und EditorGroup (ein EditorType-Wert) benennt stattdessen optional eine Bearbeitungsgruppe. EditableRangeStart und EditableRangeEnd geben das Paar Markierungs-Knoten zurück, das den Bereich im Dokument umschließt. EditableRange.Remove() entfernt den editierbaren Bereich – hebt die Ausnahme von der Bearbeitungseinschränkung für diesen Abschnitt auf, ohne den Dokumentinhalt darin zu löschen.
Die Markierungs-Knoten: EditableRangeStart und EditableRangeEnd
EditableRangeStart und EditableRangeEnd sind versiegelte Node Unterklassen, die die Grenzen eines Bereichs im Inhaltsfluss des Dokuments markieren. EditableRangeStart.Id und EditableRangeEnd.Id identifizieren den Bereich; EditableRangeStart.EditableRange greift direkt auf das Fassadenobjekt zu, und EditableRangeEnd.EditableRangeStart greift zurück auf den entsprechenden Startmarker. Da sie gewöhnliche Knoten sind, unterstützen beide die Standard-Node-Member – ParentNode, Document, PreviousSibling, NextSibling und Remove(), um den einzelnen Marker zu löschen.
Zugriff einschränken mit EditorType
EditorType listet die Bearbeitungsgruppen auf, auf die ein EditableRange.EditorGroup verweisen kann: Administrators, Contributors, Editors, Owners, Everyone, Current, None und Unspecified (auch verfügbar als Default, ein Alias für Unspecified).
Tipps und bewährte Vorgehensweisen
- Verwenden Sie
GetChildNodes(NodeType.EditableRangeStart, true)zusammen mitisDeep: true, um editierbare Bereiche überall im Dokument zu finden, nicht nur unter den unmittelbaren Kindknoten eines Knotens. - Lesen Sie
EditableRange.SingleUserundEditorGroupzusammen, um zu bestimmen, für wen ein Bereich eingeschränkt ist – ein Bereich kann auf einen bestimmten Benutzer, eine Bearbeitungsgruppe oder auf keinen von beiden beschränkt sein. - Rufen Sie
EditableRange.Remove()(auf der Fassade) auf, anstatt dieEditableRangeStart- undEditableRangeEnd-Markerknoten einzeln zu entfernen, damit beide Enden des Bereichs konsequent bereinigt werden.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| Es wurden keine bearbeitbaren Bereiche gefunden, obwohl das Dokument eingeschränkte Bearbeitung hat. | Suche verwendete den Standard-(flachen) GetChildNodes-Aufruf. | Übergeben Sie isDeep: true, damit die Suche den gesamten Dokumentunterbaum abdeckt. |
| Das Entfernen eines bearbeitbaren Bereichs entfernt nicht den eingeschlossenen Text. | EditableRange.Remove() entfernt nur die Bereichsmarker und die Bearbeitungsausnahme, nicht den Inhalt dazwischen. | Das ist erwartungsgemäß – löschen Sie den Inhalt separat, falls er ebenfalls entfernt werden soll. |
EditorGroup wird als Unspecified gelesen, obwohl Word eine benannte Gruppe anzeigt. | Die Editorgruppe des Bereichs im Quelldokument wird zu EditorType.Unspecified/Default abgebildet, anstatt zu einem der Werte der benannten Gruppen. | Überprüfen Sie SingleUser ebenfalls – der Bereich könnte stattdessen auf einen einzelnen Benutzer beschränkt sein |
FAQ
Wie finde ich alle bearbeitbaren Bereiche in einem Dokument?
Rufen Sie Document.GetChildNodes(NodeType.EditableRangeStart, true) auf, dann lesen Sie die EditableRange-Eigenschaft jedes zurückgegebenen EditableRangeStart-Knotens.
Wie erkenne ich, wer einen bestimmten Bereich bearbeiten darf?
Lesen Sie EditableRange.SingleUser (ein bestimmter Benutzer) und EditableRange.EditorGroup (eine EditorType Bearbeitungsgruppe) im Fassadenobjekt.
Wie entferne ich eine Bearbeitungseinschränkung aus einem Teil eines Dokuments?
Rufen Sie Remove() auf dem EditableRange-Fassadenobjekt für diesen Bereich auf.
Was ist der Unterschied zwischen EditableRangeStart.EditableRange und EditableRangeEnd.EditableRangeStart?
EditableRangeStart.EditableRange erreicht das Fassade-Objekt, das den gesamten Bereich direkt beschreibt. EditableRangeEnd.EditableRangeStart greift zurück auf den entsprechenden Startmarker-Knoten, von dem aus EditableRange dann erreicht werden kann.
API Reference Zusammenfassung
| Klasse / Enum | Beschreibung |
|---|---|
EditableRange | Fassade für einen editierbaren Bereich: Id, SingleUser, EditorGroup, Remove() |
EditableRangeStart | Knoten, der den Beginn eines Bereichs markiert; Id, EditableRange |
EditableRangeEnd | Knoten, der das Ende eines Bereichs markiert; Id, EditableRangeStart |
EditorType | Aufzählung der Bearbeitungsgruppen: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default |