LayoutCollector
LayoutCollector class
Bu sınıf, belge düğümlerinin sayfa numaralarının hesaplanmasına olanak tanır.
Daha fazla bilgi edinmek için şu adresi ziyaret edin:Sabit Sayfa Biçimine Dönüştürme belgeleme makalesi.
public class LayoutCollector
yapıcılar
İsim | Tanım |
---|---|
LayoutCollector(Document) | Bu sınıfın bir örneğini başlatır. |
Özellikleri
İsim | Tanım |
---|---|
Document { get; set; } | Bu toplayıcı örneğinin bağlı olduğu belgeyi alır veya ayarlar. |
yöntemler
İsim | Tanım |
---|---|
Clear() | Toplanan tüm düzen verilerini temizler. Belge manuel olarak güncellendikten veya düzen yeniden oluşturulduktan sonra bu yöntemi çağırın. |
GetEndPageIndex(Node) | Düğümün bittiği sayfanın 1 tabanlı dizinini alır. Düğüm bir sayfaya eşlenemiyorsa 0 döndürür. |
GetEntity(Node) | 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. |
GetNumPagesSpanned(Node) | Belirtilen düğümün kapsadığı sayfa sayısını alır. Düğüm tek bir sayfa içindeyse 0. Bu, şu şekildedir:GetEndPageIndex -GetStartPageIndex . |
GetStartPageIndex(Node) | Düğümün başladığı sayfanın 1 tabanlı dizinini alır. Düğüm bir sayfaya eşlenemiyorsa 0 döndürür. |
Notlar
Bir tane oluşturduğunuzdaLayoutCollector
ve bir tane belirtinDocument
Eklenecek belge nesnesi, toplayıcı, belge sayfalara biçimlendirildiğinde belge düğümlerinin düzen nesnelerine eşlenmesini kaydedecektir.
Belirli bir belge düğümünün (örneğin çalıştırma, paragraf veya tablo hücresi) hangi sayfada bulunduğunu kullanarak bulabilirsinizGetStartPageIndex
,GetEndPageIndex
VeGetNumPagesSpanned
yöntemler. Bu yöntemler, belgenin sayfa düzeni modelini otomatik olarak oluşturur ve gerektiğinde alanları günceller.
Artık düzen bilgilerini toplamanız gerekmediğinde, en iyisiDocument
mülkhükümsüz
gereksiz yere daha fazla düzen eşlemesi toplanmasını önlemek için.
Ö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
- ad alanı Aspose.Words.Layout
- toplantı Aspose.Words