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
Page | Numero della pagina di destinazione esistente con base 1 |
|---|---|
SlotLeft, SlotTop | Posizione dello slot di destinazione in alto a sinistra nelle unità correnti del documento |
SlotWidth, SlotHeight | Dimensione finita e positiva dello slot di destinazione |
Options.ContentWidth, Options.ContentHeight | Tela naturale finita e positiva passata al componente tramite AvailableWidth e AvailableHeight |
Options.OverflowPolicy | dopReject, dopClip o dopScaleDown |
Options.HorizontalAlignment | dhaLeft, dhaCenter o dhaRight |
Options.VerticalAlignment | dvaTop, dvaCenter o dvaBottom |
Options.PaginationPolicy | Scissione normale, ripiego keep-together a un colpo o posizionamento completo rigoroso |
Options.MinimumSlotHeight | Altezza dello slot non negativa richiesta prima che la clonazione e la composizione del componente inizino |
Options.MinimumFollowingHeight | Altezza non negativa riservata dopo un ultimo frammento risolto per il componente successivo |
Risultato del posizionamento
PageNumber, CompositionIndex | Pagina confermata e numero di composizione riuscito con base 1 |
|---|---|
SourceWidth, SourceHeight | Rettangolo naturale usato restituito dal componente prima del posizionamento |
Left, Top, Width, Height | Rettangolo usato trasformato finale prima del ritaglio di destinazione |
SlotLeft, SlotTop, SlotWidth, SlotHeight | Regione di destinazione originale |
Transform | Matrice affine logica dalle coordinate locali del componente alle coordinate finali del documento dall'alto verso il basso |
WasClipped | True quando il ritaglio nasconde parte del rettangolo usato trasformato |
WasScaled | True 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_ERROR | Convalida di input, callback, geometria, overflow o posizionamento non riuscita senza commit dello stato |
|---|---|
PDF_DYNAMIC_COMPONENT_MORE | Il frammento è stato sottoposto a commit ed è presente altro contenuto |
PDF_DYNAMIC_COMPONENT_COMPLETE | Il frammento ha completato la sessione, oppure la sessione era già completa |
PDF_DYNAMIC_COMPONENT_RETRY | La politica di paginazione o di flow space ha rinviato la prova non confermata a un altro slot |
Vedere anche
TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage