GetEntity
LayoutCollector.GetEntity method
يعيد موضعًا معتمًا لـLayoutEnumerator
الذي يتوافق مع العقدة المحددة. يمكنك استخدام القيمة المرتجعة كحجة لـCurrent
نظرًا لأن المستند الذي يتم تعداده هو ومستند العقدة هما نفس الشيء.
public object GetEntity(Node node)
ملاحظات
هذه الطريقة تعمل فقط معParagraph
العقد، وكذلك العقد المضمنة غير القابلة للتجزئة، على سبيل المثالBookmarkStart
أوShape
.إنه لا يعمل لRun
،Cell
Row
أوTable
العقد، والعقد داخل الرأس/التذييل.
لاحظ أن الكيان تم إرجاعه لـParagraph
العقدة هي امتداد لفاصل الفقرة. استخدم الطريقة المناسبة للصعود إلى السطر الرئيسي.
إذا كنت بحاجة إلى التنقل إلىRun
من النص، يمكنك إدراج إشارة مرجعية مباشرة قبل it ثم الانتقال إلى الإشارة المرجعية بدلاً من ذلك.
إذا كنت بحاجة إلى التنقل إلىCell
العقدة ثم يمكنك الانتقال إلىParagraph
عقدة في هذه الخلية، ثم تصعد إلى الكيان الرئيسي. يمكن استخدام نفس الطريقة لـRow
وTable
العقد.
أمثلة
يوضح كيفية رؤية نطاقات الصفحات التي تمتد عبرها العقدة.
Document doc = new Document();
LayoutCollector layoutCollector = new LayoutCollector(doc);
// قم باستدعاء طريقة "GetNumPagesSpanned" لحساب عدد الصفحات التي يغطيها محتوى مستندنا.
// بما أن المستند فارغ، فإن عدد الصفحات هو صفر حاليًا.
Assert.AreEqual(doc, layoutCollector.Document);
Assert.AreEqual(0, layoutCollector.GetNumPagesSpanned(doc));
//إملأ المستند بخمس صفحات من المحتوى.
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);
// قبل جامع التخطيط، نحتاج إلى استدعاء طريقة "UpdatePageLayout" لإعطائنا
// رقم دقيق لأي مقياس مرتبط بالتخطيط، مثل عدد الصفحات.
Assert.AreEqual(0, layoutCollector.GetNumPagesSpanned(doc));
layoutCollector.Clear();
doc.UpdatePageLayout();
Assert.AreEqual(5, layoutCollector.GetNumPagesSpanned(doc));
// يمكننا رؤية أرقام الصفحات الأولية والنهائية لأي عقدة ومدى صفحاتها الإجمالي.
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.
LayoutEnumerator layoutEnumerator = new LayoutEnumerator(doc);
Assert.AreEqual(LayoutEntityType.Page, layoutEnumerator.Type);
// يمكن لـ LayoutEnumerator التنقل عبر مجموعة كيانات التخطيط مثل الشجرة.
//يمكننا أيضًا تطبيقه على أي كيان تخطيط مطابق للعقدة.
layoutEnumerator.Current = layoutCollector.GetEntity(doc.GetChild(NodeType.Paragraph, 1, true));
Assert.AreEqual(LayoutEntityType.Span, layoutEnumerator.Type);
Assert.AreEqual("¶", layoutEnumerator.Text);
أنظر أيضا
- class Node
- class LayoutCollector
- مساحة الاسم Aspose.Words.Layout
- المجسم Aspose.Words