EditableRangeEnd
EditableRangeEnd class
Representerar slutet av ett redigerbart område i ett Word-dokument.
För att lära dig mer, besökAspose.Words-dokumentobjektmodell (DOM) dokumentationsartikel.
public sealed class EditableRangeEnd : Node
Egenskaper
| namn | Beskrivning |
|---|---|
| CustomNodeId { get; set; } | Anger anpassad nodidentifierare. |
| virtual Document { get; } | Hämtar dokumentet som denna nod tillhör. |
| EditableRangeStart { get; } | MotsvarandeEditableRangeStart , mottagen av ID. |
| Id { get; set; } | Anger identifieraren för det redigerbara området. |
| virtual IsComposite { get; } | Returersann om denna nod kan innehålla andra noder. |
| NextSibling { get; } | Hämtar noden som följer direkt efter denna nod. |
| override NodeType { get; } | ReturerEditableRangeEnd . |
| ParentNode { get; } | Hämtar den omedelbara föräldern till denna nod. |
| PreviousSibling { get; } | Hämtar noden som omedelbart föregår denna nod. |
| Range { get; } | Returnerar enRangeobjekt som representerar den del av ett dokument som finns i denna nod. |
Metoder
| namn | Beskrivning |
|---|---|
| override Accept(DocumentVisitor) | Tar emot en besökare. |
| Clone(bool) | Skapar en duplikat av noden. |
| GetAncestor(NodeType) | Hämtar den första förfadern till den angivnaNodeType . |
| GetAncestor(Type) | Hämtar den första förfadern till den angivna objekttypen. |
| virtual GetText() | Hämtar texten för denna nod och alla dess underordnade noder. |
| NextPreOrder(Node) | Hämtar nästa nod enligt algoritmen för förbeställningsträdtraversering. |
| PreviousPreOrder(Node) | Hämtar föregående nod enligt algoritmen för trädtraversering i förbeställning. |
| Remove() | Tar bort sig själv från föräldern. |
| ToString(SaveFormat) | Exporterar nodens innehåll till en sträng i det angivna formatet. |
| ToString(SaveOptions) | Exporterar nodens innehåll till en sträng med de angivna sparalternativen. |
Anmärkningar
Ett komplett redigerbart område i ett Word-dokument består av enEditableRangeStart och en matchandeEditableRangeEnd med samma id.
EditableRangeStart ochEditableRangeEnd är bara markörer inuti ett document som anger var det redigerbara området börjar och slutar.
AnvändEditableRangeklassen som en “fasad” för att arbeta med ett redigerbart område som ett enda objekt.
För närvarande stöds redigerbara intervall endast på inline-nivå, det vill säga inutiParagraph, men det redigerbara intervallets början och slut kan vara i olika stycken.
Exempel
Visar hur man begränsar redigeringsrättigheterna för redigerbara områden till en specifik grupp/användare.
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.");
// När vi skrivskyddar dokument tillåter redigerbara områden oss att välja specifika områden som användare kan redigera.
// Det finns två ömsesidigt uteslutande sätt att begränsa listan över tillåtna redigerare.
// 1 - Ange en användare:
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 - Ange en grupp som tillåtna användare är associerade med:
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.");
// Skriv ut detaljer och innehåll för alla redigerbara områden i dokumentet.
EditableRangePrinter editableRangePrinter = new EditableRangePrinter();
doc.Accept(editableRangePrinter);
Console.WriteLine(editableRangePrinter.ToText());
}
/// <summary>
/// Samlar in egenskaper och innehåll från besökta redigerbara områden i en sträng.
/// </summary>
public class EditableRangePrinter : DocumentVisitor
{
public EditableRangePrinter()
{
mBuilder = new StringBuilder();
}
public string ToText()
{
return mBuilder.ToString();
}
public void Reset()
{
mBuilder.Clear();
mInsideEditableRange = false;
}
/// <summary>
/// Anropas när en EditableRangeStart-nod påträffas i dokumentet.
/// </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>
/// Anropas när en EditableRangeEnd-nod påträffas i dokumentet.
/// </summary>
public override VisitorAction VisitEditableRangeEnd(EditableRangeEnd editableRangeEnd)
{
mBuilder.AppendLine(" -- End of editable range --\n");
mInsideEditableRange = false;
return VisitorAction.Continue;
}
/// <summary>
/// Anropas när en Run-nod påträffas i dokumentet. Den här besökaren registrerar endast körningar som ligger inom redigerbara intervall.
/// </summary>
public override VisitorAction VisitRun(Run run)
{
if (mInsideEditableRange) mBuilder.AppendLine("\t\"" + run.Text + "\"");
return VisitorAction.Continue;
}
private bool mInsideEditableRange;
private readonly StringBuilder mBuilder;
}
Se även
- class Node
- namnutrymme Aspose.Words
- hopsättning Aspose.Words