ComposeNextLayout
Верстка страниц, разбивка на страницы, Form XObjects
Описание
Компонует один динамический фрагмент с состоянием на холсте естественного размера, применяет политику переполнения, выравнивания, разбивки на страницы и пространства потока и сообщает итоговое преобразование размещения
Синтаксис
Function TPDFlibDynamicComponentSession.ComposeNextLayout(
Page: Integer; SlotLeft, SlotTop, SlotWidth, SlotHeight: Double;
Const Options: TPDFlibDynamicLayoutOptions;
Out Placement: TPDFlibDynamicPagePlacement): Integer;
Параметры
Page | Существующий номер целевой страницы, начиная с 1 |
|---|---|
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 | Зафиксированная страница и порядковый номер успешной композиции, начиная с 1 |
|---|---|
SourceWidth, SourceHeight | Естественный используемый прямоугольник, возвращенный компонентом до размещения |
Left, Top, Width, Height | Итоговый преобразованный используемый прямоугольник до отсечения по назначению |
SlotLeft, SlotTop, SlotWidth, SlotHeight | Исходная целевая область |
Transform | Логическая аффинная матрица из локальных координат компонента в итоговые координаты документа сверху вниз |
WasClipped | True, если отсечение скрывает часть преобразованного используемого прямоугольника |
WasScaled | True, если пропорциональный масштаб меньше 1 |
Примечания
dopReject сохраняет целевую страницу и зафиксированное состояние компонента, когда естественный используемый прямоугольник превышает любую размерность слота
dopClip сохраняет естественный масштаб и использует сбалансированную область отсечения графического состояния вокруг вызова Form XObject
dopScaleDown сохраняет естественный масштаб и использует сбалансированную область отсечения в состоянии графики вокруг вызова Form XObject
Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) выбирает
Масштабирование никогда не увеличивает содержимое, которое уже помещается
ContentWidth и сохраняет пропорции компонента
Масштабирование никогда не увеличивает содержимое, которое уже умещается
Холст Form XObject следует ContentHeight и
Поток содержимого страницы становится владельцем ссылки на размещенный Form XObject до освобождения временного дескриптора захвата
Слот меньше MinimumSlotHeight возвращает retry без клонирования компонента, вызова его callback или создания временной страницы
MinimumFollowingHeight не ограничивает промежуточные фрагменты и проверяется только когда 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 | Проверка входных данных, callback, геометрии, переполнения или размещения завершилась неудачно без фиксации состояния |
|---|---|
PDF_DYNAMIC_COMPONENT_MORE | Фрагмент зафиксирован, и содержимое еще остается |
PDF_DYNAMIC_COMPONENT_COMPLETE | Фрагмент завершил сеанс либо сеанс уже был завершен |
PDF_DYNAMIC_COMPONENT_RETRY | Политика разбивки на страницы или пространства потока отложила незафиксированную пробную попытку в другой слот |
См. также
TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage