| Typ | Werte oder Zweck |
|---|---|
EPdfLayoutError | Ausnahme bei ungültiger Layout-Eingabe, überschrittenen Grenzen und inkonsistenter semantischer Struktur |
TPdfLayoutAlignment | plaLeft, plaCenter, plaRight |
TPdfLayoutCommandKind | plcText, plcRule, plcImage, plcPageXObject, plcCachedNode, plcLink, plcRectangle |
TPdfLayoutItemKind | pliText, pliSpacer, pliRule, pliImage, pliPageXObject, pliPageBreak, pliCachedNode, pliLink, pliSemanticNode, pliTable |
TPdfLayoutSemanticRole | plsrArtifact, plsrParagraph, plsrHeading1, plsrHeading2, plsrHeading3, plsrHeading4, plsrHeading5, plsrHeading6, plsrList, plsrListItem, plsrListLabel, plsrListBody, plsrTable, plsrTableRow, plsrTableHeader, plsrTableData, plsrFigure, plsrCaption, plsrLink, plsrSection, plsrDivision |
TPdfLayoutTableScope | pltsNone, pltsRow, pltsColumn, pltsBoth |
TPdfLayoutListNumbering | plnNone, plnDisc, plnCircle, plnSquare, plnDecimal, plnUpperRoman, plnLowerRoman, plnUpperAlpha, plnLowerAlpha |
TPdfLayoutGridTrackKind | plgtkFixed, plgtkFraction, plgtkAuto |
TPdfMarkupFormat | pmfMarkdown, pmfHtml |
| Typ | Öffentliche Member |
|---|---|
TPdfLayoutSemantics | Role, ParentID, ElementID, AlternateText, ActualText, Language, HeaderIDs, TableScope, ColumnSpan, RowSpan, ListNumbering, Artifact, Paragraph, Figure |
TPdfLayoutTextStyle | FontName, FontSize, Color, Alpha, LineHeight, Alignment, KeepTogether, BreakLongWords, SpaceBefore, SpaceAfter, Default |
TPdfLayoutConstraints | KeepTogether, KeepWithNext, PageBreakBefore, PageBreakAfter, OrphanLines, WidowLines, Default |
TPdfLayoutPageSettings | Width, Height, MarginLeft, MarginTop, MarginRight, MarginBottom, HeaderHeight, FooterHeight, A4, Letter |
TPdfLayoutRect | Left, Top, Width, Height |
TPdfLayoutGridTrack | Kind, Value, Minimum, Maximum, MeasuredContent |
TPdfLayoutGridTracks | Dynamisches Array aus TPdfLayoutGridTrack |
TPdfLayoutGridSizes | Dynamisches Array aufgelöster Spurbreiten |
TPdfLayoutTableOptions | CellPadding, BorderWidth, BorderColor, BorderAlpha, RepeatHeaderRows, AllowRowSpanContinuation, MaxContinuationRegions, ContinuationBefore, ContinuationAfter, ContinuationStyle, Default |
TPdfLayoutTableTextRun | Text, Style |
TPdfLayoutTableTextRuns | Dynamisches Array von TPdfLayoutTableTextRun |
TPdfMarkupOptions | BaseStyle, HeadingScale, MaxInputCharacters, MaxNodes, Default |
TPdfLayoutSemanticElement | Semantics, ParentElementIndex |
TPdfLayoutSemanticElements | Dynamisches Array aus TPdfLayoutSemanticElement |
TPdfLayoutCommand | Kind, PageNumber, Bounds, Text, FontName, FontSize, Color, Alpha, Alignment, Thickness, FileName, Uri, Source, SourcePageIndex, SemanticElementIndex, MarkedContentID, AnnotationIndex |
TPdfLayoutCommands | Dynamisches Array aus TPdfLayoutCommand |
TPdfLayoutPlan | PageSettings, PageCount, Commands, SemanticElements, TextLineCount, RuleCount, RectangleCount, ImageCount, PageXObjectCount, CachedNodeCount, LinkCount, TaggedContentCount, ArtifactCount, MeasuredTextCount, TotalPageReferenceCount, ReservedPageDigits, CacheHitCount, CacheMissCount, ReusedXObjectCount, ColumnCount, ColumnGap |
| Typ | Öffentliche Member |
|---|---|
TPdfLayoutMeasurer | MeasureTextWidth, CacheIdentity |
TPdfLayoutItem | Kind |
TPdfLayoutTableCell | Text, Uri, Style, AddTextRun, TextRuns, SetImage, ColumnSpan, RowSpan, Header, ElementID, HeaderIDs, Scope |
TPdfLayoutTableRow | AddCell, Cells, Header, AllowSplit, MinimumHeight, KeepWithPrevious |
TPdfLayoutTable | Create, Destroy, AddRow, AddSubtotalRow, SetCaption, Columns, Rows, Options, Caption, CaptionStyle, ElementID, ParentID |
TPdfLayoutPagedPlan | Create, Destroy, ClearPageCache, MaterializePage, Reset, Summary, CommandCount, StorageByteCount, SourceCount, Completed, die Budgets MaxCommandCount, MaxStorageBytes, MaxPageCommands, MaxSourceCount und MaxCachedPages sowie die Cache-Statistiken CachedPageCount, CacheHitCount, CacheMissCount und PeakCachedPageCount |
TPdfLayoutDocument | Create, 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 |
TPdfLayoutCachedNode | Create, Destroy, Invalidate, BeginEmission, EndEmission, Content, Width, Height, Built |
Rufen Sie SetLastItemConstraints nach dem Hinzufügen eines sichtbaren Flusselements auf, um es zusammenzuhalten, mit dem Beginn des nächsten Elements zu koppeln oder einen physischen Seitenumbruch davor oder danach zu erzwingen
OrphanLines ist die Mindestanzahl von Absatzzeilen, die am unteren Rand eines Bereichs verbleiben, und WidowLines die Mindestanzahl, die am oberen Rand des Folgebereichs platziert wird; beide stehen standardmäßig auf eins, um die bestehende Paginierung zu bewahren
Constraints gelten gleichermaßen für Absatz-, Link-, Listen-, Bild- und Tabellen-Rollen-Elemente, während rein semantische Container keine Geometrie besitzen und daher Paginierungs-Constraints zurückweisen
Ein pliTable-Element akzeptiert nur PageBreakBefore und PageBreakAfter; Zeilentrennung und das Zusammenhalten des Tabellenbeginns werden vom Tabellenmodell gesteuert
Der Planer cached umbrochene Zeilen während eines Build-Vorgangs, sodass Keep-with-next-Vorhersage und die endgültige Befehlsausgabe denselben Text nicht zweimal messen
Erzeugen Sie TPdfLayoutPagedPlan über einen dedizierten positionierbaren und vergrößerbaren TStream und rufen Sie anschließend BuildPagedPlan auf oder übergeben Sie ihn an TPdf.GeneratePagedLayout
Der Planer serialisiert Befehle sofort, gibt jedes abgeschlossene umbrochene Textergebnis frei und lässt Plan.Commands leer, während Seiteneinstellungen, semantische Elemente, Zählungen und stabile Seitensummen in der Zusammenfassung erhalten bleiben
Körperbefehle und spätere Kopf- oder Fußbefehle werden als verknüpfte Seitensegmente indiziert, sodass MaterializePage die vollständige Seite wiederherstellt, ohne Befehle anderer Seiten zu durchsuchen
MaxCachedPages begrenzt nur die vom Plan vorgehaltenen Seiten-Arrays; Aufrufer, die zurückgegebene Arrays behalten, verlängern deren Lebensdauer, und PDFium hält nativ erzeugte Seiten vor, bis das Zieldokument gespeichert oder geschlossen wird
Das Speicherformat ist ein privater Sitzungszustand und kein portables Dateiformat, der Stream darf nicht extern gemeinsam genutzt oder verändert werden, und Quellobjekte, auf die Seiten-XObjects oder gecachte Knoten verweisen, müssen den seitenaufgeteilten Plan überdauern
Verwenden Sie TPdfRandomAccessStore, wenn Befehle bis zu einem gewählten Schwellwert im Arbeitsspeicher bleiben und danach in temporären Speicher mit Löschen-beim-Schließen überlaufen sollen
Erzeugen Sie TPdfLayoutTable mit festen, bruchteilbasierten oder inhaltsbasierten Rasterspuren, fügen Sie Zeilen und Zellen hinzu und rufen Sie anschließend AddTable auf; das Dokument speichert einen eigenen Schnappschuss, sodass spätere Aufrufer-Mutationen einen bestehenden Plan-Cache nicht ungültig machen können
Kopfzeilen müssen am Tabellenbeginn zusammenhängend sein und werden nach einem Seiten- oder Spaltenwechsel wiederholt, wenn RepeatHeaderRows true ist; Kopfzeilen-Spans dürfen sich nicht in Körperzeilen erstrecken
Eine Körperzeile kann bei AllowSplit true geteilt werden; standardmäßig verschieben sich transitiv verbundene RowSpan-Gruppen atomar; Zellen einer gewöhnlichen geteilten Zeile teilen Zeilenband, Innenabstände und Rahmengeometrie
Setzen Sie AllowRowSpanContinuation auf True, um eine RowSpan-Gruppe über Seiten- oder Spaltenregionen fortzusetzen; der Planer verteilt zusätzliche Spannhöhe und wählt Schnitte ohne Textzeilen oder Bilder zu kreuzen
AllowSplit=False bleibt eine atomare Zeilenbedingung; inkompatible Bedingungen oder ein Block, der nicht in eine leere Region passt, lösen EPdfLayoutError aus, statt Inhalte zu beschneiden oder zu wiederholen
Beschriftungen bleiben beim anfänglichen Headerblock und Mindestanfang der ersten Körpergruppe; wiederholte Header verwenden dieselben Originalelemente
Der Planer gibt genau ein Table-Element, eine optionale Caption, TR-Kinder und TH- oder TD-Zellen aus, unabhängig von der Seitenzahl; wiederholte Kopfbefehle verwenden die ursprünglichen semantischen Indizes wieder, und TD-Zellen erhalten automatisch überlappende Header-IDs, sofern keine expliziten gültigen IDs übergeben werden
Tabellenränder sind Artifact-plcRectangle-Befehle, die über native PDFium-Pfadobjekte gerendert werden, während Beschriftungs- und Zelltext getaggter Inhalt bleibt
AddTextRun hängt Inline-Text an das originale Text der Zelle; jeder Run hat eigene Schrift, Größe, Farbe, Alpha, Zeilenhöhe und Regeln für lange Wörter
Gemischter Text bricht nach gemessenen Breiten um, erhält UTF-16-Surrogatpaare bei langen Wörtern und erzeugt separate native Textobjekte auf gemeinsamer Grundlinie; horizontale Ausrichtung stammt vom Basis-Style
Run-Absatzabstände und Zusammenhalteflags erzeugen keine zusätzlichen Absatzblöcke; verwenden Sie separate Zeilen oder normale Layoutobjekte für solche Bedingungen
SetImage konfiguriert ein dateibasiertes Bild je Zelle oberhalb des Textes am linken Innenabstand; erneuter Aufruf ersetzt es
Geben Sie explizit positive Höhe und passende Innenbreite an; Breite null nutzt die gesamte Innenbreite; das Seitenverhältnis bestimmen die übergebenen Abmessungen
Das Bild ist bei Fortsetzung unteilbar und wird einmal an seiner Originalposition ausgegeben; seine Datei muss bis zur Generierung verfügbar bleiben; fehlende oder nicht unterstützte Bilder führen zum Rollback angehängter Seiten
Eine nicht leere Alternativbeschreibung ist erforderlich; das Bild wird Figure-Kind des ursprünglichen TH oder TD, alle Textfragmente bleiben derselben Zelle zugeordnet
Das ursprüngliche TH oder TD erhält über Seiten hinweg die fortgesetzten Marked-Content-Referenzen und behält RowSpan, ColumnSpan und Headerbeziehungen; keine logische Zelle wird dupliziert
AddSubtotalRow erstellt eine atomare Körperzeile aus Label, formatiertem Wert und Stil des Aufrufers; bei mehreren Spalten überspannt das Label alle außer der letzten Wertspalte
Der Helper setzt KeepWithPrevious=True, damit eine Zwischensumme nicht isoliert am Anfang der Fortsetzung steht; Werte kommen vom Aufrufer, es erfolgt keine numerische Aggregation
ContinuationAfter steht am Ende einer fortgesetzten Region, ContinuationBefore nach wiederholten Headern der nächsten Region
Beide Labels sind standardmäßig leer, nutzen ContinuationStyle, müssen einzeilig passen und reservieren eigene Höhe; die erste Region hat kein Vorher-, die letzte kein Nachherlabel
Labels und Rahmen sind Artefakte ohne Änderung der semantischen Tabellenhierarchie; Seitenplatzhalter wie {page} und {pages} verwenden den normalen Layouttextresolver
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;
Initialisieren Sie mit TPdfLayoutTableOptions.Default; AllowRowSpanContinuation ist standardmäßig False, MaxContinuationRegions 10,000 Seiten-/Spaltenregionen, konfigurierbar bis 100,000
Tabellen behalten Limits von 256 Spalten, 100,000 Zeilen und 100,000 semantischen Elementen; Zelltext insgesamt ist auf 8,000,000 UTF-16-Einheiten begrenzt
Eine Mischtextzelle akzeptiert höchstens 1,024 zusätzliche Runs, 1,000,000 UTF-16-Einheiten, 100,000 Zeilen und 100,000 Fragmente; einzelne zu breite Zeichen oder Wörter ohne erlaubten Umbruch werden abgelehnt
Eine fortgesetzte Gruppe ist auf 10,000 Zellen begrenzt; Regionsbudgets und begrenzte Schnittsuche verhindern endlose Paginierung; Bilder müssen nach Headern, Labels und Innenabständen in den Körperbereich passen
Tabellensnapshot und Plancache umfassen Run-Stile, Bildmaße, Alternativtext, Zwischensummenbindung und Fortsetzungsoptionen; spätere Änderungen der Aufrufertabelle ändern den Snapshot nicht
| Routine | Beschreibung |
|---|---|
ResolveLayoutText | Ersetzt Seitennummern-Platzhalter unter Verwendung der reservierten Ziffernbreite |
PdfLayoutSemanticRoleName | Gibt den Tagged-PDF-Strukturnamen für eine semantische Rolle zurück |
BuildTaggedLayoutPdf | Wendet einen fertigen Layoutplan und eine getaggte Struktur auf PDF-Quellbytes an |
ResolvePdfLayoutGridTracks | Löst feste, bruchteilbasierte und inhaltsbasierte Rasterspuren innerhalb der verfügbaren Breite auf |