Lavorare con le aree modificabili

Lavorare con le aree modificabili

Lavorare con gli intervalli modificabili

Questa guida mostra come ispezionare e rimuovere le aree modificabili – le regioni che la funzione “Restrict Editing” di Word esenta dalla restrizione di modifica complessiva del documento, opzionalmente limitate a un utente o gruppo specifico – in Aspose.Words FOSS per .NET. Un’area modificabile è delimitata nell’albero del documento da una coppia di nodi marcatore, EditableRangeStart and EditableRangeEnd, e descritta nel suo complesso da EditableRange classe facciata.


Trovare gli intervalli modificabili in un documento

Non esiste una singola proprietà di raccolta per gli intervalli modificabili; è necessario trovarli percorrendo l’albero dei nodi. CompositeNode.GetChildNodes(nodeType, isDeep) con NodeType.EditableRangeStart restituisce ogni nodo EditableRangeStart nel documento (o in un sottoalbero, se chiamato su un nodo diverso da Document). Ogni proprietà EditableRangeStart.EditableRange restituisce quindi l’oggetto facciata EditableRange corrispondente.


La facciata EditableRange

EditableRange descrive un singolo intervallo modificabile nella sua interezza: Id lo identifica, SingleUser opzionalmente assegna il nome a un utente specifico autorizzato a modificarlo, e EditorGroup (un valore EditorType) opzionalmente assegna il nome a un gruppo di modifica invece. EditableRangeStart e EditableRangeEnd restituiscono la coppia di nodi marcatore che delimitano l’intervallo nel documento. EditableRange.Remove() rimuove l’intervallo modificabile – sollevando l’esenzione dalla restrizione di modifica per quella regione, senza eliminare il contenuto del documento al suo interno.


I nodi marcatore: EditableRangeStart e EditableRangeEnd

EditableRangeStart e EditableRangeEnd sono sottoclassi Node sigillate che segnano i confini di un intervallo nel flusso di contenuto del documento. EditableRangeStart.Id e EditableRangeEnd.Id identificano l’intervallo; EditableRangeStart.EditableRange accede direttamente all’oggetto facciata, e EditableRangeEnd.EditableRangeStart torna al marcatore di inizio corrispondente. Essendo nodi ordinari, entrambi supportano i membri standard Node – ParentNode, Document, PreviousSibling, NextSibling e Remove() per eliminare il marcatore individuale.


Limitare l’accesso con EditorType

EditorType elenca i gruppi di modifica a cui un EditableRange.EditorGroup può fare riferimento: Administrators, Contributors, Editors, Owners, Everyone, Current, None e Unspecified (disponibile anche come Default, un alias per Unspecified).


Suggerimenti e migliori pratiche

  • Usa GetChildNodes(NodeType.EditableRangeStart, true) con isDeep: true per trovare intervalli modificabili in qualsiasi punto del documento, non solo tra i figli immediati di un nodo.
  • Leggi EditableRange.SingleUser e EditorGroup insieme per determinare a chi è limitato un intervallo — un intervallo può essere limitato a un singolo utente specifico, a un gruppo di modifica, o a nessuno.
  • Invoca EditableRange.Remove() (sulla facciata) anziché rimuovere i nodi marcatore EditableRangeStart e EditableRangeEnd singolarmente, in modo che entrambe le estremità dell’intervallo vengano pulite in modo coerente.

Problemi comuni

ProblemaCausaCorrezione
Non sono stati trovati intervalli modificabili nonostante il documento abbia la modifica limitataLa ricerca ha utilizzato la chiamata predefinita (superficiale) GetChildNodesPassa isDeep: true in modo che la ricerca copra l’intero sottoalbero del documento
Rimuovere un intervallo modificabile non rimuove il testo racchiusoEditableRange.Remove() rimuove solo i marcatori di intervallo e l’esenzione di modifica, non il contenuto tra di essiQuesto è previsto – elimina il contenuto separatamente se deve essere rimosso anche
EditorGroup viene letto come Unspecified nonostante Word mostri un gruppo denominatoIl gruppo editor dell’intervallo nel documento di origine è mappato a EditorType.Unspecified/Default anziché a uno dei valori del gruppo denominatoControlla anche SingleUser – l’intervallo potrebbe invece essere limitato a un singolo utente

FAQ

Come trovo tutti gli intervalli modificabili in un documento?

Chiama Document.GetChildNodes(NodeType.EditableRangeStart, true), quindi leggi la proprietà EditableRange su ogni nodo EditableRangeStart restituito.

Come faccio a sapere chi è autorizzato a modificare un intervallo dato?

Leggi EditableRange.SingleUser (un utente specifico) e EditableRange.EditorGroup (un gruppo di modifica EditorType) sull’oggetto facciata.

Come rimuovo una restrizione di modifica da una parte di un documento?

Chiama Remove() sull’oggetto facciata EditableRange per quell’intervallo.

Qual è la differenza tra EditableRangeStart.EditableRange e EditableRangeEnd.EditableRangeStart?

EditableRangeStart.EditableRange raggiunge direttamente l’oggetto facciata che descrive l’intera gamma. EditableRangeEnd.EditableRangeStart risale al nodo marcatore di inizio corrispondente, dal quale EditableRange può quindi essere raggiunto.


API Reference Riepilogo

Classe / EnumDescrizione
EditableRangeFacade per un intervallo modificabile: Id, SingleUser, EditorGroup, Remove()
EditableRangeStartNodo che segna l’inizio di un intervallo; Id, EditableRange
EditableRangeEndNodo che segna la fine di un intervallo; Id, EditableRangeStart
EditorTypeEnum dei gruppi di modifica: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default

Vedi anche

 Italiano