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

PageNumăr de pagină de destinație existent, numerotat de la 1
SlotLeft, SlotTopPoziția slotului de destinație din colțul stânga sus, în unitățile curente ale documentului
SlotWidth, SlotHeightDimensiune finită și pozitivă a slotului de destinație
Options.ContentWidth, Options.ContentHeightCanvas natural finit și pozitiv, transmis componentei prin AvailableWidth și AvailableHeight
Options.OverflowPolicydopReject, dopClip sau dopScaleDown
Options.HorizontalAlignmentdhaLeft, dhaCenter sau dhaRight
Options.VerticalAlignmentdvaTop, dvaCenter sau dvaBottom
Options.PaginationPolicyDivizare 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, CompositionIndexPagina confirmată și numărul compunerii reușite, numerotat de la 1
SourceWidth, SourceHeightDreptunghiul folosit natural returnat de componentă înainte de plasare
Left, Top, Width, HeightDreptunghiul folosit final, transformat, înainte de decuparea destinației
SlotLeft, SlotTop, SlotWidth, SlotHeightRegiunea de destinație originală
TransformMatrice afină logică, de la coordonatele locale ale componentei la coordonatele finale ale documentului, orientate de sus în jos
WasClippedTrue când decuparea ascunde o parte din dreptunghiul folosit transformat
WasScaledTrue 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_ERRORValidarea 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_MOREFragmentul a fost validat și mai există conținut
PDF_DYNAMIC_COMPONENT_COMPLETEFragmentul a încheiat sesiunea sau sesiunea era deja completă
PDF_DYNAMIC_COMPONENT_RETRYPolitica 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