Travailler avec les plages éditables
Travailler avec les plages modifiables
Ce guide montre comment inspecter et supprimer les plages modifiables – les régions que la fonction “Restrict Editing” de Word exclut de la restriction d’édition globale d’un document, éventuellement limitées à un utilisateur ou à un groupe spécifique – dans Aspose.Words FOSS pour .NET. Une plage modifiable est encadrée dans l’arborescence du document par une paire de nœuds marqueurs, EditableRangeStart and EditableRangeEnd, et décrite dans son ensemble par le EditableRange classe de façade.
Trouver les plages modifiables dans un document
Il n’existe pas de propriété de collection unique pour les plages modifiables; trouvez-les en parcourant l’arbre des nœuds. CompositeNode.GetChildNodes(nodeType, isDeep) avec NodeType.EditableRangeStart renvoie chaque nœud EditableRangeStart du document (ou d’un sous-arbre, si appelé sur un nœud autre que Document). Chaque propriété EditableRangeStart.EditableRange renvoie alors l’objet de façade EditableRange correspondant.
La façade EditableRange
EditableRange décrit une seule plage modifiable dans son ensemble: Id l’identifie, SingleUser nomme éventuellement un utilisateur spécifique autorisé à la modifier, et EditorGroup (une valeur EditorType) nomme éventuellement un groupe d’édition à la place. EditableRangeStart et EditableRangeEnd renvoient la paire de nœuds marqueurs qui encadrent la plage dans le document. EditableRange.Remove() supprime la plage modifiable – levant l’exemption de restriction d’édition pour cette région, sans supprimer le contenu du document qu’elle contient.
Les nœuds marqueurs: EditableRangeStart et EditableRangeEnd
EditableRangeStart et EditableRangeEnd sont des sous-classes scellées Node qui marquent les limites d’une plage dans le flux de contenu du document. EditableRangeStart.Id et EditableRangeEnd.Id identifient la plage; EditableRangeStart.EditableRange accède directement à l’objet façade, et EditableRangeEnd.EditableRangeStart revient au marqueur de début correspondant. En tant que nœuds ordinaires, les deux prennent en charge les membres standards Node — ParentNode, Document, PreviousSibling, NextSibling et Remove() pour supprimer le marqueur individuel.
Restreindre l’accès avec EditorType
EditorType répertorie les groupes d’édition qu’un EditableRange.EditorGroup peut référencer: Administrators, Contributors, Editors, Owners, Everyone, Current, None et Unspecified (également disponible sous le nom Default, un alias de Unspecified).
Conseils et bonnes pratiques
- Utilisez
GetChildNodes(NodeType.EditableRangeStart, true)avecisDeep: truepour trouver des plages modifiables n’importe où dans le document, pas seulement parmi les enfants immédiats d’un nœud. - Lisez
EditableRange.SingleUseretEditorGroupensemble pour déterminer à qui une plage est restreinte — une plage peut être limitée à un utilisateur précis, à un groupe d’édition, ou à aucun. - Appelez
EditableRange.Remove()(sur la façade) plutôt que de supprimer les nœuds marqueursEditableRangeStartetEditableRangeEndindividuellement, afin que les deux extrémités de la plage soient nettoyées de manière cohérente.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
| Aucune plage éditable n’est trouvée même si le document possède une édition restreinte | La recherche a utilisé l’appel GetChildNodes par défaut (peu profond) | Passez isDeep: true afin que la recherche couvre toute la sous-arborescence du document |
| Supprimer une plage éditable ne supprime pas le texte inclus | EditableRange.Remove() ne supprime que les marqueurs de plage et l’exemption d’édition, pas le contenu entre eux | C’est prévu – supprimez le contenu séparément s’il doit également être supprimé |
EditorGroup s’affiche comme Unspecified même si Word indique un groupe nommé | Le groupe d’édition de la plage dans le document source se mappe à EditorType.Unspecified/Default plutôt qu’à l’une des valeurs du groupe nommé | Vérifiez également SingleUser – la plage peut éventuellement être limitée à un utilisateur individuel |
FAQ
Comment trouver toutes les plages éditables dans un document?
Appelez Document.GetChildNodes(NodeType.EditableRangeStart, true), puis lisez la propriété EditableRange sur chaque nœud EditableRangeStart retourné.
Comment savoir qui est autorisé à modifier une plage donnée?
Lisez EditableRange.SingleUser (un utilisateur spécifique) et EditableRange.EditorGroup (un groupe d’édition EditorType) sur l’objet façade.
Comment supprimer une restriction d’édition d’une partie d’un document?
Appelez Remove() sur l’objet façade EditableRange pour cette plage.
Quelle est la différence entre EditableRangeStart.EditableRange et EditableRangeEnd.EditableRangeStart?
EditableRangeStart.EditableRange atteint directement l’objet façade décrivant l’ensemble de la plage. EditableRangeEnd.EditableRangeStart remonte au nœud marqueur de début correspondant, à partir duquel EditableRange peut alors être atteint.
API Reference Résumé
| Classe / Enum | Description |
|---|---|
EditableRange | Façade pour une plage éditable : Id, SingleUser, EditorGroup, Remove() |
EditableRangeStart | Nœud marquant le début d’une plage ; Id, EditableRange |
EditableRangeEnd | Nœud marquant la fin d’une plage ; Id, EditableRangeStart |
EditorType | Énumération des groupes d’édition : Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default |