PDFium Delphi Component Docs

FPdfLayout birimi

Sayfa süslemeleri, sütunlar, sayfalar arası tablolar, bağlantılar, yeniden kullanılabilir düğümler, markup girdisi ve tagged-PDF semantiğiyle ölçülebilir akış yerleşimi planları kurar

Exceptions and enumerations

TypeValues or purpose
EPdfLayoutErrorGeçersiz yerleşim girdisi, aşılan limitler ve tutarsız anlamsal yapı için fırlatılan istisna
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

Layout records

TypePublic members
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
TPdfLayoutGridTracksTPdfLayoutGridTrack dinamik dizisi
TPdfLayoutGridSizesÇözümlenmiş iz boyutlarının dinamik dizisi
TPdfLayoutTableOptionsCellPadding, BorderWidth, BorderColor, BorderAlpha, RepeatHeaderRows, AllowRowSpanContinuation, MaxContinuationRegions, ContinuationBefore, ContinuationAfter, ContinuationStyle, Default
TPdfLayoutTableTextRunText, Style
TPdfLayoutTableTextRunsTPdfLayoutTableTextRun dinamik dizisi
TPdfMarkupOptionsBaseStyle, HeadingScale, MaxInputCharacters, MaxNodes, Default
TPdfLayoutSemanticElementSemantics, ParentElementIndex
TPdfLayoutSemanticElementsTPdfLayoutSemanticElement dinamik dizisi
TPdfLayoutCommandKind, PageNumber, Bounds, Text, FontName, FontSize, Color, Alpha, Alignment, Thickness, FileName, Uri, Source, SourcePageIndex, SemanticElementIndex, MarkedContentID, AnnotationIndex
TPdfLayoutCommandsTPdfLayoutCommand dinamik dizisi
TPdfLayoutPlanPageSettings, PageCount, Commands, SemanticElements, TextLineCount, RuleCount, RectangleCount, ImageCount, PageXObjectCount, CachedNodeCount, LinkCount, TaggedContentCount, ArtifactCount, MeasuredTextCount, TotalPageReferenceCount, ReservedPageDigits, CacheHitCount, CacheMissCount, ReusedXObjectCount, ColumnCount, ColumnGap

Layout classes

TypePublic members
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 alanları, MaxCommandCount, MaxStorageBytes, MaxPageCommands, MaxSourceCount ve MaxCachedPages bütçeleri ile CachedPageCount, CacheHitCount, CacheMissCount ve PeakCachedPageCount önbellek istatistikleri
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

Pagination constraints

Görünür herhangi bir akış öğesi ekledikten sonra onu bir arada tutmak, bir sonraki öğenin başıyla birlikte tutmak ya da öncesinde/sonrasında fiziksel bir sayfa sonu zorlamak için SetLastItemConstraints çağırın

OrphanLines, bir bölgenin altında tutulan en az paragraf satırı sayısıdır; WidowLines ise izleyen bölgenin başına konan en az sayıdır. Mevcut sayfalandırmayı korumak için ikisi de bir değeriyle başlar

Kısıtlamalar paragraf, bağlantı, liste, şekil ve tablo rolündeki öğelere eşit uygulanır; yalnızca anlamsal olan kapsayıcıların geometrisi olmadığı için sayfalama kısıtlarını reddeder

Bir pliTable öğesi yalnızca PageBreakBefore ve PageBreakAfter kabul eder; satır bölme ve tablo başlangıcını tutma, tablo modeli tarafından denetlenir

Planlayıcı bir kurulum sırasında sarmalanmış satırları önbelleğe alır; böylece keep-with-next öngörüsü ve son komut üretimi aynı metni iki kez ölçmez

Paged command plans

Adanmış, konumlanabilir ve yeniden boyutlandırılabilir bir TStream üzerinde TPdfLayoutPagedPlan oluşturun, ardından BuildPagedPlan çağırın ya da onu TPdf.GeneratePagedLayout işlevine geçirin

Planlayıcı komutları hemen serileştirir, tamamlanan her sarmalanmış metin sonucunu serbest bırakır ve Plan.Commands boş bırakırken sayfa ayarlarını, anlamsal öğeleri, sayıları ve özet içindeki kararlı sayfa toplamlarını tutar

