PDFium Delphi Component Docs

FPdfLayout jednotka

Sestavuje měřitelné plány proudového rozložení s page furniture, sloupci, tabulkami přes stránky, odkazy, opakovaně použitelnými uzly, vstupem markup a sémantikou tagged-PDF

Výjimky a výčty

TypeValues or purpose
EPdfLayoutErrorVýjimka vyvolaná pro neplatný vstup rozložení, překročené limity a nekonzistentní sémantickou strukturu
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

Záznamy rozložení

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
TPdfLayoutGridTracksDynamické pole TPdfLayoutGridTrack
TPdfLayoutGridSizesDynamické pole vyřešených velikostí drah
TPdfLayoutTableOptionsCellPadding, BorderWidth, BorderColor, BorderAlpha, RepeatHeaderRows, Default
TPdfMarkupOptionsBaseStyle, HeadingScale, MaxInputCharacters, MaxNodes, Default
TPdfLayoutSemanticElementSemantics, ParentElementIndex
TPdfLayoutSemanticElementsDynamické pole TPdfLayoutSemanticElement
TPdfLayoutCommandKind, PageNumber, Bounds, Text, FontName, FontSize, Color, Alpha, Alignment, Thickness, FileName, Uri, Source, SourcePageIndex, SemanticElementIndex, MarkedContentID, AnnotationIndex
TPdfLayoutCommandsDynamické pole TPdfLayoutCommand
TPdfLayoutPlanPageSettings, PageCount, Commands, SemanticElements, TextLineCount, RuleCount, RectangleCount, ImageCount, PageXObjectCount, CachedNodeCount, LinkCount, TaggedContentCount, ArtifactCount, MeasuredTextCount, TotalPageReferenceCount, ReservedPageDigits, CacheHitCount, CacheMissCount, ReusedXObjectCount, ColumnCount, ColumnGap

Třídy rozložení

TypePublic members
TPdfLayoutMeasurerMeasureTextWidth, CacheIdentity
TPdfLayoutItemKind
TPdfLayoutTableCellText, Uri, Style, ColumnSpan, RowSpan, Header, ElementID, HeaderIDs, Scope
TPdfLayoutTableRowAddCell, Cells, Header, AllowSplit, MinimumHeight
TPdfLayoutTableCreate, Destroy, AddRow, SetCaption, Columns, Rows, Options, Caption, CaptionStyle, ElementID, ParentID
TPdfLayoutPagedPlanCreate, Destroy, ClearPageCache, MaterializePage, Reset, Summary, CommandCount, StorageByteCount, SourceCount, Completed, rozpočty MaxCommandCount, MaxStorageBytes, MaxPageCommands, MaxSourceCount a MaxCachedPages a statistiky mezipaměti CachedPageCount, CacheHitCount, CacheMissCount a 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

Omezení stránkování

Zavolejte SetLastItemConstraints po přidání jakékoli viditelné proudové položky, abyste ji udrželi pohromadě, udrželi ji se začátkem další položky, nebo vynutili fyzický konec stránky před ní nebo po ní

OrphanLines je minimální počet řádků odstavce udržených na konci oblasti a WidowLines je minimum umístěné na začátku následující oblasti; obojí má výchozí hodnotu jedna, aby se zachovalo stávající stránkování

Omezení platí stejně pro položky rolí odstavce, odkazu, seznamu, obrázku a tabulky, zatímco jen sémantické kontejnery nemají geometrii a proto odmítají stránkovací omezení

Položka pliTable přijímá jen PageBreakBefore a PageBreakAfter; dělení řádků a udržení začátku tabulky řídí tabulkový model

Plánovač kešuje zalomené řádky během stavby, takže predikce keep-with-next a výpis finálních příkazů neměří tentýž text dvakrát

Stránkované plány příkazů

Vytvořte TPdfLayoutPagedPlan nad vyhrazeným posouvatelným a měnitelně velkým TStream a poté zavolejte BuildPagedPlan nebo jej předejte do TPdf.GeneratePagedLayout

Plánovač serializuje příkazy okamžitě, uvolní každý dokončený výsledek zalomeného textu a nechá Plan.Commands prázdné, přičemž v souhrnu uchová nastavení stránek, sémantické prvky, počty a stabilní součty stránek

Příkazy těla a pozdější příkazy hlavičky nebo patičky jsou indexované jako propojené segmenty stránek, takže MaterializePage obnoví kompletní stránku bez prohledávání příkazů jiných stránek

MaxCachedPages ohraničuje jen pole stránek uchovávané plánem; volající, kteří si ponechají vrácená pole, prodlužují jejich životnost a PDFium uchovává nativní autorované stránky, dokud není cílový dokument uložen nebo zavřen

Formát úložiště je soukromý stav relace, nikoli přenosný formát souboru, proud nesmí být sdílen ani externě měněn a zdrojové objekty odkazované stránkovými XObjecty nebo kešovanými uzly musí přežít stránkovaný plán

Použijte TPdfRandomAccessStore, když mají příkazy zůstat v paměti do zvoleného prahu a poté přetéct do dočasného úložiště mazaného při zavření

Tabulky přes stránky

Vytvořte TPdfLayoutTable s pevnými, zlomkovými nebo obsahově velikostními dráhami mřížky, přidejte řádky a buňky a poté zavolejte AddTable; dokument uchovává vlastněný snímek, takže pozdější mutace volajícího nemohou zneplatnit stávající keš plánu

Hlavičkové řádky musí být na začátku tabulky souvislé a po přechodu stránky nebo sloupce se opakují, když je RepeatHeaderRows true; rozpětí hlavičkových řádků se nemohou rozšířit do řádků těla

Řádek těla se může rozdělit jen tehdy, když je AllowSplit true a nepatří do skupiny přesahující řádky; všechny buňky v rozděleném bloku sdílejí totéž pásmo řádků, odsazení a geometrii ohraničení

Popisky zůstávají s opakovaným blokem hlavičky a minimálním začátkem první skupiny těla, zatímco tranzitivní skupiny přesahující řádky se přesunou jako jedna atomická jednotka

Plánovač vydá jeden prvek Table, volitelný Caption, potomky TR a buňky TH nebo TD bez ohledu na počet stránek; opakované hlavičkové příkazy znovu použijí původní sémantické indexy a buňky TD automaticky dostanou překrývající se ID hlaviček, pokud nejsou dodána explicitní platná ID

Ohraničení tabulky jsou příkazy plcRectangle artefaktu vykreslované přes nativní objekty cest PDFium, zatímco text popisku a buněk zůstává tagovaným obsahem

Rutiny nejvyšší úrovně

RoutineDescription
ResolveLayoutTextRozšíří zástupná místa čísel stránek pomocí rezervované šířky číslic
PdfLayoutSemanticRoleNameVrací název struktury tagged-PDF pro sémantickou roli
BuildTaggedLayoutPdfAplikuje dokončený plán rozložení a tagovanou strukturu na zdrojové bajty PDF
ResolvePdfLayoutGridTracksVyřeší pevné, zlomkové a obsahově velikostní dráhy mřížky v dostupné šířce

Viz také