GetEntity
LayoutCollector.GetEntity method
Gibt eine undurchsichtige Position desLayoutEnumerator
der dem angegebenen Knoten entspricht. Sie können den zurückgegebenen Wert als Argument verwenden, umCurrent
vorausgesetzt, das aufzuzählende Dokument und das Dokument des Knotens sind identisch.
public object GetEntity(Node node)
Bemerkungen
Diese Methode funktioniert nur fürParagraph
Knoten, sowie unteilbare Inline-Knoten, zBBookmarkStart
oderShape
Es funktioniert nicht fürRun
,Cell
Row
oderTable
Knoten und Knoten innerhalb der Kopf-/Fußzeile.
Beachten Sie, dass die Entität für eineParagraph
Knoten ist ein Absatzumbruch. Verwenden Sie die entsprechende Methode, um zur übergeordneten Zeile aufzusteigen
Wenn Sie zu einemRun
von Text, dann können Sie direkt davor ein Lesezeichen einfügen und dann stattdessen zum Lesezeichen navigieren.
Wenn Sie zu einemCell
Knoten, dann können Sie zu einemParagraph
Knoten in dieser Zelle und steigen dann zu einer übergeordneten Entität auf. Der gleiche Ansatz kann verwendet werden fürRow
undTable
Knoten.
Beispiele
Zeigt, wie die Seitenbereiche angezeigt werden, die ein Knoten umfasst.
Document doc = new Document();
LayoutCollector layoutCollector = new LayoutCollector(doc);
// Rufen Sie die Methode „GetNumPagesSpanned“ auf, um zu zählen, wie viele Seiten der Inhalt unseres Dokuments umfasst.
// Da das Dokument leer ist, beträgt die Seitenanzahl derzeit Null.
Assert.AreEqual(doc, layoutCollector.Document);
Assert.AreEqual(0, layoutCollector.GetNumPagesSpanned(doc));
// Füllen Sie das Dokument mit 5 Seiten Inhalt.
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Write("Section 1");
builder.InsertBreak(BreakType.PageBreak);
builder.InsertBreak(BreakType.PageBreak);
builder.InsertBreak(BreakType.SectionBreakEvenPage);
builder.Write("Section 2");
builder.InsertBreak(BreakType.PageBreak);
builder.InsertBreak(BreakType.PageBreak);
// Vor dem Layout-Sammler müssen wir die Methode "UpdatePageLayout" aufrufen, um uns
// eine genaue Zahl für jede layoutbezogene Metrik, wie beispielsweise die Seitenanzahl.
Assert.AreEqual(0, layoutCollector.GetNumPagesSpanned(doc));
layoutCollector.Clear();
doc.UpdatePageLayout();
Assert.AreEqual(5, layoutCollector.GetNumPagesSpanned(doc));
// Wir können die Nummern der Start- und Endseiten jedes Knotens und ihre Gesamtseitenspanne sehen.
NodeCollection nodes = doc.GetChildNodes(NodeType.Any, true);
foreach (Node node in nodes)
{
Console.WriteLine($"-> NodeType.{node.NodeType}: ");
Console.WriteLine(
$"\tStarts on page {layoutCollector.GetStartPageIndex(node)}, ends on page {layoutCollector.GetEndPageIndex(node)}," +
$" spanning {layoutCollector.GetNumPagesSpanned(node)} pages.");
}
// Wir können die Layout-Entitäten mithilfe eines LayoutEnumerators durchlaufen.
LayoutEnumerator layoutEnumerator = new LayoutEnumerator(doc);
Assert.AreEqual(LayoutEntityType.Page, layoutEnumerator.Type);
// Der LayoutEnumerator kann die Sammlung von Layout-Entitäten wie einen Baum durchlaufen.
// Wir können es auch auf die entsprechende Layout-Entität eines beliebigen Knotens anwenden.
layoutEnumerator.Current = layoutCollector.GetEntity(doc.GetChild(NodeType.Paragraph, 1, true));
Assert.AreEqual(LayoutEntityType.Span, layoutEnumerator.Type);
Assert.AreEqual("¶", layoutEnumerator.Text);
Siehe auch
- class Node
- class LayoutCollector
- namensraum Aspose.Words.Layout
- Montage Aspose.Words