ComposeNextLayout
Aranjarea paginii, paginare, Form XObjects
Descriere
Compune un fragment dinamic cu stare pe un canvas de dimensiune naturală, aplică politica de depășire, de aliniere, de paginare și de spațiu de flux și raportează transformarea finală de plasare
Sintaxă
Function TPDFlibDynamicComponentSession.ComposeNextLayout(
Page: Integer; SlotLeft, SlotTop, SlotWidth, SlotHeight: Double;
Const Options: TPDFlibDynamicLayoutOptions;
Out Placement: TPDFlibDynamicPagePlacement): Integer;
Parametri
Page | Număr de pagină de destinație existent, numerotat de la 1 |
|---|---|
SlotLeft, SlotTop | Poziția slotului de destinație din colțul stânga sus, în unitățile curente ale documentului |
SlotWidth, SlotHeight | Dimensiune finită și pozitivă a slotului de destinație |
Options.ContentWidth, Options.ContentHeight | Canvas natural finit și pozitiv, transmis componentei prin AvailableWidth și AvailableHeight |
Options.OverflowPolicy | dopReject, dopClip sau dopScaleDown |
Options.HorizontalAlignment | dhaLeft, dhaCenter sau dhaRight |
Options.VerticalAlignment | dvaTop, dvaCenter sau dvaBottom |
Options.PaginationPolicy | Divizare normală, soluție de rezervă keep-together într-o singură încercare sau plasare completă strictă |
Options.MinimumSlotHeight | Înălțime de slot nenegativă necesară înainte de începerea clonării componentei și a compunerii |
Options.MinimumFollowingHeight | Înălțime nenegativă rezervată, după un fragment final rezolvat, pentru componenta următoare |
Rezultatul plasării
PageNumber, CompositionIndex | Pagina confirmată și numărul compunerii reușite, numerotat de la 1 |
|---|---|
SourceWidth, SourceHeight | Dreptunghiul folosit natural returnat de componentă înainte de plasare |
Left, Top, Width, Height | Dreptunghiul folosit final, transformat, înainte de decuparea destinației |
SlotLeft, SlotTop, SlotWidth, SlotHeight | Regiunea de destinație originală |
Transform | Matrice afină logică, de la coordonatele locale ale componentei la coordonatele finale ale documentului, orientate de sus în jos |
WasClipped | True când decuparea ascunde o parte din dreptunghiul folosit transformat |
WasScaled | True când scalarea proporțională este mai mică decât 1 |
Observații
dopReject păstrează pagina de destinație și starea confirmată a componentei când dreptunghiul folosit natural depășește oricare dimensiune a slotului
dopClip
dopScaleDown păstrează scara naturală și folosește un scop de decupare echilibrat al stării grafice în jurul invocării Form XObject-ului
Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) alege
ContentWidth și păstrează raportul de aspect al componentei
Scalarea nu mărește niciodată conținutul care deja încape
Canvasul Form XObject-ului urmează ContentHeight și
MinimumSlotHeight
MinimumFollowingHeight, în timp ce alinierea folosește dreptunghiul folosit raportat de componentă, ancorat la coordonata locală zero
Fluxul de conținut al paginii deține referința Form XObject plasată înainte ca mânerul temporar de captură să fie eliberat
Un slot mai scurt decât HasMoreContent returnează reîncercare, fără a clona componenta, a-i apela callback-ul sau a crea o pagină temporară
LastRetryReason nu constrânge fragmentele intermediare și este verificat doar când LastRequiredSlotHeight este false
O reîncercare în spațiul de flux returnează un plasament gol, păstrează toate fragmentele validate anterior și își expune motivul și înălțimea necesară prin
Exemplu
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 returnate
PDF_DYNAMIC_COMPONENT_ERROR | Validarea datelor de intrare, a callback-ului, a geometriei, a depășirii sau a plasamentului a eșuat fără a valida starea |
|---|---|
PDF_DYNAMIC_COMPONENT_MORE | Fragmentul a fost validat și mai există conținut |
PDF_DYNAMIC_COMPONENT_COMPLETE | Fragmentul a încheiat sesiunea sau sesiunea era deja completă |
PDF_DYNAMIC_COMPONENT_RETRY | Politica de paginare sau de spațiu de flux a amânat încercarea nevalidată către un alt slot |
Vedeți și
TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage