ComposeNextLayout

Mise en page, pagination, Form XObjects

Description

Compose un fragment dynamique à état sur une toile à taille naturelle, applique les règles de débordement, d'alignement, de pagination et d'espace de flux et signale la transformation du placement final

Syntaxe

Function TPDFlibDynamicComponentSession.ComposeNextLayout(
  Page: Integer; SlotLeft, SlotTop, SlotWidth, SlotHeight: Double;
  Const Options: TPDFlibDynamicLayoutOptions;
  Out Placement: TPDFlibDynamicPagePlacement): Integer;

Paramètres

PageNuméro de page de destination existant à base 1
SlotLeft, SlotTopPosition de l'emplacement de destination du coin supérieur gauche dans les unités courantes du document
SlotWidth, SlotHeightTaille finie et positive de l'emplacement de destination
Options.ContentWidth, Options.ContentHeightToile naturelle finie et positive transmise au composant via AvailableWidth et AvailableHeight
Options.OverflowPolicydopReject, dopClip ou dopScaleDown
Options.HorizontalAlignmentdhaLeft, dhaCenter ou dhaRight
Options.VerticalAlignmentdvaTop, dvaCenter ou dvaBottom
Options.PaginationPolicyScission normale, repli unique de maintien ensemble ou placement complet strict
Options.MinimumSlotHeightHauteur d'emplacement non négative requise avant le clonage du composant et le démarrage de la composition
Options.MinimumFollowingHeightHauteur non négative réservée après un fragment final résolu pour le composant suivant

Résultat du placement

PageNumber, CompositionIndexPage validée et numéro à base 1 de la composition réussie
SourceWidth, SourceHeightRectangle utilisé naturel renvoyé par le composant avant le placement
Left, Top, Width, HeightRectangle utilisé transformé final avant le rognage de destination
SlotLeft, SlotTop, SlotWidth, SlotHeightRégion de destination d'origine
TransformMatrice affine logique des coordonnées locales du composant vers les coordonnées document finales orientées de haut en bas
WasClippedTrue lorsque le rognage masque une partie du rectangle utilisé transformé
WasScaledTrue lorsque l'échelle proportionnelle est inférieure à 1

Remarques

dopReject préserve la page de destination et l'état validé du composant lorsque le rectangle utilisé naturel excède l'une ou l'autre dimension de l'emplacement

dopClip

dopScaleDown choisit Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) et préserve le rapport d'aspect du composant

La mise à l'échelle n'agrandit jamais un contenu qui tient déjà

La toile du Form XObject suit ContentWidth et ContentHeight, tandis que l'alignement utilise le rectangle utilisé signalé par le composant, ancré à la coordonnée locale zéro

Le flux de contenu de page prend possession de la référence du Form XObject placé avant la libération du handle de capture temporaire

Un emplacement plus court que MinimumSlotHeight renvoie réessai sans cloner le composant, invoquer son callback ni créer une page temporaire

MinimumFollowingHeight, tandis que l'alignement utilise le rectangle utilisé signalé par le composant, ancré à la coordonnée locale zéro Le flux de contenu de la page prend possession de la référence du Form XObject placé avant la libération du handle de capture temporaire Un emplacement plus court que HasMoreContent renvoie une nouvelle tentative sans cloner le composant, sans invoquer son rappel ni créer de page temporaire

LastRetryReason ne contraint pas les fragments intermédiaires et n'est vérifié que lorsque LastRequiredSlotHeight vaut false Une nouvelle tentative d'espace de flux renvoie un placement vide, conserve tous les fragments déjà validés et expose sa raison et sa hauteur requise via

Exemple

Options := TPDFlibDynamicComponentSession.CreateLayoutOptions(
  640, 360, dopScaleDown, dhaLeft, dvaTop, dppAllowSplit, 72, 24);

Status := Session.ComposeNextLayout(
  PageNumber, 36, 72, 540, 240, Options, Placement);

if Status <> PDF_DYNAMIC_COMPONENT_ERROR then
begin
  FinalScale := Placement.Transform.M11;
  FinalLeft := Placement.Left;
  FinalTop := Placement.Top;
end;

Valeurs de retour

PDF_DYNAMIC_COMPONENT_ERRORLa validation de l'entrée, du callback, de la géométrie, du débordement ou du placement a échoué sans validation d'état
PDF_DYNAMIC_COMPONENT_MORELe fragment a été validé et il reste du contenu
PDF_DYNAMIC_COMPONENT_COMPLETELe fragment a achevé la session ou la session était déjà terminée
PDF_DYNAMIC_COMPONENT_RETRYLa règle de pagination ou d'espace de flux a reporté l'essai non validé vers un autre emplacement

Voir aussi

TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage