LayoutCollector
LayoutCollector class
Den här klassen låter dig beräkna sidnummer för dokumentnoder.
För att lära dig mer, besökKonvertera till fast sidformat dokumentationsartikel.
public class LayoutCollector
Konstruktörer
namn | Beskrivning |
---|---|
LayoutCollector(Document) | Initierar en instans av denna klass. |
Egenskaper
namn | Beskrivning |
---|---|
Document { get; set; } | Hämtar eller ställer in dokumentet som denna insamlingsinstans är kopplad till. |
Metoder
namn | Beskrivning |
---|---|
Clear() | Rensar all insamlad layoutdata. Anropar den här metoden efter att dokumentet har uppdaterats manuellt eller layouten har byggts om. |
GetEndPageIndex(Node) | Hämtar ett 1-baserat index för sidan där noden slutar. Returnerar 0 om noden inte kan mappas till en sida. |
GetEntity(Node) | Returnerar en ogenomskinlig position förLayoutEnumerator vilket motsvarar den angivna noden. Du kan använda returnerat värde som argument för attCurrent givet att dokumentet som räknas upp och nodens dokument är desamma. |
GetNumPagesSpanned(Node) | Hämtar antalet sidor som den angivna noden sträcker sig över. 0 om noden finns inom en enda sida. Detta är samma sak somGetEndPageIndex -GetStartPageIndex . |
GetStartPageIndex(Node) | Hämtar ett 1-baserat index för sidan där noden börjar. Returnerar 0 om noden inte kan mappas till en sida. |
Anmärkningar
När du skapar enLayoutCollector
och ange enDocument
dokumentobjekt att bifoga till, samlaren kommer att registrera mappning av dokumentnoder till layoutobjekt när dokumentet formateras till sidor.
Du kommer att kunna ta reda på på vilken sida en viss dokumentnod (t.ex. körning, stycke eller tabellcell) finns genom att användaGetStartPageIndex
,GetEndPageIndex
ochGetNumPagesSpanned
metoder. Dessa metoder bygger automatiskt en sidlayoutmodell för dokumentet och uppdaterar fält vid behov.
När du inte längre behöver samla in layoutinformation är det bäst att ställa inDocument
egendom tillnull
för att undvika onödig insamling av fler layoutmappningar.
Exempel
Visar hur man ser sidintervallen som en nod sträcker sig över.
Document doc = new Document();
LayoutCollector layoutCollector = new LayoutCollector(doc);
// Anropa metoden "GetNumPagesSpanned" för att räkna hur många sidor innehållet i vårt dokument sträcker sig över.
// Eftersom dokumentet är tomt är antalet sidor för närvarande noll.
Assert.AreEqual(doc, layoutCollector.Document);
Assert.AreEqual(0, layoutCollector.GetNumPagesSpanned(doc));
// Fyll dokumentet med 5 sidor innehåll.
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);
// Innan layoutinsamlaren anropar vi metoden "UpdatePageLayout" för att ge oss
// en korrekt siffra för alla layoutrelaterade mätvärden, såsom sidantal.
Assert.AreEqual(0, layoutCollector.GetNumPagesSpanned(doc));
layoutCollector.Clear();
doc.UpdatePageLayout();
Assert.AreEqual(5, layoutCollector.GetNumPagesSpanned(doc));
// Vi kan se numren på start- och slutsidorna för valfri nod och deras totala sidlängd.
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.");
}
// Vi kan iterera över layout-entiteterna med hjälp av en LayoutEnumerator.
LayoutEnumerator layoutEnumerator = new LayoutEnumerator(doc);
Assert.AreEqual(LayoutEntityType.Page, layoutEnumerator.Type);
// LayoutEnumeratorn kan gå igenom samlingen av layout-entiteter som ett träd.
// Vi kan också tillämpa den på vilken nods motsvarande layout-entitet som helst.
layoutEnumerator.Current = layoutCollector.GetEntity(doc.GetChild(NodeType.Paragraph, 1, true));
Assert.AreEqual(LayoutEntityType.Span, layoutEnumerator.Type);
Assert.AreEqual("¶", layoutEnumerator.Text);
Se även
- namnutrymme Aspose.Words.Layout
- hopsättning Aspose.Words