Arbeiten mit bearbeitbaren Bereichen

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 mit isDeep: true, um editierbare Bereiche überall im Dokument zu finden, nicht nur unter den unmittelbaren Kindknoten eines Knotens.
  • Lesen Sie EditableRange.SingleUser und EditorGroup zusammen, 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 die EditableRangeStart- und EditableRangeEnd-Markerknoten einzeln zu entfernen, damit beide Enden des Bereichs konsequent bereinigt werden.

Häufige Probleme

ProblemUrsacheLö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 / EnumBeschreibung
EditableRangeFassade für einen editierbaren Bereich: Id, SingleUser, EditorGroup, Remove()
EditableRangeStartKnoten, der den Beginn eines Bereichs markiert; Id, EditableRange
EditableRangeEndKnoten, der das Ende eines Bereichs markiert; Id, EditableRangeStart
EditorTypeAufzählung der Bearbeitungsgruppen: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default

Siehe auch

 Deutsch