GetEntity
LayoutCollector.GetEntity method
Renvoie une position opaque duLayoutEnumerator
qui correspond au nœud spécifié. Vous pouvez utiliser la valeur renvoyée comme argument pourCurrent
étant donné que le document étant énuméré et le document du nœud sont les mêmes.
public object GetEntity(Node node)
Remarques
Cette méthode ne fonctionne que pourParagraph
nœuds, ainsi que des nœuds en ligne indivisibles, par exempleBookmarkStart
ouShape
. Ça ne marche pas pourRun
,Cell
Row
ouTable
nœuds et nœuds dans l’en-tête/pied de page.
Notez que l’entité est revenue pour unParagraph
Le nœud est une étendue de saut de paragraphe. Utilisez la méthode appropriée pour remonter jusqu’à la lignée parente
Si vous devez accéder à unRun
de texte, vous pouvez alors insérer un signet juste avant it , puis accéder au signet à la place.
Si vous devez accéder à unCell
nœud, vous pouvez alors passer à unParagraph
dans cette cellule, puis remontez vers une entité parent. La même approche peut être utilisée pourRow
etTable
nœuds.
Exemples
Montre comment afficher les plages de pages couvertes par un nœud.
Document doc = new Document();
LayoutCollector layoutCollector = new LayoutCollector(doc);
// Appelez la méthode "GetNumPagesSpanned" pour compter le nombre de pages que couvre le contenu de notre document.
// Puisque le document est vide, ce nombre de pages est actuellement nul.
Assert.AreEqual(doc, layoutCollector.Document);
Assert.AreEqual(0, layoutCollector.GetNumPagesSpanned(doc));
// Remplit le document avec 5 pages de contenu.
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);
// Avant le collecteur de mise en page, nous devons appeler la méthode "UpdatePageLayout" pour nous donner
// un chiffre précis pour toute métrique liée à la mise en page, telle que le nombre de pages.
Assert.AreEqual(0, layoutCollector.GetNumPagesSpanned(doc));
layoutCollector.Clear();
doc.UpdatePageLayout();
Assert.AreEqual(5, layoutCollector.GetNumPagesSpanned(doc));
// Nous pouvons voir les numéros des pages de début et de fin de n'importe quel nœud et leurs étendues globales de pages.
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.");
}
// Nous pouvons parcourir les entités de mise en page à l'aide d'un LayoutEnumerator.
LayoutEnumerator layoutEnumerator = new LayoutEnumerator(doc);
Assert.AreEqual(LayoutEntityType.Page, layoutEnumerator.Type);
// Le LayoutEnumerator peut parcourir la collection d'entités de mise en page comme un arbre.
// Nous pouvons également l'appliquer à l'entité de mise en page correspondante de n'importe quel nœud.
layoutEnumerator.Current = layoutCollector.GetEntity(doc.GetChild(NodeType.Paragraph, 1, true));
Assert.AreEqual(LayoutEntityType.Span, layoutEnumerator.Type);
Assert.AreEqual("¶", layoutEnumerator.Text);
Voir également
- class Node
- class LayoutCollector
- espace de noms Aspose.Words.Layout
- Assemblée Aspose.Words