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
Page | Istniejący numer strony docelowej liczony od 1 |
|---|---|
SlotLeft, SlotTop | Pozycja lewego górnego narożnika gniazda docelowego w bieżących jednostkach dokumentu |
SlotWidth, SlotHeight | Skończony dodatni rozmiar gniazda docelowego |
Options.ContentWidth, Options.ContentHeight | Skończony dodatni naturalny obszar roboczy przekazywany komponentowi przez AvailableWidth i AvailableHeight |
Options.OverflowPolicy | dopReject, dopClip lub dopScaleDown |
Options.HorizontalAlignment | dhaLeft, dhaCenter lub dhaRight |
Options.VerticalAlignment | dvaTop, dvaCenter lub dvaBottom |
Options.PaginationPolicy | Normalny podział, jednorazowy tryb zapasowy keep-together albo ścisłe kompletne rozmieszczenie |
Options.MinimumSlotHeight | Nieujemna wysokość gniazda wymagana, zanim rozpocznie się klonowanie komponentu i kompozycja |
Options.MinimumFollowingHeight | Nieujemna wysokość zarezerwowana po ostatnim rozwiązanym fragmencie dla następnego komponentu |
Wynik rozmieszczenia
PageNumber, CompositionIndex | Zatwierdzona strona i numer udanej kompozycji liczony od 1 |
|---|---|
SourceWidth, SourceHeight | Naturalny użyty prostokąt zwrócony przez komponent przed rozmieszczeniem |
Left, Top, Width, Height | Końcowy przetransformowany użyty prostokąt przed przycięciem do celu |
SlotLeft, SlotTop, SlotWidth, SlotHeight | Oryginalny region docelowy |
Transform | Logiczna macierz afiniczna ze współrzędnych lokalnych komponentu do końcowych współrzędnych dokumentu od góry w dół |
WasClipped | True, gdy przycinanie ukrywa część przetransformowanego użytego prostokąta |
WasScaled | True, 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_ERROR | Walidacja danych wejściowych, procedury zwrotnej, geometrii, przepełnienia lub rozmieszczenia nie powiodła się bez zatwierdzania stanu |
|---|---|
PDF_DYNAMIC_COMPONENT_MORE | Fragment został zatwierdzony i pozostała jeszcze treść |
PDF_DYNAMIC_COMPONENT_COMPLETE | Fragment zakończył sesję albo sesja była już zakończona |
PDF_DYNAMIC_COMPONENT_RETRY | Polityka podziału na strony lub przestrzeni przepływu odroczyła niezatwierdzoną próbę do innego miejsca |
Zobacz również
TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage