ComposeNextLayout

Sidlayout, sidbrytning, Form XObjects

Beskrivning

Komponerar ett tillståndsbärande dynamiskt fragment på en naturlig rityta, tillämpar principer för överskott, justering, sidbrytning och flödesutrymme och rapporterar den slutliga placeringstransformeringen

Syntax

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

Parametrar

PageBefintligt ettbaserat målsidnummer
SlotLeft, SlotTopÖvre vänstra målplatsposition i aktuella dokumentenheter
SlotWidth, SlotHeightÄndlig positiv storlek på målplatsen
Options.ContentWidth, Options.ContentHeightÄndlig positiv naturlig rityta som skickas till komponenten via AvailableWidth och AvailableHeight
Options.OverflowPolicydopReject, dopClip eller dopScaleDown
Options.HorizontalAlignmentdhaLeft, dhaCenter eller dhaRight
Options.VerticalAlignmentdvaTop, dvaCenter eller dvaBottom
Options.PaginationPolicyNormal delning, engångs-reservedelning eller strikt komplett placering
Options.MinimumSlotHeightIcke-negativ platshöjd som krävs innan komponentkloning och komposition påbörjas
Options.MinimumFollowingHeightIcke-negativ höjd som reserveras efter ett slutligt löst fragment för nästa komponent

Placeringsresultat

PageNumber, CompositionIndexBekräftad sida och ettbaserat lyckat kompositionsnr
SourceWidth, SourceHeightNaturlig använd rektangel som komponenten returnerade före placering
Left, Top, Width, HeightSlutlig transformerad använd rektangel före målklippning
SlotLeft, SlotTop, SlotWidth, SlotHeightUrsprunglig målregion
TransformLogisk affin matris från komponentlokala koordinater till slutliga topp-ned-dokumentkoordinater
WasClippedTrue när klippning döljer en del av den transformerade använda rektangeln
WasScaledTrue när den proportionella skalningen är mindre än 1

Anmärkningar

dopReject bevarar målsidan och komponentens bekräftade tillstånd när den naturliga använda rektangeln överskrider någon av platsens dimensioner

dopClip

dopScaleDown bevarar den naturliga skalan och använder ett balanserat klippningsomfång i grafiktillståndet runt Form XObject-anropet

Skalning förstorar aldrig innehåll som redan ryms

ContentWidthMin(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) väljering förstorar aldrig innehåll som redan rymms Form XObject-rytan följer ContentHeight och

Sidans innehållsström äger den placerade Form XObject-referensen innan det tillfälliga insamlingshandlet släpps

MinimumSlotHeight

MinimumFollowingHeight, medan justeringen använder den rektangel komponenten rapporterat som använd, förankrad vid lokal koordinat noll Sidans innehållsström äger den placerade Form XObject-referensen innan det tillfälliga inspärningshandtaget släpps En plats som är kortare än HasMoreContent returnerar återförsök utan att klona komponenten, anropa dess callback eller skapa en tillfällig sida

LastRetryReason begränsar inte mellanliggande fragment och kontrolleras bara när LastRequiredSlotHeight är false Ett återförsök i flödesutrymmet returnerar en tom placering, bevarar alla tidigare bekräftade fragment och exponerar sin orsak och den nödvändiga höjden via

Exempel

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ärden

PDF_DYNAMIC_COMPONENT_ERRORIndata, callback, geometri, spill eller placeringsvalidering misslyckades utan att något tillstånd bekräftades
PDF_DYNAMIC_COMPONENT_MOREFragmentet bekräftades och mer innehåll återstår
PDF_DYNAMIC_COMPONENT_COMPLETEFragmentet slutförde sessionen, eller så var sessionen redan slutförd
PDF_DYNAMIC_COMPONENT_RETRYSidbrytnings- eller flödesutrymmesprincipen sköt det obekräftade försöket vidare till en annan plats

Se även

TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage