PDFium Delphi Component Docs

الوحدة FPdfLayout

يبني خطط تخطيط انسيابي قابلة للقياس مع عناصر صفحات وأعمدة وجداول عبر الصفحات وروابط وعقد قابلة لإعادة الاستخدام ومدخلات ترميز ودلالات Tagged PDF

الاستثناءات والتعدادات

النوعالقيم أو الغرض
EPdfLayoutErrorاستثناء يُرفع لإدخال تخطيط غير صالح وحدود متجاوزة وبنية دلالية غير متسقة
TPdfLayoutAlignmentplaLeft, plaCenter, plaRight
TPdfLayoutCommandKindplcText, plcRule, plcImage, plcPageXObject, plcCachedNode, plcLink, plcRectangle
TPdfLayoutItemKindpliText, pliSpacer, pliRule, pliImage, pliPageXObject, pliPageBreak, pliCachedNode, pliLink, pliSemanticNode, pliTable
TPdfLayoutSemanticRoleplsrArtifact, plsrParagraph, plsrHeading1, plsrHeading2, plsrHeading3, plsrHeading4, plsrHeading5, plsrHeading6, plsrList, plsrListItem, plsrListLabel, plsrListBody, plsrTable, plsrTableRow, plsrTableHeader, plsrTableData, plsrFigure, plsrCaption, plsrLink, plsrSection, plsrDivision
TPdfLayoutTableScopepltsNone, pltsRow, pltsColumn, pltsBoth
TPdfLayoutListNumberingplnNone, plnDisc, plnCircle, plnSquare, plnDecimal, plnUpperRoman, plnLowerRoman, plnUpperAlpha, plnLowerAlpha
TPdfLayoutGridTrackKindplgtkFixed, plgtkFraction, plgtkAuto
TPdfMarkupFormatpmfMarkdown, pmfHtml

سجلات التخطيط

النوعالأعضاء العامة
TPdfLayoutSemanticsRole, ParentID, ElementID, AlternateText, ActualText, Language, HeaderIDs, TableScope, ColumnSpan, RowSpan, ListNumbering, Artifact, Paragraph, Figure
TPdfLayoutTextStyleFontName, FontSize, Color, Alpha, LineHeight, Alignment, KeepTogether, BreakLongWords, SpaceBefore, SpaceAfter, Default
TPdfLayoutConstraintsKeepTogether, KeepWithNext, PageBreakBefore, PageBreakAfter, OrphanLines, WidowLines, Default
TPdfLayoutPageSettingsWidth, Height, MarginLeft, MarginTop, MarginRight, MarginBottom, HeaderHeight, FooterHeight, A4, Letter
TPdfLayoutRectLeft, Top, Width, Height
TPdfLayoutGridTrackKind, Value, Minimum, Maximum, MeasuredContent
TPdfLayoutGridTracksمصفوفة ديناميكية من TPdfLayoutGridTrack
TPdfLayoutGridSizesمصفوفة ديناميكية من أحجام المسارات المحلولة
TPdfLayoutTableOptionsCellPadding, BorderWidth, BorderColor, BorderAlpha, RepeatHeaderRows, AllowRowSpanContinuation, MaxContinuationRegions, ContinuationBefore, ContinuationAfter, ContinuationStyle, Default
TPdfLayoutTableTextRunText, Style
TPdfLayoutTableTextRunsمصفوفة ديناميكية من TPdfLayoutTableTextRun
TPdfMarkupOptionsBaseStyle, HeadingScale, MaxInputCharacters, MaxNodes, Default
TPdfLayoutSemanticElementSemantics, ParentElementIndex
TPdfLayoutSemanticElementsمصفوفة ديناميكية من TPdfLayoutSemanticElement
TPdfLayoutCommandKind, PageNumber, Bounds, Text, FontName, FontSize, Color, Alpha, Alignment, Thickness, FileName, Uri, Source, SourcePageIndex, SemanticElementIndex, MarkedContentID, AnnotationIndex
TPdfLayoutCommandsمصفوفة ديناميكية من TPdfLayoutCommand
TPdfLayoutPlanPageSettings, PageCount, Commands, SemanticElements, TextLineCount, RuleCount, RectangleCount, ImageCount, PageXObjectCount, CachedNodeCount, LinkCount, TaggedContentCount, ArtifactCount, MeasuredTextCount, TotalPageReferenceCount, ReservedPageDigits, CacheHitCount, CacheMissCount, ReusedXObjectCount, ColumnCount, ColumnGap

