| Type | Valeurs ou rôle |
|---|---|
EPdfLayoutError | Exception levée pour une entrée de mise en page invalide, des limites dépassées et une structure sémantique incohérente |
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 |
| Type | Membres publics |
|---|---|
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 | Tableau dynamique de TPdfLayoutGridTrack |
TPdfLayoutGridSizes | Tableau dynamique de tailles de pistes résolues |
TPdfLayoutTableOptions | CellPadding, BorderWidth, BorderColor, BorderAlpha, RepeatHeaderRows, AllowRowSpanContinuation, MaxContinuationRegions, ContinuationBefore, ContinuationAfter, ContinuationStyle, Default |
TPdfLayoutTableTextRun | Text, Style |
TPdfLayoutTableTextRuns | Tableau dynamique de TPdfLayoutTableTextRun |
TPdfMarkupOptions | BaseStyle, HeadingScale, MaxInputCharacters, MaxNodes, Default |
TPdfLayoutSemanticElement | Semantics, ParentElementIndex |
TPdfLayoutSemanticElements | Tableau dynamique de TPdfLayoutSemanticElement |
TPdfLayoutCommand | Kind, PageNumber, Bounds, Text, FontName, FontSize, Color, Alpha, Alignment, Thickness, FileName, Uri, Source, SourcePageIndex, SemanticElementIndex, MarkedContentID, AnnotationIndex |
TPdfLayoutCommands | Tableau dynamique de TPdfLayoutCommand |
TPdfLayoutPlan | PageSettings, PageCount, Commands, SemanticElements, TextLineCount, RuleCount, RectangleCount, ImageCount, PageXObjectCount, CachedNodeCount, LinkCount, TaggedContentCount, ArtifactCount, MeasuredTextCount, TotalPageReferenceCount, ReservedPageDigits, CacheHitCount, CacheMissCount, ReusedXObjectCount, ColumnCount, ColumnGap |
| Type | Membres publics |
|---|---|
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, les budgets MaxCommandCount, MaxStorageBytes, MaxPageCommands, MaxSourceCount et MaxCachedPages, et les statistiques de cache CachedPageCount, CacheHitCount, CacheMissCount et 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 |
Appelez SetLastItemConstraints après l’ajout de tout élément de flux visible pour le maintenir ensemble, le lier au début de l’élément suivant ou forcer un saut de page physique avant ou après lui
OrphanLines est le nombre minimal de lignes de paragraphe conservées en bas d’une région et WidowLines le minimum placé en haut de la région suivante ; les deux valent un par défaut afin de préserver la pagination existante
Les contraintes s’appliquent également aux éléments de rôle paragraphe, lien, liste, figure et tableau, tandis que les conteneurs purement sémantiques n’ont pas de géométrie et rejettent donc les contraintes de pagination
Un élément pliTable n’accepte que PageBreakBefore et PageBreakAfter ; la scission des lignes et la rétention du début de tableau sont contrôlées par le modèle de tableau
Le planificateur met en cache les lignes enveloppées pendant une construction, de sorte que la prédiction keep-with-next et l’émission finale des commandes ne mesurent pas deux fois le même texte
Créez TPdfLayoutPagedPlan sur un TStream dédié adressable et redimensionnable, puis appelez BuildPagedPlan ou transmettez-le à TPdf.GeneratePagedLayout
Le planificateur sérialise les commandes immédiatement, libère chaque résultat de texte enveloppé achevé et laisse Plan.Commands vide tout en conservant les paramètres de page, les éléments sémantiques, les comptages et les totaux de pages stables dans le résumé
Les commandes de corps et les commandes ultérieures d’en-tête ou de pied sont indexées comme segments de page liés, de sorte que MaterializePage restaure la page complète sans analyser les commandes des autres pages
MaxCachedPages ne borne que les tableaux de pages conservés par le plan ; les appelants qui conservent les tableaux renvoyés prolongent leur durée de vie, et PDFium retient les pages natives créées jusqu’à ce que le document de destination soit enregistré ou fermé
Le format de stockage est un état de session privé plutôt qu’un format de fichier portable, le flux ne doit pas être partagé ni modifié de l’extérieur, et les objets sources référencés par des XObject de page ou des nœuds en cache doivent survivre au plan paginé
Utilisez TPdfRandomAccessStore lorsque les commandes doivent rester en mémoire jusqu’à un seuil choisi puis déborder vers un stockage temporaire supprimé à la fermeture
Créez TPdfLayoutTable avec des pistes de grille fixes, fractionnelles ou dimensionnées au contenu, ajoutez des lignes et des cellules, puis appelez AddTable ; le document stocke un instantané dont il est propriétaire afin que des mutations ultérieures de l’appelant ne puissent pas invalider un cache de plan existant
Les lignes d’en-tête doivent être contiguës au début du tableau et se répéter après une transition de page ou de colonne lorsque RepeatHeaderRows est true ; les fusions de lignes d’en-tête ne peuvent pas s’étendre dans les lignes de corps
Une ligne de corps peut être divisée si AllowSplit vaut true ; par défaut, les groupes liés transitivement par des cellules fusionnées verticalement restent atomiques, et les cellules d’une ligne divisée ordinaire partagent les mêmes bandes de texte, marges et bordures
Mettez AllowRowSpanContinuation à True pour prolonger un groupe de cellules fusionnées sur plusieurs régions de page ou colonne ; le planificateur répartit la hauteur supplémentaire entre les lignes et choisit des coupes ne traversant ni texte ni image
AllowSplit=False impose toujours une ligne atomique ; des contraintes incompatibles ou un bloc atomique trop grand pour une région vide lèvent EPdfLayoutError plutôt que de couper ou répéter le contenu
Les légendes restent avec le bloc d’en-tête initial et le début minimal du premier groupe de corps ; les en-têtes répétés réutilisent les éléments originaux
Le planificateur émet un élément Table, une Caption facultative, des enfants TR et des cellules TH ou TD quel que soit le nombre de pages ; les commandes d’en-tête répétées réutilisent les index sémantiques d’origine, et les cellules TD reçoivent automatiquement les ID d’en-tête en chevauchement sauf si des ID valides explicites sont fournis
Les bordures de tableau sont des commandes artifact plcRectangle rendues via des objets de chemin natifs PDFium, tandis que le texte des légendes et des cellules reste du contenu étiqueté
AddTextRun ajoute du texte en ligne après le Text original de la cellule ; chaque segment possède sa police, taille, couleur, alpha, hauteur de ligne et politique de coupure des mots longs
Le texte mixte passe à la ligne selon les largeurs mesurées, préserve les paires de substituts UTF-16 lors de la coupure d’un mot long et produit des objets texte natifs distincts sur une même ligne de base ; l’alignement horizontal vient du Style de base
L’espacement de paragraphe et les indicateurs de maintien groupé des segments ne créent pas de blocs supplémentaires ; utilisez des lignes distinctes ou des éléments de mise en page ordinaires pour ces contraintes
SetImage configure une image issue d’un fichier par cellule, placée au-dessus du texte à la marge gauche ; un nouvel appel la remplace
Fournissez une hauteur explicitement positive et une largeur tenant dans la largeur intérieure ; zéro utilise toute cette largeur ; les dimensions fournies déterminent le rapport d’aspect
L’image est indivisible pendant une continuation et n’est produite qu’une fois à sa position originale ; son fichier doit rester disponible jusqu’à la génération ; un fichier absent ou une image non prise en charge provoque le retrait des pages ajoutées
Une description alternative non vide est obligatoire ; l’image devient un enfant Figure de son TH ou TD original, et tous les fragments de texte restent associés à cette cellule
Sur plusieurs pages, le TH ou TD original reçoit les références de contenu marqué prolongé et conserve RowSpan, ColumnSpan et ses associations d’en-tête ; aucune cellule logique dupliquée n’est créée
AddSubtotalRow crée une ligne de corps atomique avec le libellé, la valeur formatée et le style fournis ; sur plusieurs colonnes, le libellé occupe toutes les colonnes sauf la dernière, réservée à la valeur
Le helper fixe KeepWithPrevious=True pour éviter un sous-total isolé en début de continuation ; l’appelant fournit les valeurs et aucun calcul d’agrégation n’est effectué
ContinuationAfter s’affiche à la fin d’une région prolongée, et ContinuationBefore après les éventuels en-têtes répétés de la région suivante
Les deux libellés sont vides par défaut, utilisent ContinuationStyle, tiennent sur une ligne et réservent leur hauteur ; la première région n’a pas de libellé avant et la dernière n’a pas de libellé après
Les libellés et bordures sont des artefacts, sans modifier la hiérarchie sémantique du tableau ; les marqueurs de page comme {page} et {pages} utilisent le résolveur de texte ordinaire
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;
Utilisez TPdfLayoutTableOptions.Default avant de modifier les options ; AllowRowSpanContinuation vaut False et MaxContinuationRegions vaut 10,000 régions de page ou colonne, avec un plafond configurable de 100,000
Les tableaux restent limités à 256 colonnes, 100,000 lignes et 100,000 éléments sémantiques ; le texte total des cellules est limité à 8,000,000 unités UTF-16
Une cellule de texte mixte accepte au plus 1,024 segments ajoutés, 1,000,000 unités UTF-16, 100,000 lignes et 100,000 fragments ; un caractère, ou un mot sans coupure des mots longs, dépassant la largeur disponible est refusé
Un groupe prolongé est limité à 10,000 cellules ; budgets de régions et recherches de coupe bornées évitent une pagination infinie ; les images doivent tenir dans le corps disponible après en-têtes, libellés et marges
L’instantané possédé du tableau et le cache du plan comprennent styles des segments, dimensions et descriptions des images, maintien des sous-totaux et paramètres de continuation ; les modifications ultérieures du tableau appelant ne changent pas cet instantané
| Routine | Description |
|---|---|
ResolveLayoutText | Développe les espaces réservés de numéros de page en utilisant la largeur de chiffres réservée |
PdfLayoutSemanticRoleName | Renvoie le nom de structure PDF étiqueté d’un rôle sémantique |
BuildTaggedLayoutPdf | Applique un plan de mise en page achevé et une structure étiquetée aux octets PDF sources |
ResolvePdfLayoutGridTracks | Résout les pistes de grille fixes, fractionnelles et dimensionnées au contenu dans la largeur disponible |