Layout de Streaming Restrito
O HotPDF pode colocar cada página concluída em armazenamento com suporte de arquivo, aplicar restrições de quebra de página em parágrafos, expor diagnósticos delimitados de layout, marcar parágrafos semânticos e artefatos de paginação e resolver a direção base do parágrafo antes de emitir texto com direção mista
Descarga imediata de páginas
Defina ImmediateFlushLayout antes de BeginDoc para relatórios cuja contagem de páginas não é conhecida antecipadamente
Quando uma página é fechada, seu fluxo de conteúdo final comprimido ou não comprimido é movido da memória para um fluxo de arquivo temporário próprio, enquanto o objeto PDF permanece disponível para a finalização normal de referência cruzada e de recursos
ImmediateFlushedPageCount e ImmediateFlushedBytes informam a quantidade de conteúdo preparado, e os arquivos temporários são excluídos quando seus fluxos proprietários são liberados
Paginação de parágrafos
ParagraphIndex := PDF.CreateParagraph(0, jtLeft, 36, 36, 36, 36);
PDF.ConfigureParagraphPagination(ParagraphIndex, True, 2, 2);
PDF.ConfigureParagraphDirection(ParagraphIndex, pdAuto);
PDF.BeginParagraph(ParagraphIndex);
PDF.CurrentParagraph.ShowUnicodeText(BodyText);
PDF.EndParagraph;
KeepWithNextmove um parágrafo quando ele consumiria a última linha que deveria permanecer para o conteúdo seguinteMinOrphanLinesimpede que muito poucas linhas iniciais sejam deixadas no final de uma páginaMinWidowLinesantecipa uma quebra quando restariam muito poucas linhas finais na próxima página- A continuação automática preserva a largura, altura, fonte, margens e configurações de parágrafo da página de origem
- Quando
ParaAutoAddPageé false, o estouro interrompe na página atual e produz um diagnósticoldkOverflow
Diagnósticos de layout
THPDFLayoutDiagnostic registra o THPDFLayoutDiagnosticKind, os índices de página de origem e relacionados, o retângulo afetado, a contagem de linhas e um motivo em inglês para cada decisão retida
THPDFLayoutDiagnosticArray é retornado por GetLayoutDiagnostics, enquanto GetLayoutDiagnostic oferece acesso indexado sem alocar uma cópia
LayoutDiagnosticLimit limita os registros retidos e LayoutDiagnosticDroppedCount informa as decisões descartadas após esse limite
ldkAutomaticPageBreakrelata uma continuação comumldkKeepWithNext,ldkOrphanControleldkWidowControlidentificam a restrição que moveu uma quebraldkOverflowidentifica conteúdo interrompido pela paginação automática desativadaldkImmediateFlushidentifica uma página fechada movida para o armazenamento com suporte de arquivo
Direção do parágrafo
THPDFParagraphDirection oferece pdAuto, pdLeftToRight e pdRightToLeft
DetectParagraphDirection aplica a resolução de primeiro caractere forte em scripts RTL do BMP e do plano suplementar, de modo que prefixos neutros e sequências direcionais secundárias não escolham a direção base errada
Use ConfigureParagraphDirection para uma configuração persistente do parágrafo ou a propriedade THPDFPara.Direction para o parágrafo ativo
Semântica de parágrafo PDF/UA
Root := PDF.AddStructureElement('Document', nil);
Paragraph := PDF.BeginTaggedParagraph(Root, 'en-US', 'Accessible text');
PDF.CurrentPage.TextOut(36, 72, 0, WideString('Accessible text'));
PDF.EndTaggedParagraph;
PDF.BeginPaginationArtifact(pasHeader);
PDF.CurrentPage.TextOut(36, 20, 0, WideString('Running header'));
PDF.EndPaginationArtifact;
BeginTaggedParagraph emite uma sequência padrão de conteúdo marcado /P com um MCID alocado, ligação à árvore pai da página e valores opcionais de /Lang e /ActualText
THPDFPaginationArtifactSubtype oferece pasHeader, pasFooter, pasWatermark e pasPageNumber, emitidos como conteúdo /Artifact com /Type /Pagination e o subtipo padrão correspondente