فئات التخطيط

النوعالأعضاء العامة
TPdfLayoutMeasurerMeasureTextWidth, CacheIdentity
TPdfLayoutItemKind
TPdfLayoutTableCellText, Uri, Style, AddTextRun, TextRuns, SetImage, ColumnSpan, RowSpan, Header, ElementID, HeaderIDs, Scope
TPdfLayoutTableRowAddCell, Cells, Header, AllowSplit, MinimumHeight, KeepWithPrevious
TPdfLayoutTableCreate, Destroy, AddRow, AddSubtotalRow, SetCaption, Columns, Rows, Options, Caption, CaptionStyle, ElementID, ParentID
TPdfLayoutPagedPlanCreate, Destroy, ClearPageCache, MaterializePage, Reset, Summary, CommandCount, StorageByteCount, SourceCount, Completed، وميزانيات MaxCommandCount و MaxStorageBytes و MaxPageCommands و MaxSourceCount و MaxCachedPages، وإحصاءات الذاكرة المؤقتة CachedPageCount و CacheHitCount و CacheMissCount و PeakCachedPageCount
TPdfLayoutDocumentCreate, Destroy, Clear, AddText, AddSpacer, AddRule, AddImage, AddPageXObject, AddCachedNode, AddLink, AddSemanticNode, SetLastItemSemantics, SetLastItemConstraints, AddTable, AddPageBreak, LoadMarkup, InvalidateCache, BuildPlan, BuildPagedPlan, PageSettings, HeaderText, FooterText, HeaderStyle, FooterStyle, ReservedPageDigits, ColumnCount, ColumnGap, Items
TPdfLayoutCachedNodeCreate, Destroy, Invalidate, BeginEmission, EndEmission, Content, Width, Height, Built

قيود تقسيم الصفحات

استدعِ SetLastItemConstraints بعد إضافة أي عنصر انسيابي مرئي لإبقائه متماسكًا، أو إبقائه مع بداية العنصر التالي، أو فرض فاصل صفحات فيزيائي قبله أو بعده

OrphanLines هو الحد الأدنى لأسطر الفقرة المحفوظة في أسفل منطقة و WidowLines هو الحد الأدنى الموضوع في أعلى المنطقة التالية؛ وكلاهما افتراضه واحد من أجل حفظ تقسيم الصفحات الحالي

تنطبق القيود بالتساوي على عناصر أدوار الفقرة والرابط والقائمة والشكل والجدول، بينما الحاويات الدلالية البحتة بلا هندسة لذلك ترفض قيود تقسيم الصفحات

يقبل عنصر pliTable القيمتين PageBreakBefore و PageBreakAfter فقط؛ وتتحكم بنية الجدول في تقسيم الصفوف وحفظ بداية الجدول

يخزّن المخطط الأسطر الملتفة مؤقتًا أثناء البناء، فلا يقيس التنبؤ بالإبقاء مع التالي وإصدار الأوامر النهائي النص نفسه مرتين

خطط الأوامر المقسَّمة صفحيًا

أنشئ TPdfLayoutPagedPlan فوق TStream مخصص قابل للبحث وتغيير الحجم، ثم استدعِ BuildPagedPlan أو مرره إلى TPdf.GeneratePagedLayout

يسلسل المخطط الأوامر فورًا، ويحرر كل نتيجة نص ملتف مكتملة، ويترك Plan.Commands فارغة مع حفظ إعدادات الصفحات والعناصر الدلالية والعدادات ومجاميع الصفحات المستقرة في الملخص

