ComposeNextLayout

Layout di pagina, paginazione, Form XObject

Descrizione

Compone un frammento dinamico con stato su una tela di dimensione naturale, applica le policy di overflow, allineamento, paginazione e flow space e riporta la trasformazione finale di posizionamento

Sintassi

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

Parametri

PageNumero della pagina di destinazione esistente con base 1
SlotLeft, SlotTopPosizione dello slot di destinazione in alto a sinistra nelle unità correnti del documento
SlotWidth, SlotHeightDimensione finita e positiva dello slot di destinazione
Options.ContentWidth, Options.ContentHeightTela naturale finita e positiva passata al componente tramite AvailableWidth e AvailableHeight
Options.OverflowPolicydopReject, dopClip o dopScaleDown
Options.HorizontalAlignmentdhaLeft, dhaCenter o dhaRight
Options.VerticalAlignmentdvaTop, dvaCenter o dvaBottom
Options.PaginationPolicyScissione normale, ripiego keep-together a un colpo o posizionamento completo rigoroso
Options.MinimumSlotHeightAltezza dello slot non negativa richiesta prima che la clonazione e la composizione del componente inizino
Options.MinimumFollowingHeightAltezza non negativa riservata dopo un ultimo frammento risolto per il componente successivo

Risultato del posizionamento

PageNumber, CompositionIndexPagina confermata e numero di composizione riuscito con base 1
SourceWidth, SourceHeightRettangolo naturale usato restituito dal componente prima del posizionamento
Left, Top, Width, HeightRettangolo usato trasformato finale prima del ritaglio di destinazione
SlotLeft, SlotTop, SlotWidth, SlotHeightRegione di destinazione originale
TransformMatrice affine logica dalle coordinate locali del componente alle coordinate finali del documento dall'alto verso il basso
WasClippedTrue quando il ritaglio nasconde parte del rettangolo usato trasformato
WasScaledTrue quando la scala proporzionale è minore di 1

Note

dopReject preserva la pagina di destinazione e lo stato confermato del componente quando il rettangolo naturale usato eccede una qualsiasi dimensione dello slot

dopClip

dopScaleDown sceglie Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) e preserva il rapporto d'aspetto del componente

Il ridimensionamento non ingrandisce mai il contenuto che già entra

La tela del Form XObject segue ContentWidth e ContentHeight, mentre l'allineamento usa il rettangolo usato riportato dal componente ancorato alla coordinata locale zero

Il flusso di contenuto della pagina si appropria del riferimento del Form XObject collocato prima che venga rilasciato l'handle di acquisizione temporaneo

Uno slot più corto di MinimumSlotHeight restituisce retry senza clonare il componente, invocarne il callback né creare una pagina temporanea

MinimumFollowingHeight, mentre l'allineamento usa il rettangolo usato riportato dal componente, ancorato alla coordinata locale zero Il flusso di contenuto della pagina è proprietario del riferimento al Form XObject posizionato prima che l'handle temporaneo di acquisizione venga rilasciato Uno slot più corto di HasMoreContent restituisce retry senza clonare il componente, invocare il suo callback o creare una pagina temporanea

LastRetryReason non vincola i frammenti intermedi e viene controllato solo quando LastRequiredSlotHeight è false Un nuovo tentativo legato al flow space restituisce un posizionamento vuoto, conserva tutti i frammenti precedentemente sottoposti a commit ed espone motivo e altezza richiesta tramite

Esempio

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;

Valori restituiti

PDF_DYNAMIC_COMPONENT_ERRORConvalida di input, callback, geometria, overflow o posizionamento non riuscita senza commit dello stato
PDF_DYNAMIC_COMPONENT_MOREIl frammento è stato sottoposto a commit ed è presente altro contenuto
PDF_DYNAMIC_COMPONENT_COMPLETEIl frammento ha completato la sessione, oppure la sessione era già completa
PDF_DYNAMIC_COMPONENT_RETRYLa politica di paginazione o di flow space ha rinviato la prova non confermata a un altro slot

Vedere anche

TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage