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

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

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