تُفهرس أوامر المتن وأوامر الترويسة أو التذييل اللاحقة كقطع صفحات مترابطة، فيستعيد MaterializePage الصفحة كاملة دون مسح أوامر الصفحات الأخرى

يحد MaxCachedPages مصفوفات الصفحات التي يحتفظ بها المخطط فقط؛ والمستدعون الذين يبقون المصفوفات المعادة يمددون عمرها، ويحتفظ PDFium بصفحات التأليف الأصلية حتى يُحفظ مستند الوجهة أو يُغلق

صيغة التخزين حالة جلسة خاصة لا صيغة ملف محمولة، ولا ينبغي مشاركة التيار أو تعديله خارجيًا، ويجب أن تعيش كائنات المصدر التي تشير إليها XObjects الصفحات أو العقد المخزنة أطول من الخطة المقسمة صفحيًا

استخدم TPdfRandomAccessStore عندما ينبغي أن تبقى الأوامر في الذاكرة حتى عتبة منتقاة ثم تُفرَغ إلى تخزين مؤقت يُحذف عند الإغلاق

الجداول عبر الصفحات

أنشئ TPdfLayoutTable بمسارات شبكة ثابتة أو كسورية أو بحجم المحتوى، وأضف صفوفًا وخلايا، ثم استدعِ AddTable؛ ويخزن المستند لقطة مملوكة فلا تستطيع تعديلات المستدعي اللاحقة إبطال ذاكرة خطة موجودة

يجب أن تكون صفوف الترويسة متجاورة في بداية الجدول وأن تتكرر بعد انتقال صفحة أو عمود عندما تكون RepeatHeaderRows صحيحة؛ ولا تستطيع امتدادات صف الترويسة التمديد إلى صفوف المتن

يمكن تقسيم صف الجسم مع AllowSplit true؛ تتحرك مجموعات rowspan المترابطة كوحدة ذرية افتراضيًا، وتتشارك خلايا الصف العادي المقسم نطاق الأسطر والحشو وهندسة الحدود

ضع AllowRowSpanContinuation على True لامتداد المجموعة عبر مناطق صفحات أو أعمدة؛ يوزع المخطط ارتفاع الامتداد الإضافي ويختار قطعًا لا يمر بسطر نص أو صورة

يبقى AllowSplit=False شرط صف ذري؛ ترفع القيود المتعارضة أو الكتلة الأكبر من منطقة فارغة EPdfLayoutError بدل قص المحتوى أو تكراره

تبقى التسميات مع أول كتلة رؤوس والحد الأدنى لبداية أول مجموعة جسم؛ تعيد الرؤوس المتكررة استخدام العناصر الأصلية

يصدر المخطط عنصر Table واحدًا و Caption اختياريًا وأبناء TR وخلايا TH أو TD بغضّ النظر عن عدد الصفحات؛ وتعيد أوامر الترويسة المتكررة استخدام الفهارس الدلالية الأصلية، وتستقبل خلايا TD معرفات ترويسة متراكبة تلقائيًا ما لم تُزوَّد معرفات صالحة صريحة

حدود الجدول أوامر plcRectangle من نوع artifact تُصيَّر عبر كائنات مسارات PDFium الأصلية، بينما يبقى نص التسمية والخلايا محتوى موسومًا

خلايا بنصوص وصور مختلطة

تضيف AddTextRun نصًا inline بعد Text الأصلي؛ لكل run خط وحجم ولون و alpha وارتفاع سطر وسياسة كلمات طويلة خاصة

يلتف النص بحسب القياسات، ويحفظ أزواج UTF-16 عند قطع الكلمات الطويلة، ويولد كائنات أصلية مستقلة بخط أساس مشترك؛ تأتي المحاذاة الأفقية من Style الأساسي

لا تنشئ مسافات الفقرات وأعلام إبقائها معًا على مستوى run كتلًا إضافية؛ استخدم صفوفًا منفصلة أو عناصر تخطيط عادية لهذه القيود

تحدد SetImage صورة ملف واحدة لكل خلية فوق النص عند الحشو الأيسر؛ يستبدلها الاستدعاء التالي

قدم ارتفاعًا موجبًا وعرضًا يناسب الداخل؛ يستخدم العرض صفر المساحة الداخلية كلها، وتحدد الأبعاد نسبة الصورة

لا تُقسم الصورة أثناء الاستمرار وتُولد مرة في موضعها الأصلي؛ يجب بقاء الملف حتى التوليد؛ يؤدي غيابه أو عدم دعمه إلى rollback للصفحات المضافة

يلزم وصف بديل غير فارغ؛ تصبح الصورة Figure تحت TH أو TD الأصلي، وتبقى أجزاء النص مرتبطة بالخلية

يتلقى TH أو TD الأصلي مراجع marked-content المستمرة عبر الصفحات ويحفظ RowSpan و ColumnSpan وروابط الرؤوس؛ لا تُنشأ خلية منطقية مكررة

المجاميع الفرعية وتسميات الاستمرار

تنشئ AddSubtotalRow صف جسم ذريًا بالتسمية والقيمة المنسقة والنمط المقدم؛ تمتد التسمية عبر كل الأعمدة إلا عمود القيمة الأخير

يضع المساعد KeepWithPrevious=True لتجنب مجموع فرعي منفرد في أول الاستمرار؛ يقدم المستدعي القيم ولا تُحسب مجاميع رقمية

تظهر ContinuationAfter في نهاية المنطقة المستمرة و ContinuationBefore بعد الرؤوس المتكررة في التالية

التسميتان فارغتان افتراضيًا وتستخدمان ContinuationStyle وتلزمان سطرًا واحدًا وارتفاعًا خاصًا؛ لا before للأولى ولا after للأخيرة

التسميات والحدود artifacts لا تغير البنية الدلالية؛ تستخدم placeholders مثل {page} و {pages} محلل النص العادي

تصريحات الجداول المتقدمة وحدودها

procedure TPdfLayoutTableCell.AddTextRun(const Text: WideString;
  const Style: TPdfLayoutTextStyle);

procedure TPdfLayoutTableCell.SetImage(const FileName: string;
  Width, Height: Single; const AlternateText: WideString);

function TPdfLayoutTable.AddSubtotalRow(const LabelText, ValueText: WideString;
  const Style: TPdfLayoutTextStyle): TPdfLayoutTableRow;

ابدأ بـ TPdfLayoutTableOptions.Default؛ الافتراضي AllowRowSpanContinuation هو False و MaxContinuationRegions ‏10,000 منطقة، بسقف قابل للضبط 100,000

تبقى الحدود 256 عمودًا و 100,000 صف و 100,000 عنصر دلالي؛ إجمالي نص الخلايا 8,000,000 وحدة UTF-16

تقبل الخلية 1,024 run إضافيًا و 1,000,000 وحدة UTF-16 و 100,000 سطر و 100,000 جزء؛ يُرفض المحرف أو الكلمة غير القابلة للقطع الأكبر من العرض

المجموعة المستمرة محدودة بـ 10,000 خلية؛ تمنع الميزانيات والبحث المحدود pagination غير المنتهية؛ يجب أن تناسب الصور مساحة الجسم بعد الرؤوس والتسميات والحشو

تحتوي snapshot المملوكة و cache المخطط أنماط runs وأبعاد الصور وبدائلها وإبقاء المجاميع وخيارات الاستمرار؛ لا تغيرها تعديلات جدول المستدعي اللاحقة

الدوال والإجراءات على مستوى الوحدة

الروتينالوصف
ResolveLayoutTextيوسّع العناصر النائبة لأرقام الصفحات بعرض الأرقام المحجوز
PdfLayoutSemanticRoleNameيعيد اسم بنية Tagged PDF لدور دلالي
BuildTaggedLayoutPdfيطبق خطة تخطيط مكتملة وبنية موسومة على بايتات PDF المصدر
ResolvePdfLayoutGridTracksيحل مسارات الشبكة الثابتة والكسورية وبحجم المحتوى ضمن العرض المتاح

انظر أيضًا