ComposeNextLayout

Sideoppsett, paginering, Form XObjects

Beskrivelse

Samensetter ett tilstandsfylt dynamisk fragment på et lerret i naturlig størrelse, anvender overflyt-, justerings-, paginerings- og flytplassregler og rapporterer den endelige plasseringstransformasjonen

Syntaks

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

Parametre

PageEksisterende 1-basert målsidenummer
SlotLeft, SlotTopØvre venstre målplassposisjon i gjeldende dokumentenheter
SlotWidth, SlotHeightEndelig positiv målplassstørrelse
Options.ContentWidth, Options.ContentHeightEndelig positivt naturlig lerret sendt til komponenten gjennom AvailableWidth og AvailableHeight
Options.OverflowPolicydopReject, dopClip eller dopScaleDown
Options.HorizontalAlignmentdhaLeft, dhaCenter eller dhaRight
Options.VerticalAlignmentdvaTop, dvaCenter eller dvaBottom
Options.PaginationPolicyNormal splitting, engangs hold-sammen-fallback eller streng fullstendig plassering
Options.MinimumSlotHeightIkke-negativ plasshøyde som kreves før komponentkloning og sammensetning starter
Options.MinimumFollowingHeightIkke-negativ høyde reservert etter et siste løste fragment for neste komponent

Plasseringsresultat

PageNumber, CompositionIndexUtført side og 1-basert vellykket sammensetningsnummer
SourceWidth, SourceHeightNaturlig brukt rektangel returnert av komponenten før plassering
Left, Top, Width, HeightEndelig transformert brukt rektangel før målklipping
SlotLeft, SlotTop, SlotWidth, SlotHeightOpprinnelig målområde
TransformLogisk affin matrise fra komponentlokale koordinater til endelige topp-ned-dokumentkoordinater
WasClippedTrue når klipping skjuler del av det transformerte brukte rektangelet
WasScaledTrue når proporsjonal skalering er mindre enn 1

Merknader

dopReject bevarer målsiden og tilstanden til commitet komponent når det naturlige brukte rektangelet overstiger en av plassdimensjonene

dopClip bevarer naturlig skala og bruker et balansert omfang for grafikktilstand-klipping rundt Form XObject-invokasjonen

dopScaleDown velger Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) og bevarer komponentens sideforhold

Skalering forstørrer aldri innhold som allerede passerer

Form XObject-canvaset følger ContentWidth og ContentHeight, mens justering bruker det komponentrapporterte brukte rektangelet forankret i lokal koordinat null

Sideinnholdsstrømmen eier den plasserte Form XObject-referansen før det midlertidige fangsthåndtaket frigis

En plass kortere enn MinimumSlotHeight returnerer nytt forsøk uten å klone komponenten, kalle callback-en eller opprette en midlertidig side

MinimumFollowingHeight begrenser ikke mellomliggende fragmenter og kontrolleres bare når HasMoreContent er usann

Et flytrom-forsøk returnerer en tom plassering, bevarer alle tidligere commitete fragmenter og eksponerer sin årsak og påkrevde høyde gjennom 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;

Returverdier

PDF_DYNAMIC_COMPONENT_ERRORValidering av inndata, callback, geometri, overløp eller plassering mislyktes uten at noen tilstand ble tatt i bruk
PDF_DYNAMIC_COMPONENT_MOREFragmentet ble tatt med, og mer innhold gjenstår
PDF_DYNAMIC_COMPONENT_COMPLETEFragmentet fullførte økten, eller økten var allerede fullført
PDF_DYNAMIC_COMPONENT_RETRYSideinndelings- eller flyteplassregelen utsatte forsøket, som ikke ble tatt med, til en annen plass

Se også

TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage