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 la transformación final de colocación

Sintaxis

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

Parámetros

PageNúmero existente de la página de destino con base 1
SlotLeft, SlotTopPosición del espacio de destino superior izquierda en las unidades actuales del documento
SlotWidth, SlotHeightTamaño finito y positivo del espacio de destino
Options.ContentWidth, Options.ContentHeightLienzo natural finito y positivo que se pasa al componente mediante AvailableWidth y AvailableHeight
Options.OverflowPolicydopReject, dopClip o dopScaleDown
Options.HorizontalAlignmentdhaLeft, dhaCenter o dhaRight
Options.VerticalAlignmentdvaTop, dvaCenter o dvaBottom
Options.PaginationPolicyDivisión normal, respaldo de mantener junto de una sola vez o colocación completa estricta
Options.MinimumSlotHeightAltura de espacio no negativa requerida antes de iniciar 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 exitosa con base 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 del destino
SlotLeft, SlotTop, SlotWidth, SlotHeightRegión de destino original
TransformMatriz afín lógica desde coordenadas locales del componente hasta las coordenadas finales del documento de arriba hacia 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 del espacio

dopClip

dopScaleDown sceglie 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

La tela del Form XObject sigue ContentWidth y ContentHeight, mientras que 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 handle temporal de captura

Una ranura más corta que MinimumSlotHeight devuelve reintento sin clonar el componente, invocar su callback 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 la página toma posesión de la referencia del Form XObject colocado antes de que se libere el manejador de captura temporal Un espacio más corto que HasMoreContent devuelve reintento sin clonar el componente, invocar su callback ni crear una página temporal

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

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 entrada, callback, geometría, desbordamiento o colocación falló sin confirmar el 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 hacia otro espacio

Véase también

TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage