ComposeNextLayout

Diseño de página, paginación, Form XObjects

Descripción

Compone un fragmento dinámico con estado en un lienzo de tamaño natural, aplica la política de desbordamiento, alineación, paginación y espacio de flujo, e informa de la transformación de colocación final

Sintaxis

Function TPDFlibDynamicComponentSession.ComposeNextLayout(
  Page: Integer; SlotLeft, SlotTop, SlotWidth, SlotHeight: Double;
  Const Options: TPDFlibDynamicLayoutOptions;
  Out Placement: TPDFlibDynamicPagePlacement): Integer;

Parámetros

PageNúmero de página de destino existente basado en 1
SlotLeft, SlotTopPosición de la ranura de destino superior izquierda en las unidades actuales del documento
SlotWidth, SlotHeightTamaño finito y positivo de la ranura de destino
Options.ContentWidth, Options.ContentHeightLienzo natural finito y positivo pasado al componente a través de AvailableWidth y AvailableHeight
Options.OverflowPolicydopReject, dopClip o dopScaleDown
Options.HorizontalAlignmentdhaLeft, dhaCenter o dhaRight
Options.VerticalAlignmentdvaTop, dvaCenter o dvaBottom
Options.PaginationPolicyDivisión normal, alternativa de mantener junto de una sola vez o colocación completa estricta
Options.MinimumSlotHeightAltura de ranura no negativa requerida antes de comenzar la clonación y composición del componente
Options.MinimumFollowingHeightAltura no negativa reservada después de un fragmento final resuelto para el siguiente componente

Resultado de colocación

PageNumber, CompositionIndexPágina confirmada y número de composición con éxito basado en 1
SourceWidth, SourceHeightRectángulo usado natural devuelto por el componente antes de la colocación
Left, Top, Width, HeightRectángulo usado transformado final antes del recorte al destino
SlotLeft, SlotTop, SlotWidth, SlotHeightRegión de destino original
TransformMatriz afín lógica desde coordenadas locales del componente hasta coordenadas de documento finales de arriba abajo
WasClippedTrue cuando el recorte oculta parte del rectángulo usado transformado
WasScaledTrue cuando la escala proporcional es menor que 1

Observaciones

dopReject preserva la página de destino y el estado confirmado del componente cuando el rectángulo usado natural excede cualquiera de las dimensiones de la ranura

dopClip

dopScaleDown elige Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) y conserva la relación de aspecto del componente

El escalado nunca amplía el contenido que ya cabe

El lienzo del Form XObject sigue ContentWidth y ContentHeight, mientras la alineación usa el rectángulo usado notificado por el componente anclado en la coordenada local cero

El flujo de contenido de la página se apropia de la referencia del Form XObject colocado antes de que se libere el identificador temporal de captura

Una ranura más corta que MinimumSlotHeight devuelve reintento sin clonar el componente, invocar su retrollamada ni crear una página temporal

MinimumFollowingHeight, mientras que la alineación usa el rectángulo usado informado por el componente, anclado en la coordenada local cero El flujo de contenido de página toma posesión de la referencia del Form XObject colocado antes de que se suelte el identificador de captura temporal Una ranura más corta que HasMoreContent devuelve reintento sin clonar el componente, invocar su retrollamada ni crear una página temporal

LastRetryReason no restringe los fragmentos intermedios y solo se comprueba cuando LastRequiredSlotHeight es false Un reintento en el espacio de flujo devuelve una colocación vacía, conserva todos los fragmentos ya confirmados y expone su motivo y la altura requerida a través de

Ejemplo

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;

Valores devueltos

PDF_DYNAMIC_COMPONENT_ERRORLa validación de la entrada, de la retrollamada, de la geometría, del desbordamiento o de la colocación falló sin confirmar ningún estado
PDF_DYNAMIC_COMPONENT_MOREEl fragmento se confirmó y queda más contenido
PDF_DYNAMIC_COMPONENT_COMPLETEEl fragmento completó la sesión o la sesión ya estaba completa
PDF_DYNAMIC_COMPONENT_RETRYLa política de paginación o de espacio de flujo aplazó la prueba sin confirmar a otra ranura

Véase también

TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage