Trabalhando com Intervalos Editáveis
Trabalhando com Intervalos Editáveis
Este guia mostra como inspecionar e remover intervalos editáveis – as regiões que o recurso “Restringir Edição” do Word isenta da restrição geral de edição de um documento, opcionalmente limitadas a um usuário ou grupo específico – em Aspose.Words FOSS para .NET. Um intervalo editável é delimitado na árvore do documento por um par de nós marcador, EditableRangeStart and EditableRangeEnd, e descrito como um todo pela EditableRange classe fachada.
Encontrando Intervalos Editáveis em um Documento
Não existe uma única propriedade de coleção para intervalos editáveis; encontre-os percorrendo a árvore de nós. CompositeNode.GetChildNodes(nodeType, isDeep) com NodeType.EditableRangeStart retorna cada nó EditableRangeStart no documento (ou em uma subárvore, se chamado em um nó diferente de Document). Cada propriedade EditableRangeStart.EditableRange então retorna o objeto fachada EditableRange correspondente.
A Fachada EditableRange
EditableRange descreve um único intervalo editável como um todo: Id o identifica, SingleUser opcionalmente nomeia um usuário específico autorizado a editá-lo, e EditorGroup (um valor EditorType) opcionalmente nomeia um grupo de edição em vez disso. EditableRangeStart e EditableRangeEnd retornam o par de nós marcadores que delimitam o intervalo no documento. EditableRange.Remove() remove o intervalo editável – levantando a isenção da restrição de edição para essa região, sem excluir o conteúdo do documento dentro dele.
Os Nós Marcadores: EditableRangeStart e EditableRangeEnd
EditableRangeStart e EditableRangeEnd são subclasses seladas de Node que marcam os limites de um intervalo no fluxo de conteúdo do documento. EditableRangeStart.Id e EditableRangeEnd.Id identificam o intervalo; EditableRangeStart.EditableRange alcança o objeto facade diretamente, e EditableRangeEnd.EditableRangeStart volta ao marcador de início correspondente. Sendo nós ordinários, ambos suportam os membros padrão de Node – ParentNode, Document, PreviousSibling, NextSibling e Remove() para excluir o marcador individual.
Restringindo o acesso com EditorType
EditorType enumera os grupos de edição que um EditableRange.EditorGroup pode referenciar: Administrators, Contributors, Editors, Owners, Everyone, Current, None e Unspecified (também disponível como Default, um alias para Unspecified).
Dicas e melhores práticas
- Use
GetChildNodes(NodeType.EditableRangeStart, true)comisDeep: truepara encontrar intervalos editáveis em qualquer parte do documento, não apenas entre os filhos imediatos de um nó. - Leia
EditableRange.SingleUsereEditorGroupjuntos para determinar a quem um intervalo está restrito – um intervalo pode ser limitado a um usuário específico, a um grupo de edição ou a nenhum. - Chame
EditableRange.Remove()(na fachada) em vez de remover os nós marcadorEditableRangeStarteEditableRangeEndindividualmente, para que ambas as extremidades do intervalo sejam limpas de forma consistente.
Problemas comuns
| Problema | Causa | Correção |
|---|---|---|
| Nenhum intervalo editável foi encontrado, embora o documento tenha edição restrita | A pesquisa usou a chamada padrão (superficial) GetChildNodes | Passe isDeep: true para que a pesquisa cubra toda a subárvore do documento |
| Remover um intervalo editável não remove o texto incluído | EditableRange.Remove() remove apenas os marcadores de intervalo e a isenção de edição, não o conteúdo entre eles | Isso é esperado – exclua o conteúdo separadamente se ele também precisar ser removido |
EditorGroup é lido como Unspecified embora o Word mostre um grupo nomeado | O grupo de edição do intervalo no documento fonte mapeia para EditorType.Unspecified/Default em vez de um dos valores do grupo nomeado | Verifique SingleUser também – o intervalo pode ser limitado a um usuário individual |
FAQ
Como encontro todos os intervalos editáveis em um documento?
Chame Document.GetChildNodes(NodeType.EditableRangeStart, true), então leia a propriedade EditableRange em cada nó EditableRangeStart retornado.
Como descubro quem tem permissão para editar um determinado intervalo?
Leia EditableRange.SingleUser (um usuário específico) e EditableRange.EditorGroup (um grupo de edição EditorType) no objeto fachada.
Como removo uma restrição de edição de parte de um documento?
Chame Remove() no objeto fachada EditableRange para esse intervalo.
Qual é a diferença entre EditableRangeStart.EditableRange e EditableRangeEnd.EditableRangeStart?
EditableRangeStart.EditableRange alcança o objeto fachada que descreve toda a faixa diretamente. EditableRangeEnd.EditableRangeStart volta ao nó marcador de início correspondente, a partir do qual EditableRange pode então ser alcançado.
API Reference Resumo
| Classe / Enum | Descrição |
|---|---|
EditableRange | Facade para um intervalo editável: Id, SingleUser, EditorGroup, Remove() |
EditableRangeStart | Nó que marca o início de um intervalo; Id, EditableRange |
EditableRangeEnd | Nó que marca o fim de um intervalo; Id, EditableRangeStart |
EditorType | Enumeração dos grupos de edição: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default |