GetEntity
LayoutCollector.GetEntity method
Restituisce una posizione opaca delLayoutEnumerator
che corrisponde al nodo specificato. È possibile utilizzare il valore restituito come argomentoCurrent
dato che il documento in corso enumerato e il documento del nodo sono gli stessi.
public object GetEntity(Node node)
Osservazioni
Questo metodo funziona solo perParagraph
nodi, così come nodi inline indivisibili, ad esBookmarkStart
OShape
. Non funziona perRun
,Cell
Row
OTable
nodi e nodi all’interno di intestazione/piè di pagina.
Tieni presente che l’entità è stata restituita per aParagraph
il nodo è un intervallo di interruzione di paragrafo. Utilizzare il metodo appropriato per salire alla linea madre
Se è necessario accedere a aRun
di testo, puoi inserire il segnalibro subito prima di it e quindi passare al segnalibro.
Se è necessario accedere a aCell
nodo quindi puoi spostarti su aParagraph
nodo in questa cella e quindi ascendere a un’entità principale. Lo stesso approccio può essere utilizzato perRow
eTable
nodi.
Esempi
Mostra come visualizzare gli intervalli di pagine su cui si estende un nodo.
Document doc = new Document();
LayoutCollector layoutCollector = new LayoutCollector(doc);
// Chiama il metodo "GetNumPagesSpanned" per contare quante pagine si estende il contenuto del nostro documento.
// Poiché il documento è vuoto, il numero di pagine attualmente è zero.
Assert.AreEqual(doc, layoutCollector.Document);
Assert.AreEqual(0, layoutCollector.GetNumPagesSpanned(doc));
// Compila il documento con 5 pagine di contenuto.
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);
// Prima del raccoglitore di layout, dobbiamo chiamare il metodo "UpdatePageLayout" per darci
// una cifra precisa per qualsiasi metrica relativa al layout, come il conteggio delle pagine.
Assert.AreEqual(0, layoutCollector.GetNumPagesSpanned(doc));
layoutCollector.Clear();
doc.UpdatePageLayout();
Assert.AreEqual(5, layoutCollector.GetNumPagesSpanned(doc));
// Possiamo vedere i numeri delle pagine iniziali e finali di qualsiasi nodo e la loro estensione complessiva delle pagine.
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.");
}
// Possiamo scorrere le entità del layout utilizzando un LayoutEnumerator.
LayoutEnumerator layoutEnumerator = new LayoutEnumerator(doc);
Assert.AreEqual(LayoutEntityType.Page, layoutEnumerator.Type);
// LayoutEnumerator può attraversare la raccolta di entità di layout come un albero.
// Possiamo anche applicarlo all'entità di layout corrispondente di qualsiasi nodo.
layoutEnumerator.Current = layoutCollector.GetEntity(doc.GetChild(NodeType.Paragraph, 1, true));
Assert.AreEqual(LayoutEntityType.Span, layoutEnumerator.Type);
Assert.AreEqual("¶", layoutEnumerator.Text);
Guarda anche
- class Node
- class LayoutCollector
- spazio dei nomi Aspose.Words.Layout
- assemblea Aspose.Words