Gövde komutları ile sonraki üst ya da alt bilgi komutları bağlı sayfa segmentleri olarak indekslenir; böylece MaterializePage, diğer sayfaların komutlarını taramadan eksiksiz sayfayı geri yükler

MaxCachedPages yalnızca planın tuttuğu sayfa dizilerini sınırlar; döndürülen dizileri elinde tutan çağıranlar ömürlerini uzatır ve PDFium, hedef belge kaydedilene ya da kapatılana kadar yerelde yazılmış sayfaları tutar

Depolama biçimi taşınabilir bir dosya biçimi değil özel oturum durumudur; akış dışarıyla paylaşılmamalı ya da değiştirilmemeli ve sayfa XObject'larının ya da önbelleğe alınan düğümlerin başvurduğu kaynak nesneler sayfalı plandan uzun ömürlü olmalıdır

Komutların seçilen bir eşiğe kadar bellekte kalması ve sonrasında kapanınca silinen geçici depolamaya taşması gerekiyorsa TPdfRandomAccessStore kullanın

Cross-page tables

Sabit, kesirli ya da içerik boyutlu ızgara izleriyle bir TPdfLayoutTable oluşturun, satır ve hücre ekleyin, ardından AddTable çağırın; belge sahip olduğu bir anlık görüntüyü saklar, böylece sonraki çağıran mutasyonları mevcut bir plan önbelleğini geçersiz kılamaz

Üst bilgi satırları tablonun başında bitişik olmalı ve RepeatHeaderRows true olduğunda bir sayfa ya da sütun geçişinden sonra yinelenmelidir; üst bilgi satırı kapsamları gövde satırlarına uzanamaz

Bir gövde satırı, AllowSplit true olduğunda bölünebilir; varsayılan olarak geçişli satır kapsayan gruplar tek bir atomik birim olarak hareket eder ve sıradan bölünmüş bir satırdaki hücreler aynı satır bandını, dolguyu ve kenarlık geometrisini paylaşır

Satır kapsayan bir grubun sayfa ya da sütun bölgeleri boyunca devam etmesine izin vermek için AllowRowSpanContinuation değerini True yapın; planlayıcı ek kapsam yüksekliğini satırlarına dağıtır ve ne bir metin satırını ne de bir görüntüyü kesen kesimler seçer

AllowSplit=False atomik satır kısıtı olarak kalır; uyumsuz satır kısıtları ya da yeni bir bölgeye sığmayan bir atomik blok, içeriği kırpmak ya da yinelemek yerine EPdfLayoutError fırlatır

Başlıklar ilk üst bilgi bloğuyla ve ilk gövde grubunun asgari başlangıcıyla kalır; yinelenen üst bilgiler aynı özgün üst bilgi öğelerini yeniden kullanır

Planlayıcı sayfa sayısından bağımsız olarak bir Table öğesi, isteğe bağlı Caption, TR alt öğeleri ve TH ya da TD hücreleri üretir; yinelenen üst bilgi komutları özgün anlamsal indeksleri yeniden kullanır ve TD hücreleri, açık geçerli ID'ler sağlanmadığında çakışan üst bilgi ID'lerini otomatik olarak alır

Tablo kenarlıkları, yerel PDFium path nesneleri üzerinden işlenen artifact plcRectangle komutlarıdır; başlık ve hücre metni ise etiketli içerik olarak kalır

Mixed text and image cells

AddTextRun, hücrenin özgün Text değerinden sonra satır içi metin ekler; her run kendi yazı tipi, yazı tipi boyutu, rengi, alfası, satır yüksekliği ve uzun sözcük kırma ilkesine sahiptir

Karışık metin ölçülen genişlikleri kullanarak sarar, uzun bir sözcüğü kırarken UTF-16 surrogate çiftlerini korur ve paylaşılan bir taban çizgisiyle ayrı yerel metin nesneleri yayar; yatay hizalama hücrenin temel Style değerinden gelir

Run düzeyindeki paragraf aralığı ve keep-together bayrakları ek paragraf blokları oluşturmaz; bu kısıtlar gerektiğinde ayrı satırlar ya da sıradan yerleşim öğeleri kullanın

SetImage, hücre başına bir dosya destekli görüntüyü yapılandırır; sol dolguda metninin üstüne yerleştirilir ve başka bir çağrı o görüntüyü değiştirir

Açık, pozitif bir yükseklik ve iç hücre genişliğine sığan bir genişlik sağlayın; sıfır genişlik iç genişliğin tamamını kullanır ve çağıran, görüntünün en-boy oranını verilen boyutlar üzerinden denetler

Görüntü devam sırasında bölünemez ve özgün konumunda bir kez yayılır; dosyası üretime kadar kullanılabilir kalmalıdır ve eksik bir dosya ya da desteklenmeyen bir görüntü, üretimin eklenen sayfaları geri almasına yol açar

Boş olmayan bir alternatif açıklama gereklidir; görüntü, özgün TH ya da TD öğesinin bir Figure alt öğesi olur ve tüm metin parçaları o hücreyle ilişkili kalır

Sayfalar arasında özgün TH ya da TD, devam eden marked-content başvurularını alır ve RowSpan, ColumnSpan ile üst bilgi ilişkilerini korur; yinelenen mantıksal hücre oluşturulmaz

Subtotals and continuation labels

AddSubtotalRow, çağıranın etiketi, biçimlendirilmiş değeri ve stilini kullanarak atomik bir gövde satırı oluşturur; birden çok sütunda etiket, son değer sütunu dışındaki tüm sütunlara yayılır

Yardımcı, bir ara toplamın devamda yalıtılmış bir ilk satır olmaması için KeepWithPrevious=True ayarlar; değerler çağıran tarafından sağlanır ve sayısal toplama yapılmaz

ContinuationAfter, devam eden bir bölgenin sonunda gösterilir ve ContinuationBefore, izleyen bölgedeki yinelenen üst bilgilerden sonra gösterilir

İki etiket de varsayılan olarak boştur, ContinuationStyle kullanır, tek satıra sığmalı ve kendi yüksekliğini ayırmalıdır; ilk bölgede öncesi etiketi, son bölgede sonrası etiketi yoktur

Etiketler ve kenarlıklar artifact'tır ve anlamsal tablo hiyerarşisini değiştirmez; {page} ve {pages} gibi sayfa yer tutucuları sıradan yerleşim metni çözümleyicisini kullanır

Advanced table declarations and limits

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;

Seçenekleri geçersiz kılmadan önce TPdfLayoutTableOptions.Default kullanın; AllowRowSpanContinuation varsayılan olarak False ve MaxContinuationRegions 10.000 sayfa ya da sütun bölgesi, yapılandırılabilir üst sınırı 100.000 olacak şekilde başlar

Tablolar 256 sütun, 100.000 satır ve 100.000 anlamsal öğe limitlerini korur; toplam hücre metni 8.000.000 UTF-16 kod birimi ile sınırlıdır

Karışık metinli bir hücre en fazla 1.024 eklenmiş run, 1.000.000 UTF-16 kod birimi, 100.000 satır ve 100.000 parça kabul eder; kullanılabilir genişliği aşan tek bir karakter ya da uzun sözcük kırma devre dışıyken bir sözcük reddedilir

Devam eden bir satır grubu 10.000 hücre ile sınırlıdır; bölge bütçeleri ve sınırlı kesim aramaları sınırsız sayfalamayı önler ve görüntüler üst bilgiler, etiketler ve dolgudan sonra kullanılabilir gövde bölgesine sığmalıdır

Sahiplenilen tablo anlık görüntüsü ve plan önbelleği run stillerini, görüntü boyutlarını, alternatif metni, ara toplam tutmayı ve devam ayarlarını içerir; çağıranın tablosundaki sonraki değişiklikler bu anlık görüntüyü değiştirmez

Top-level routines

RoutineDescription
ResolveLayoutTextSayfa numarası yer tutucularını ayrılmış basamak genişliğiyle açar
PdfLayoutSemanticRoleNameBir anlamsal rol için tagged-PDF yapı adını döndürür
BuildTaggedLayoutPdfTamamlanmış bir yerleşim planını ve etiketli yapıyı kaynak PDF baytlarına uygular
ResolvePdfLayoutGridTracksSabit, kesirli ve içerik boyutlu ızgara izlerini kullanılabilir genişlik içinde çözer

See Also