ComposeNextLayout

Układ strony, paginacja, Form XObjects

Opis

Komponuje jeden stanowy fragment dynamiczny na obszarze roboczym o rozmiarze naturalnym, stosuje politykę przepełnienia, wyrównania, paginacji i przestrzeni przepływu oraz raportuje końcową transformację rozmieszczenia

Składnia

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

Parametry

PageIstniejący numer strony docelowej liczony od 1
SlotLeft, SlotTopPozycja lewego górnego narożnika gniazda docelowego w bieżących jednostkach dokumentu
SlotWidth, SlotHeightSkończony dodatni rozmiar gniazda docelowego
Options.ContentWidth, Options.ContentHeightSkończony dodatni naturalny obszar roboczy przekazywany komponentowi przez AvailableWidth i AvailableHeight
Options.OverflowPolicydopReject, dopClip lub dopScaleDown
Options.HorizontalAlignmentdhaLeft, dhaCenter lub dhaRight
Options.VerticalAlignmentdvaTop, dvaCenter lub dvaBottom
Options.PaginationPolicyNormalny podział, jednorazowy tryb zapasowy keep-together albo ścisłe kompletne rozmieszczenie
Options.MinimumSlotHeightNieujemna wysokość gniazda wymagana, zanim rozpocznie się klonowanie komponentu i kompozycja
Options.MinimumFollowingHeightNieujemna wysokość zarezerwowana po ostatnim rozwiązanym fragmencie dla następnego komponentu

Wynik rozmieszczenia

PageNumber, CompositionIndexZatwierdzona strona i numer udanej kompozycji liczony od 1
SourceWidth, SourceHeightNaturalny użyty prostokąt zwrócony przez komponent przed rozmieszczeniem
Left, Top, Width, HeightKońcowy przetransformowany użyty prostokąt przed przycięciem do celu
SlotLeft, SlotTop, SlotWidth, SlotHeightOryginalny region docelowy
TransformLogiczna macierz afiniczna ze współrzędnych lokalnych komponentu do końcowych współrzędnych dokumentu od góry w dół
WasClippedTrue, gdy przycinanie ukrywa część przetransformowanego użytego prostokąta
WasScaledTrue, gdy proporcjonalne skalowanie jest mniejsze niż 1

Uwagi

dopReject zachowuje stronę docelową i zatwierdzony stan komponentu, gdy naturalny wykorzystany prostokąt przekracza którykolwiek wymiar gniazda

dopClip zachowuje naturalną skalę i używa zbalansowanego zakresu przycinania stanu grafiki wokół wywołania Form XObject

dopScaleDown wybiera Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) i zachowuje proporcje komponentu

Skalowanie nigdy nie powiększa treści, która już się mieści

Płótno Form XObject podąża za ContentWidth i ContentHeight, a wyrównanie używa zgłaszanego przez komponent wykorzystanego prostokąta zakotwiczonego w lokalnej współrzędnej zero

Strumień treści strony posiada referencję umieszczonego Form XObject przed zwolnieniem tymczasowego uchwytu przechwycenia

Gniazdo krótsze niż MinimumSlotHeight zwraca ponowienie bez klonowania komponentu, wywoływania jego funkcji zwrotnej ani tworzenia strony tymczasowej

MinimumFollowingHeight nie ogranicza fragmentów pośrednich i jest sprawdzane tylko, gdy HasMoreContent ma wartość false

Ponowienie z powodu przestrzeni przepływu zwraca puste umieszczenie, zachowuje wszystkie wcześniej zatwierdzone fragmenty i ujawnia przyczynę oraz wymaganą wysokość przez LastRetryReason i LastRequiredSlotHeight

Przykład

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;

Wartości zwracane

PDF_DYNAMIC_COMPONENT_ERRORWalidacja danych wejściowych, procedury zwrotnej, geometrii, przepełnienia lub rozmieszczenia nie powiodła się bez zatwierdzania stanu
PDF_DYNAMIC_COMPONENT_MOREFragment został zatwierdzony i pozostała jeszcze treść
PDF_DYNAMIC_COMPONENT_COMPLETEFragment zakończył sesję albo sesja była już zakończona
PDF_DYNAMIC_COMPONENT_RETRYPolityka podziału na strony lub przestrzeni przepływu odroczyła niezatwierdzoną próbę do innego miejsca

Zobacz również

TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage