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
Page | Número de página de destino existente basado en 1 |
|---|---|
SlotLeft, SlotTop | Posición de la ranura de destino superior izquierda en las unidades actuales del documento |
SlotWidth, SlotHeight | Tamaño finito y positivo de la ranura de destino |
Options.ContentWidth, Options.ContentHeight | Lienzo natural finito y positivo pasado al componente a través de AvailableWidth y AvailableHeight |
Options.OverflowPolicy | dopReject, dopClip o dopScaleDown |
Options.HorizontalAlignment | dhaLeft, dhaCenter o dhaRight |
Options.VerticalAlignment | dvaTop, dvaCenter o dvaBottom |
Options.PaginationPolicy | División normal, alternativa de mantener junto de una sola vez o colocación completa estricta |
Options.MinimumSlotHeight | Altura de ranura no negativa requerida antes de comenzar la clonación y composición del componente |
Options.MinimumFollowingHeight | Altura no negativa reservada después de un fragmento final resuelto para el siguiente componente |
Resultado de colocación
PageNumber, CompositionIndex | Página confirmada y número de composición con éxito basado en 1 |
|---|---|
SourceWidth, SourceHeight | Rectángulo usado natural devuelto por el componente antes de la colocación |
Left, Top, Width, Height | Rectángulo usado transformado final antes del recorte al destino |
SlotLeft, SlotTop, SlotWidth, SlotHeight | Región de destino original |
Transform | Matriz afín lógica desde coordenadas locales del componente hasta coordenadas de documento finales de arriba abajo |
WasClipped | True cuando el recorte oculta parte del rectángulo usado transformado |
WasScaled | True 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_ERROR | La 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_MORE | El fragmento se confirmó y queda más contenido |
PDF_DYNAMIC_COMPONENT_COMPLETE | El fragmento completó la sesión o la sesión ya estaba completa |
PDF_DYNAMIC_COMPONENT_RETRY | La 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