EditableRangeStart

EditableRangeStart class

Représente le début d’une plage modifiable dans un document Word.

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

public sealed class EditableRangeStart : 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.
EditableRange { get; }Obtient l’objet de façade qui encapsule cette plage modifiable de début et de fin.
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; }RetoursEditableRangeStart .
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 unRangeobjet 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 doublon 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()Obtient le texte de ce nœud et de tous ses enfants.
NextPreOrder(Node)Obtient le nœud suivant selon l’algorithme de parcours de l’arbre de pré-ordre.
PreviousPreOrder(Node)Obtient le nœud précédent selon l’algorithme de parcours de l’arbre de pré-ordre.
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 en utilisant les options de sauvegarde spécifiées.

Remarques

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

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

Utilisez leEditableRange classe comme une « façade » pour travailler avec une plage modifiable range comme un seul objet.

Les plages actuellement modifiables ne sont prises en charge qu’au niveau en ligne, c’est-à-dire à l’intérieurParagraph, mais le début de la plage modifiable et la fin de la plage modifiable peuvent être 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.");

    // Imprimez les détails et le contenu de chaque plage modifiable dans le 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 comprises 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