EditableRangeEnd

EditableRangeEnd class

Représente la fin d’une plage modifiable dans un document Word.

Pour en savoir plus, visitez leModèle objet de document (DOM) Aspose.Words article documentaire.

public sealed class EditableRangeEnd : Node

Propriétés

NomLa description
CustomNodeId { get; set; }Spécifie l’identifiant de nœud personnalisé.
virtual Document { get; }Obtient le document auquel appartient ce nœud.
EditableRangeStart { get; }CorrespondantEditableRangeStart , reçu par ID.
Id { get; set; }Spécifie l’identifiant de la plage modifiable.
virtual IsComposite { get; }Retoursvrai si ce nœud peut contenir d’autres nœuds.
NextSibling { get; }Obtient le nœud suivant immédiatement ce nœud.
override NodeType { get; }RetoursEditableRangeEnd .
ParentNode { get; }Obtient le parent immédiat de ce nœud.
PreviousSibling { get; }Obtient le nœud précédant immédiatement ce nœud.
Range { get; }Renvoie unRange objet qui représente la partie d’un document contenue dans ce nœud.

Méthodes

NomLa description
override Accept(DocumentVisitor)Accepte un visiteur.
Clone(bool)Crée un duplicata du nœud.
GetAncestor(NodeType)Obtient le premier ancêtre du spécifiéNodeType .
GetAncestor(Type)Obtient le premier ancêtre du type d’objet spécifié.
virtual GetText()Récupère le texte de ce nœud et de tous ses enfants.
NextPreOrder(Node)Obtient le nœud suivant selon l’algorithme de traversée de l’arbre de pré-commande.
PreviousPreOrder(Node)Obtient le nœud précédent selon l’algorithme de traversée d’arbre de pré-commande.
Remove()Se supprime du parent.
ToString(SaveFormat)Exporte le contenu du nœud dans une chaîne au format spécifié.
ToString(SaveOptions)Exporte le contenu du nœud dans une chaîne à l’aide des options de sauvegarde spécifiées.

Remarques

Une plage modifiable complète dans un document Word se compose d’unEditableRangeStart et un correspondantEditableRangeEnd avec le même identifiant.

EditableRangeStart etEditableRangeEnd ne sont que des marqueurs à l’intérieur d’un document qui spécifient où commence et se termine la plage modifiable.

Utilisez leEditableRangeclasse comme “façade” pour travailler avec une plage modifiable en tant qu’objet unique.

Actuellement, les plages modifiables ne sont prises en charge qu’au niveau en ligne, c’est-à-dire à l’intérieurParagraph, mais le début et la fin de la plage modifiable peuvent se trouver dans des paragraphes différents.

Exemples

Montre comment limiter les droits d’édition des plages modifiables à un groupe/utilisateur spécifique.

public void Visitor()
{
    Document doc = new Document();
    doc.Protect(ProtectionType.ReadOnly, "MyPassword");

    DocumentBuilder builder = new DocumentBuilder(doc);
    builder.Writeln("Hello world! Since we have set the document's protection level to read-only," +
                    " we cannot edit this paragraph without the password.");

    // Lorsque nous protégeons des documents en écriture, les plages modifiables nous permettent de sélectionner des zones spécifiques que les utilisateurs peuvent modifier.
    // Il existe deux manières mutuellement exclusives de réduire la liste des éditeurs autorisés.
    // 1 - Spécifiez un utilisateur :
    EditableRange editableRange = builder.StartEditableRange().EditableRange;
    editableRange.SingleUser = "john.doe@myoffice.com";
    builder.Writeln($"This paragraph is inside the first editable range, can only be edited by {editableRange.SingleUser}.");
    builder.EndEditableRange();

    Assert.AreEqual(EditorType.Unspecified, editableRange.EditorGroup);

    // 2 - Spécifiez un groupe auquel les utilisateurs autorisés sont associés :
    editableRange = builder.StartEditableRange().EditableRange;
    editableRange.EditorGroup = EditorType.Administrators;
    builder.Writeln($"This paragraph is inside the first editable range, can only be edited by {editableRange.EditorGroup}.");
    builder.EndEditableRange();

    Assert.AreEqual(string.Empty, editableRange.SingleUser);

    builder.Writeln("This paragraph is outside the editable range, and cannot be edited by anybody.");

    // Imprimer les détails et le contenu de chaque plage modifiable du document.
    EditableRangePrinter editableRangePrinter = new EditableRangePrinter();

    doc.Accept(editableRangePrinter);

    Console.WriteLine(editableRangePrinter.ToText());
}

/// <summary>
/// Collecte les propriétés et le contenu des plages modifiables visitées dans une chaîne.
/// </summary>
public class EditableRangePrinter : DocumentVisitor
{
    public EditableRangePrinter()
    {
        mBuilder = new StringBuilder();
    }

    public string ToText()
    {
        return mBuilder.ToString();
    }

    public void Reset()
    {
        mBuilder.Clear();
        mInsideEditableRange = false;
    }

    /// <summary>
    /// Appelé lorsqu'un nœud EditableRangeStart est rencontré dans le document.
    /// </summary>
    public override VisitorAction VisitEditableRangeStart(EditableRangeStart editableRangeStart)
    {
        mBuilder.AppendLine(" -- Editable range found! -- ");
        mBuilder.AppendLine("\tID:\t\t" + editableRangeStart.Id);
        if (editableRangeStart.EditableRange.SingleUser == string.Empty)
            mBuilder.AppendLine("\tGroup:\t" + editableRangeStart.EditableRange.EditorGroup);
        else
            mBuilder.AppendLine("\tUser:\t" + editableRangeStart.EditableRange.SingleUser);
        mBuilder.AppendLine("\tContents:");

        mInsideEditableRange = true;

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Appelé lorsqu'un nœud EditableRangeEnd est rencontré dans le document.
    /// </summary>
    public override VisitorAction VisitEditableRangeEnd(EditableRangeEnd editableRangeEnd)
    {
        mBuilder.AppendLine(" -- End of editable range --\n");

        mInsideEditableRange = false;

        return VisitorAction.Continue;
    }

    /// <summary>
    /// Appelé lorsqu'un nœud Run est rencontré dans le document. Ce visiteur enregistre uniquement les exécutions situées dans des plages modifiables.
    /// </summary>
    public override VisitorAction VisitRun(Run run)
    {
        if (mInsideEditableRange) mBuilder.AppendLine("\t\"" + run.Text + "\"");

        return VisitorAction.Continue;
    }

    private bool mInsideEditableRange;
    private readonly StringBuilder mBuilder;
}

Voir également