ComposeNextLayout

Sidelayout, paginering, Form XObjects

Beskrivelse

Komponerer ét statefuldt dynamisk fragment på et lærred i naturlig størrelse, anvender overløbs-, justerings-, paginerings- og flow-space-politik og rapporterer den endelige placeringstransformation

Syntaks

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

Parametre

PageEksisterende etbaseret destinationssidenummer
SlotLeft, SlotTopØverste venstre destinationsslotsposition i aktuelle dokumentenheder
SlotWidth, SlotHeightEndelig positiv destinationsslotsstørrelse
Options.ContentWidth, Options.ContentHeightEndelig positivt naturligt lærred sendt til komponenten gennem AvailableWidth og AvailableHeight
Options.OverflowPolicydopReject, dopClip eller dopScaleDown
Options.HorizontalAlignmentdhaLeft, dhaCenter eller dhaRight
Options.VerticalAlignmentdvaTop, dvaCenter eller dvaBottom
Options.PaginationPolicyNormal opdeling, engangs keep-together-fallback eller streng fuldstændig placering
Options.MinimumSlotHeightIkke-negativ slothøjde, der kræves, før komponentkloning og komposition starter
Options.MinimumFollowingHeightIkke-negativ højde reserveret efter et endeligt opløst fragment til næste komponent

Placeringsresultat

PageNumber, CompositionIndexBundet side og etbaseret vellykket kompositionnummer
SourceWidth, SourceHeightNaturligt brugt rektangel returneret af komponenten før placering
Left, Top, Width, HeightEndeligt transformeret brugt rektangel før destinationsklipning
SlotLeft, SlotTop, SlotWidth, SlotHeightOprindeligt destinationsområde
TransformLogisk affin matrix fra komponentlokale koordinater til endelige top-down-dokumentkoordinater
WasClippedTrue, når klipning skjuler en del af det transformerede brugte rektangel
WasScaledTrue, når proportional skalering er mindre end 1

Bemærkninger

dopReject bevarer destinationssiden og committet komponenttilstand, når det naturlige anvendte rektangel overstiger en af pladsdimensionerne

dopClip bevarer naturlig skala og bruger et afbalanceret grafiktilstands-klippeomfang omkring Form XObject-kaldet

dopScaleDown vælger Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) og bevarer komponentens sideforhold

Skalering forstørrer aldrig indhold, der allerede passer

Form XObject-lærredet følger ContentWidth og ContentHeight, mens justeringen bruger det af komponenten rapporterede anvendte rektangel forankret i lokal koordinat nul

Sidens indholdsstrøm ejer den placerede Form XObject-reference, før det midlertidige capture-handle frigives

En plads kortere end MinimumSlotHeight returnerer retry uden at klone komponenten, kalde dens callback eller oprette en midlertidig side

MinimumFollowingHeight begrænser ikke mellemfragmenter og kontrolleres kun, når HasMoreContent er false

En flow-space-gentagelse returnerer en tom placering, bevarer alle tidligere committede fragmenter og eksponerer sin årsag og krævede højde gennem LastRetryReason og LastRequiredSlotHeight

Eksempel

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;

Returværdier

PDF_DYNAMIC_COMPONENT_ERRORValidering af input, callback, geometri, overløb eller placering mislykkedes uden at committe tilstand
PDF_DYNAMIC_COMPONENT_MOREFragmentet blev committet, og der er stadig mere indhold
PDF_DYNAMIC_COMPONENT_COMPLETEFragmentet fuldendte sessionen, eller sessionen var allerede fuldendt
PDF_DYNAMIC_COMPONENT_RETRYPaginerings- eller flow-space-politik udskød det ucommittede forsøg til en anden slot

Se også

TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage