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
Page | Número de página de destino existente, de base 1 |
|---|---|
SlotLeft, SlotTop | Posição do espaço de destino superior esquerda nas unidades de documento atuais |
SlotWidth, SlotHeight | Tamanho finito positivo do espaço de destino |
Options.ContentWidth, Options.ContentHeight | Tela natural finita positiva passada ao componente através de AvailableWidth e AvailableHeight |
Options.OverflowPolicy | dopReject, dopClip ou dopScaleDown |
Options.HorizontalAlignment | dhaLeft, dhaCenter ou dhaRight |
Options.VerticalAlignment | dvaTop, dvaCenter ou dvaBottom |
Options.PaginationPolicy | Divisão normal, alternativa keep-together de uma só vez ou colocação completa estrita |
Options.MinimumSlotHeight | Altura de espaço não negativa exigida antes de a clonagem do componente e a composição começarem |
Options.MinimumFollowingHeight | Altura não negativa reservada após um fragmento final resolvido para o componente seguinte |
Resultado da colocação
PageNumber, CompositionIndex | Página consolidada e número de composição com êxito de base 1 |
|---|---|
SourceWidth, SourceHeight | Retângulo usado natural devolvido pelo componente antes da colocação |
Left, Top, Width, Height | Retângulo usado transformado final antes do recorte no destino |
SlotLeft, SlotTop, SlotWidth, SlotHeight | Região de destino original |
Transform | Matriz afim lógica de coordenadas locais do componente para coordenadas finais de documento de cima para baixo |
WasClipped | True quando o recorte oculta parte do retângulo usado transformado |
WasScaled | True 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_ERROR | A validação da entrada, do callback, da geometria, do excesso ou da colocação falhou sem confirmar o estado |
|---|---|
PDF_DYNAMIC_COMPONENT_MORE | O fragmento foi confirmado e resta mais conteúdo |
PDF_DYNAMIC_COMPONENT_COMPLETE | O fragmento concluiu a sessão ou a sessão já estava concluída |
PDF_DYNAMIC_COMPONENT_RETRY | A 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