Trabajando con rangos editables

Trabajando con rangos editables

Trabajando con rangos editables

Esta guía muestra cómo inspeccionar y eliminar rangos editables – las regiones que la función “Restrict Editing” de Word excluye de la restricción de edición general del documento, opcionalmente limitadas a un usuario o grupo específico – en Aspose.Words FOSS para .NET. Un rango editable está entrelazado en el árbol del documento por un par de nodos marcador, EditableRangeStart and EditableRangeEnd, y descrito en su totalidad por el EditableRange clase fachada.


Encontrando rangos editables en un documento

No existe una única propiedad de colección para los rangos editables; encuéntralos recorriendo el árbol de nodos. CompositeNode.GetChildNodes(nodeType, isDeep) con NodeType.EditableRangeStart devuelve cada nodo EditableRangeStart en el documento (o en un subárbol, si se llama sobre un nodo distinto de Document). Cada propiedad EditableRangeStart.EditableRange devuelve entonces el objeto fachada EditableRange correspondiente.


La fachada EditableRange

EditableRange describe un único rango editable en su totalidad: Id lo identifica, SingleUser opcionalmente nombra a un usuario específico que tiene permiso para editarlo, y EditorGroup (un valor EditorType) opcionalmente nombra a un grupo de edición en su lugar. EditableRangeStart y EditableRangeEnd devuelven el par de nodos marcador que delimitan el rango en el documento. EditableRange.Remove() elimina el rango editable – levantando la exención de restricción de edición para esa región, sin eliminar el contenido del documento dentro de ella.


Los nodos marcador: EditableRangeStart y EditableRangeEnd

EditableRangeStart y EditableRangeEnd son subclases selladas Node que marcan los límites de un rango en el flujo de contenido del documento. EditableRangeStart.Id y EditableRangeEnd.Id identifican el rango; EditableRangeStart.EditableRange accede directamente al objeto fachada, y EditableRangeEnd.EditableRangeStart vuelve al marcador de inicio correspondiente. Siendo nodos ordinarios, ambos soportan los miembros estándar Node — ParentNode, Document, PreviousSibling, NextSibling y Remove() para eliminar el marcador individual.


Restringiendo el acceso con EditorType

EditorType enumera los grupos de edición que un EditableRange.EditorGroup puede referenciar: Administrators, Contributors, Editors, Owners, Everyone, Current, None y Unspecified (también disponible como Default, un alias de Unspecified).


Consejos y mejores prácticas

  • Utilice GetChildNodes(NodeType.EditableRangeStart, true) con isDeep: true para encontrar rangos editables en cualquier parte del documento, no solo entre los hijos inmediatos de un nodo.
  • Lea EditableRange.SingleUser y EditorGroup juntos para determinar a quién está restringido un rango — un rango puede estar limitado a un usuario específico, a un grupo de edición, o a ninguno.
  • Llame a EditableRange.Remove() (en la fachada) en lugar de eliminar los nodos marcador EditableRangeStart y EditableRangeEnd de forma individual, de modo que ambos extremos del rango se limpien de manera consistente.

Problemas comunes

ProblemaCausaCorrección
No se encuentran rangos editables aunque el documento tiene edición restringidaLa búsqueda usó la llamada predeterminada (superficial) GetChildNodesPase isDeep: true para que la búsqueda cubra todo el subárbol del documento
Eliminar un rango editable no elimina el texto incluidoEditableRange.Remove() solo elimina los marcadores de rango y la exención de edición, no el contenido entre ellosEsto es esperado – elimine el contenido por separado si también debe eliminarse
EditorGroup se lee como Unspecified aunque Word muestra un grupo con nombreEl grupo de editor del rango en el documento fuente se asigna a EditorType.Unspecified/Default en lugar de a uno de los valores del grupo con nombreVerifique SingleUser también – el rango puede estar limitado a un usuario individual

FAQ

¿Cómo encuentro todos los rangos editables en un documento?

Llame a Document.GetChildNodes(NodeType.EditableRangeStart, true), luego lea la propiedad EditableRange en cada nodo EditableRangeStart devuelto.

¿Cómo puedo saber quién está autorizado a editar un rango dado?

Lea EditableRange.SingleUser (un usuario específico) y EditableRange.EditorGroup (un grupo de edición EditorType) en el objeto fachada.

¿Cómo elimino una restricción de edición de una parte de un documento?

Llame a Remove() en el objeto fachada EditableRange para ese rango.

¿Cuál es la diferencia entre EditableRangeStart.EditableRange y EditableRangeEnd.EditableRangeStart?

EditableRangeStart.EditableRange alcanza el objeto fachada que describe todo el rango directamente. EditableRangeEnd.EditableRangeStart retrocede al nodo marcador de inicio correspondiente, desde el cual EditableRange puede ser alcanzado.


API Reference Resumen

Clase / EnumeraciónDescripción
EditableRangeFachada para un rango editable: Id, SingleUser, EditorGroup, Remove()
EditableRangeStartNodo que marca el inicio de un rango; Id, EditableRange
EditableRangeEndNodo que marca el final de un rango; Id, EditableRangeStart
EditorTypeEnumeración de grupos de edición: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default

Ver también

 Español