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.OverflowPolicydopReject, dopClip чи dopScaleDown
Options.HorizontalAlignmentdhaLeft, dhaCenter чи dhaRight
Options.VerticalAlignmentdvaTop, dvaCenter чи dvaBottom
Options.PaginationPolicyЗвичайне розщеплення, одноразовий резерв утримання разом або строге повне розміщення
Options.MinimumSlotHeightНевід'ємна висота слота, потрібна перед початком клонування та компонування компонента
Options.MinimumFollowingHeightНевід'ємна висота, зарезервована після останнього розв'язаного фрагмента для наступного компонента

Результат розміщення

PageNumber, CompositionIndexЗафіксована сторінка та вдале число компонування з нумерацією з одиниці
SourceWidth, SourceHeightПриродний використаний прямокутник, повернутий компонентом до розміщення
Left, Top, Width, HeightКінцевий перетворений використаний прямокутник до відсікання призначення
SlotLeft, SlotTop, SlotWidth, SlotHeightПочаткова область призначення
TransformЛогічна афінна матриця з локальних координат компонента до кінцевих координат документа з відліком згори вниз
WasClippedTrue, коли відсікання ховає частину перетвореного використаного прямокутника
WasScaledTrue, коли пропорційний масштаб менший за 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