GetEntity

LayoutCollector.GetEntity method

Opak bir konumu döndürürLayoutEnumerator belirtilen düğüme karşılık gelen. Döndürülen değeri bir argüman olarak kullanabilirsinizCurrent verilen belge numaralandırılmıştır ve düğümün belgesi aynıdır.

public object GetEntity(Node node)

Notlar

Bu yöntem yalnızca şu amaçlar için işe yarar:Paragraph düğümler, bölünemez satır içi düğümler gibi, örneğinBookmarkStart veyaShape . için işe yaramıyorRun ,CellRow veyaTable düğümler ve başlık/altbilgi içindeki düğümler.

Bir varlık için döndürülen varlığınParagraphdüğüm bir paragraf sonu aralığıdır. Üst satıra çıkmak için uygun yöntemi kullanın

Eğer bir yere gitmeniz gerekiyorsaRun metnin hemen öncesine yer imi ekleyebilir ve ardından yer imine gidebilirsiniz.

Eğer bir yere gitmeniz gerekiyorsaCell düğümden sonra başka bir düğüme geçebilirsinizParagraph Bu hücrede düğümü ve ardından bir üst varlığa yükselin. Aynı yaklaşım şu şekilde de kullanılabilir:Row veTable düğümler.

Örnekler

Bir düğümün yayıldığı sayfa aralıklarının nasıl görüleceğini gösterir.

Document doc = new Document();
LayoutCollector layoutCollector = new LayoutCollector(doc);

// Belgemizin içeriğinin kaç sayfayı kapladığını saymak için "GetNumPagesSpanned" metodunu çağıralım.
// Belge boş olduğundan, sayfa sayısı şu anda sıfırdır.
Assert.AreEqual(doc, layoutCollector.Document);
Assert.AreEqual(0, layoutCollector.GetNumPagesSpanned(doc));

// Belgeyi 5 sayfalık içerikle doldur.
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);

// Düzen toplayıcısından önce, bize bir düzen sağlamak için "UpdatePageLayout" yöntemini çağırmamız gerekir.
// sayfa sayısı gibi düzenle ilgili herhangi bir metriğe ilişkin doğru bir rakam.
Assert.AreEqual(0, layoutCollector.GetNumPagesSpanned(doc));

layoutCollector.Clear();
doc.UpdatePageLayout();

Assert.AreEqual(5, layoutCollector.GetNumPagesSpanned(doc));

// Herhangi bir node'un başlangıç ve bitiş sayfa numaralarını ve bunların toplam sayfa genişliklerini görebiliriz.
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.");
}

// LayoutEnumerator kullanarak düzen varlıkları üzerinde yineleme yapabiliriz.
LayoutEnumerator layoutEnumerator = new LayoutEnumerator(doc);

Assert.AreEqual(LayoutEntityType.Page, layoutEnumerator.Type);

// LayoutEnumerator, bir ağaç gibi düzen varlıklarının koleksiyonunu dolaşabilir.
// Bunu herhangi bir düğümün karşılık gelen düzen varlığına da uygulayabiliriz.
layoutEnumerator.Current = layoutCollector.GetEntity(doc.GetChild(NodeType.Paragraph, 1, true));

Assert.AreEqual(LayoutEntityType.Span, layoutEnumerator.Type);
Assert.AreEqual("¶", layoutEnumerator.Text);

Ayrıca bakınız