ComposeNextLayout
Макет сторінки, пагінація, Form XObjects
Опис
Компонує один динамічний фрагмент зі станом на полотні природного розміру, застосовує політику переповнення, вирівнювання, пагінації та простору потоку і повідомляє кінцеве перетворення розміщення
Синтаксис
Function TPDFlibDynamicComponentSession.ComposeNextLayout(
Page: Integer; SlotLeft, SlotTop, SlotWidth, SlotHeight: Double;
Const Options: TPDFlibDynamicLayoutOptions;
Out Placement: TPDFlibDynamicPagePlacement): Integer;
Параметри
Page | Наявний номер сторінки призначення з нумерацією з одиниці |
|---|---|
SlotLeft, SlotTop | Позиція слота призначення (лівий верхній кут) у поточних одиницях документа |
SlotWidth, SlotHeight | Скінченний додатний розмір слота призначення |
Options.ContentWidth, Options.ContentHeight | Скінченне додатне природне полотно, що передається компоненту через AvailableWidth і AvailableHeight |
Options.OverflowPolicy | dopReject, dopClip чи dopScaleDown |
Options.HorizontalAlignment | dhaLeft, dhaCenter чи dhaRight |
Options.VerticalAlignment | dvaTop, dvaCenter чи dvaBottom |
Options.PaginationPolicy | Звичайне розщеплення, одноразовий резерв утримання разом або строге повне розміщення |
Options.MinimumSlotHeight | Невід'ємна висота слота, потрібна перед початком клонування та компонування компонента |
Options.MinimumFollowingHeight | Невід'ємна висота, зарезервована після останнього розв'язаного фрагмента для наступного компонента |
Результат розміщення
PageNumber, CompositionIndex | Зафіксована сторінка та вдале число компонування з нумерацією з одиниці |
|---|---|
SourceWidth, SourceHeight | Природний використаний прямокутник, повернутий компонентом до розміщення |
Left, Top, Width, Height | Кінцевий перетворений використаний прямокутник до відсікання призначення |
SlotLeft, SlotTop, SlotWidth, SlotHeight | Початкова область призначення |
Transform | Логічна афінна матриця з локальних координат компонента до кінцевих координат документа з відліком згори вниз |
WasClipped | True, коли відсікання ховає частину перетвореного використаного прямокутника |
WasScaled | True, коли пропорційний масштаб менший за 1 |
Примітки
dopReject зберігає сторінку призначення та зафіксований стан компонента, коли природний використаний прямокутник перевищує будь-який вимір слота
dopClip
dopScaleDown зберігає природний масштаб і використовує збалансовану область відсікання графічного стану навколо виклику Form XObject
Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) обирає
Масштабування ніколи не збільшує вміст, який уже вміщується
ContentWidth і зберігає пропорції компонента
Масштабування ніколи не збільшує вміст, що вже вміщується
Полотно Form XObject слідує за ContentHeight і
Потік вмісту сторінки володіє посиланням на розміщений Form XObject ще до звільнення тимчасового дескриптора захоплення
MinimumSlotHeight
MinimumFollowingHeight, тоді як вирівнювання використовує використаний прямокутник, повідомлений компонентом, з якірною точкою в локальній координаті нуль
Потік вмісту сторінки володіє розміщеним посиланням Form XObject до звільнення тимчасового дескриптора захоплення
Слот, коротший за HasMoreContent, повертає повторну спробу без клонування компонента, виклику його зворотного виклику чи створення тимчасової сторінки
LastRetryReason не обмежує проміжні фрагменти і перевіряється лише тоді, коли LastRequiredSlotHeight дорівнює false
Повторна спроба через простір потоку повертає порожнє розміщення, зберігає всі раніше зафіксовані фрагменти та надає її причину й потрібну висоту через
Приклад
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;
Повернуті значення
PDF_DYNAMIC_COMPONENT_ERROR | Перевірку вхідних даних, зворотного виклику, геометрії, переповнення або розміщення не пройдено без фіксації стану |
|---|---|
PDF_DYNAMIC_COMPONENT_MORE | Фрагмент зафіксовано, і вміст ще залишається |
PDF_DYNAMIC_COMPONENT_COMPLETE | Фрагмент завершив сеанс або сеанс уже був завершений |
PDF_DYNAMIC_COMPONENT_RETRY | Політика пагінації чи простору потоку відклала незафіксовану пробу до іншого слота |
Див. також
TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage