ComposeNextLayout

Esquema de página, paginação, Form XObjects

Descrição

Compõe um fragmento dinâmico com estado numa tela de tamanho natural, aplica as políticas de excesso, alinhamento, paginação e espaço de fluxo e comunica a transformação de colocação final

Sintaxe

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, de base 1
SlotLeft, SlotTopPosição do espaço de destino superior esquerda nas unidades de documento atuais
SlotWidth, SlotHeightTamanho finito positivo do espaço de destino
Options.ContentWidth, Options.ContentHeightTela natural finita positiva passada ao componente através de AvailableWidth e AvailableHeight
Options.OverflowPolicydopReject, dopClip ou dopScaleDown
Options.HorizontalAlignmentdhaLeft, dhaCenter ou dhaRight
Options.VerticalAlignmentdvaTop, dvaCenter ou dvaBottom
Options.PaginationPolicyDivisão normal, alternativa keep-together de uma só vez ou colocação completa estrita
Options.MinimumSlotHeightAltura de espaço não negativa exigida antes de a clonagem do componente e a composição começarem
Options.MinimumFollowingHeightAltura não negativa reservada após um fragmento final resolvido para o componente seguinte

Resultado da colocação

PageNumber, CompositionIndexPágina consolidada e número de composição com êxito de base 1
SourceWidth, SourceHeightRetângulo usado natural devolvido pelo componente antes da colocação
Left, Top, Width, HeightRetângulo usado transformado final antes do recorte no destino
SlotLeft, SlotTop, SlotWidth, SlotHeightRegião de destino original
TransformMatriz afim lógica de coordenadas locais do componente para coordenadas finais de documento de cima para baixo
WasClippedTrue quando o recorte oculta parte do retângulo usado transformado
WasScaledTrue quando a escala proporcional é inferior a 1

Observações

dopReject preserva a página de destino e o estado consolidado do componente quando o retângulo usado natural excede qualquer dimensão da ranhura

dopClip preserva a escala natural e utiliza um âmbito de recorte de estado gráfico equilibrado em torno da invocação do Form XObject

dopScaleDown escolhe Min(1, SlotWidth / SourceWidth, SlotHeight / SourceHeight) e preserva o rácio de proporção do componente

O dimensionamento nunca amplia conteúdo que já cabe

A tela do Form XObject segue ContentWidth e ContentHeight, enquanto o alinhamento utiliza o retângulo usado relatado pelo componente, ancorado na coordenada local zero

O fluxo de conteúdo da página fica proprietário da referência do Form XObject colocado antes de o identificador de captura temporário ser libertado

Uma ranhura mais baixa que MinimumSlotHeight devolve repetição sem clonar o componente, invocar a respetiva chamada de retorno ou criar uma página temporária

MinimumFollowingHeight não restringe os fragmentos intermédios e só é verificado quando HasMoreContent é false

Uma repetição por espaço de fluxo devolve uma colocação vazia, preserva todos os fragmentos anteriormente consolidados e expõe o motivo e a altura exigida através de LastRetryReason e LastRequiredSlotHeight

Exemplo

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 devolvidos

PDF_DYNAMIC_COMPONENT_ERRORA validação da entrada, do callback, da geometria, do excesso ou da colocação falhou sem confirmar o estado
PDF_DYNAMIC_COMPONENT_MOREO fragmento foi confirmado e resta mais conteúdo
PDF_DYNAMIC_COMPONENT_COMPLETEO fragmento concluiu a sessão ou a sessão já estava concluída
PDF_DYNAMIC_COMPONENT_RETRYA política de paginação ou de espaço de fluxo adiou a tentativa não confirmada para outra ranhura

Consulte também

TPDFlibDynamicComponentSession, BeginFormXObject, ReleaseCapturedPage, DrawCapturedPage