| Tipo | Valores ou finalidade |
|---|---|
EPdfLayoutError | Exceção disparada para entrada de layout inválida, limites excedidos e estrutura semântica inconsistente |
TPdfLayoutAlignment | plaLeft, plaCenter, plaRight |
TPdfLayoutCommandKind | plcText, plcRule, plcImage, plcPageXObject, plcCachedNode, plcLink, plcRectangle |
TPdfLayoutItemKind | pliText, pliSpacer, pliRule, pliImage, pliPageXObject, pliPageBreak, pliCachedNode, pliLink, pliSemanticNode, pliTable |
TPdfLayoutSemanticRole | plsrArtifact, plsrParagraph, plsrHeading1, plsrHeading2, plsrHeading3, plsrHeading4, plsrHeading5, plsrHeading6, plsrList, plsrListItem, plsrListLabel, plsrListBody, plsrTable, plsrTableRow, plsrTableHeader, plsrTableData, plsrFigure, plsrCaption, plsrLink, plsrSection, plsrDivision |
TPdfLayoutTableScope | pltsNone, pltsRow, pltsColumn, pltsBoth |
TPdfLayoutListNumbering | plnNone, plnDisc, plnCircle, plnSquare, plnDecimal, plnUpperRoman, plnLowerRoman, plnUpperAlpha, plnLowerAlpha |
TPdfLayoutGridTrackKind | plgtkFixed, plgtkFraction, plgtkAuto |
TPdfMarkupFormat | pmfMarkdown, pmfHtml |
| Type | Public members |
|---|---|
TPdfLayoutSemantics | Role, ParentID, ElementID, AlternateText, ActualText, Language, HeaderIDs, TableScope, ColumnSpan, RowSpan, ListNumbering, Artifact, Paragraph, Figure |
TPdfLayoutTextStyle | FontName, FontSize, Color, Alpha, LineHeight, Alignment, KeepTogether, BreakLongWords, SpaceBefore, SpaceAfter, Default |
TPdfLayoutConstraints | KeepTogether, KeepWithNext, PageBreakBefore, PageBreakAfter, OrphanLines, WidowLines, Default |
TPdfLayoutPageSettings | Width, Height, MarginLeft, MarginTop, MarginRight, MarginBottom, HeaderHeight, FooterHeight, A4, Letter |
TPdfLayoutRect | Left, Top, Width, Height |
TPdfLayoutGridTrack | Kind, Value, Minimum, Maximum, MeasuredContent |
TPdfLayoutGridTracks | Array dinâmico de TPdfLayoutGridTrack |
TPdfLayoutGridSizes | Array dinâmico de tamanhos de track resolvidos |
TPdfLayoutTableOptions | CellPadding, BorderWidth, BorderColor, BorderAlpha, RepeatHeaderRows, AllowRowSpanContinuation, MaxContinuationRegions, ContinuationBefore, ContinuationAfter, ContinuationStyle, Default |
TPdfLayoutTableTextRun | Text, Style |
TPdfLayoutTableTextRuns | Array dinâmico de TPdfLayoutTableTextRun |
TPdfMarkupOptions | BaseStyle, HeadingScale, MaxInputCharacters, MaxNodes, Default |
TPdfLayoutSemanticElement | Semantics, ParentElementIndex |
TPdfLayoutSemanticElements | Array dinâmico de TPdfLayoutSemanticElement |
TPdfLayoutCommand | Kind, PageNumber, Bounds, Text, FontName, FontSize, Color, Alpha, Alignment, Thickness, FileName, Uri, Source, SourcePageIndex, SemanticElementIndex, MarkedContentID, AnnotationIndex |
TPdfLayoutCommands | Array dinâmico de TPdfLayoutCommand |
TPdfLayoutPlan | PageSettings, PageCount, Commands, SemanticElements, TextLineCount, RuleCount, RectangleCount, ImageCount, PageXObjectCount, CachedNodeCount, LinkCount, TaggedContentCount, ArtifactCount, MeasuredTextCount, TotalPageReferenceCount, ReservedPageDigits, CacheHitCount, CacheMissCount, ReusedXObjectCount, ColumnCount, ColumnGap |
| Type | Public members |
|---|---|
TPdfLayoutMeasurer | MeasureTextWidth, CacheIdentity |
TPdfLayoutItem | Kind |
TPdfLayoutTableCell | Text, Uri, Style, AddTextRun, TextRuns, SetImage, ColumnSpan, RowSpan, Header, ElementID, HeaderIDs, Scope |
TPdfLayoutTableRow | AddCell, Cells, Header, AllowSplit, MinimumHeight, KeepWithPrevious |
TPdfLayoutTable | Create, Destroy, AddRow, AddSubtotalRow, SetCaption, Columns, Rows, Options, Caption, CaptionStyle, ElementID, ParentID |
TPdfLayoutPagedPlan | Create, Destroy, ClearPageCache, MaterializePage, Reset, Summary, CommandCount, StorageByteCount, SourceCount, Completed, os orçamentos MaxCommandCount, MaxStorageBytes, MaxPageCommands, MaxSourceCount e MaxCachedPages, e as estatísticas de cache CachedPageCount, CacheHitCount, CacheMissCount e PeakCachedPageCount |
TPdfLayoutDocument | Create, Destroy, Clear, AddText, AddSpacer, AddRule, AddImage, AddPageXObject, AddCachedNode, AddLink, AddSemanticNode, SetLastItemSemantics, SetLastItemConstraints, AddTable, AddPageBreak, LoadMarkup, InvalidateCache, BuildPlan, BuildPagedPlan, PageSettings, HeaderText, FooterText, HeaderStyle, FooterStyle, ReservedPageDigits, ColumnCount, ColumnGap, Items |
TPdfLayoutCachedNode | Create, Destroy, Invalidate, BeginEmission, EndEmission, Content, Width, Height, Built |
Chame SetLastItemConstraints depois de adicionar qualquer item de fluxo visível para mantê-lo junto, mantê-lo com o início do próximo item ou forçar uma quebra de página física antes ou depois dele
OrphanLines é o número mínimo de linhas de parágrafo retidas no rodapé de uma região e WidowLines é o mínimo colocado no topo da região seguinte; ambos têm como padrão um, para preservar a paginação existente
As restrições se aplicam igualmente a itens com papel de parágrafo, link, lista, figura e tabela, enquanto contêineres apenas semânticos não têm geometria e, portanto, rejeitam restrições de paginação
Um item pliTable aceita apenas PageBreakBefore e PageBreakAfter; a divisão de linhas e a retenção do início da tabela são controladas pelo modelo de tabela
O planejador faz cache das linhas quebradas durante uma construção, de modo que a previsão de keep-with-next e a emissão final de comandos não medem o mesmo texto duas vezes
Crie TPdfLayoutPagedPlan sobre um TStream dedicado, seekable e redimensionável, depois chame BuildPagedPlan ou passe-o para TPdf.GeneratePagedLayout
O planejador serializa os comandos imediatamente, libera cada resultado de texto quebrado concluído e deixa Plan.Commands vazio, retendo no resumo as configurações de página, os elementos semânticos, as contagens e os totais estáveis de páginas
Os comandos do corpo e os comandos posteriores de header ou footer são indexados como segmentos de página encadeados, de modo que MaterializePage restaura a página completa sem examinar os comandos de outras páginas
MaxCachedPages limita apenas os arrays de páginas retidos pelo plano; quem chama e mantém os arrays retornados estende seu tempo de vida, e o PDFium retém as páginas autorais nativas até que o documento de destino seja salvo ou fechado
O formato de armazenamento é estado privado de sessão, e não um formato de arquivo portátil, o stream não deve ser compartilhado nem modificado externamente, e os objetos de origem referenciados por page XObjects ou nós em cache devem sobreviver ao plano paginado
Use TPdfRandomAccessStore quando os comandos devam permanecer na memória até um limite selecionado e, depois, transbordar para armazenamento temporário de exclusão ao fechar
Crie TPdfLayoutTable com tracks de grade fixos, fracionários ou dimensionados pelo conteúdo, adicione linhas e células e, então, chame AddTable; o documento armazena um snapshot de sua propriedade, de modo que mutações posteriores de quem chama não podem invalidar um cache de plano existente
As linhas de header devem ser contíguas no início da tabela e se repetem após uma transição de página ou de coluna quando RepeatHeaderRows é True; os spans de linhas de header não podem se estender a linhas do corpo
Uma linha do corpo só pode ser dividida quando AllowSplit é True e ela não pertence a um grupo de linhas com span; todas as células em um pedaço dividido compartilham a mesma faixa de linhas, padding e geometria de borda
Defina AllowRowSpanContinuation como True para permitir que um grupo com span de linha continue entre regiões de página ou coluna; o planejador distribui a altura extra do span entre suas linhas e escolhe cortes que não interceptam uma linha de texto nem uma imagem
AllowSplit=False permanece uma restrição de linha atômica; restrições de linha incompatíveis ou um bloco atômico que não cabe em uma região nova disparam EPdfLayoutError em vez de recortar ou repetir conteúdo
As legendas ficam com o bloco de header repetido e o início mínimo do primeiro grupo do corpo, enquanto grupos transitivos de linhas com span se movem como uma única unidade atômica
O planejador emite um elemento Table, uma Caption opcional, filhos TR e células TH ou TD, independentemente da contagem de páginas; os comandos de header repetidos reutilizam os índices semânticos originais, e as células TD recebem automaticamente os IDs de header sobrepostos, a menos que IDs válidos explícitos sejam fornecidos
As bordas de tabela são comandos artifact plcRectangle renderizados por meio de objetos de caminho nativos do PDFium, enquanto o texto da legenda e das células permanece conteúdo tagged
AddTextRun acrescenta texto em linha após o Text original da célula; cada run tem sua própria fonte, tamanho de fonte, cor, alpha, altura de linha e política de quebra de palavras longas
O texto misto quebra usando larguras medidas, preserva pares substitutos UTF-16 ao quebrar uma palavra longa e emite objetos de texto nativos separados com uma linha de base compartilhada; o alinhamento horizontal vem do Style base da célula
Espaçamento de parágrafo em nível de run e flags de manter-junto não introduzem blocos de parágrafo adicionais; use linhas separadas ou itens de layout comuns quando essas restrições forem necessárias
SetImage configura uma imagem baseada em arquivo por célula, posicionada acima de seu texto no padding esquerdo; outra chamada substitui essa imagem
Forneça uma altura positiva explícita e uma largura que caiba na largura interna da célula; uma largura zero usa toda a largura interna, e quem chama controla a proporção da imagem por meio das dimensões fornecidas
A imagem é indivisível durante a continuação e é emitida uma vez na sua posição original; seu arquivo deve permanecer disponível até a geração, e um arquivo ausente ou uma imagem não suportada faz a geração reverter as páginas anexadas
Uma descrição alternativa não vazia é obrigatória; a imagem se torna um filho Figure de sua TH ou TD original, enquanto todos os fragmentos de texto permanecem associados a essa célula
Entre páginas, a TH ou TD original recebe as referências de conteúdo marcado continuadas e mantém suas associações de RowSpan, ColumnSpan e cabeçalho; nenhuma célula lógica duplicada é criada
AddSubtotalRow cria uma linha de corpo atômica usando o rótulo, o valor formatado e o estilo de quem chama; para várias colunas, o rótulo abrange todas, exceto a coluna final de valor
O auxiliar define KeepWithPrevious=True para que um subtotal não se torne uma primeira linha isolada em uma continuação; os valores são fornecidos por quem chama e nenhuma agregação numérica é realizada
ContinuationAfter é mostrado no fim de uma região que continua, e ContinuationBefore é mostrado após quaisquer cabeçalhos repetidos na região seguinte
Ambos os rótulos têm como padrão vazio, usam ContinuationStyle, devem caber em uma linha e reservam a própria altura; a primeira região não tem rótulo before e a região final não tem rótulo after
Rótulos e bordas são artefatos, deixando a hierarquia semântica da tabela intacta; espaços reservados de página como {page} e {pages} usam o resolvedor comum de texto de layout
procedure TPdfLayoutTableCell.AddTextRun(const Text: WideString; const Style: TPdfLayoutTextStyle); procedure TPdfLayoutTableCell.SetImage(const FileName: string; Width, Height: Single; const AlternateText: WideString); function TPdfLayoutTable.AddSubtotalRow(const LabelText, ValueText: WideString; const Style: TPdfLayoutTextStyle): TPdfLayoutTableRow;
Use TPdfLayoutTableOptions.Default antes de sobrescrever opções; AllowRowSpanContinuation tem como padrão False e MaxContinuationRegions tem como padrão 10,000 regiões de página ou coluna, com um teto configurável de 100,000
As tabelas mantêm os limites de 256 colunas, 100,000 linhas e 100,000 elementos semânticos; o texto total das células é limitado a 8,000,000 unidades de código UTF-16
Uma célula de texto misto aceita no máximo 1,024 runs acrescentados, 1,000,000 unidades de código UTF-16, 100,000 linhas e 100,000 fragmentos; um caractere individual ou uma palavra com quebra de palavras longas desabilitada que exceda a largura disponível é rejeitado
Um grupo de linhas continuado é limitado a 10,000 células; orçamentos de região e buscas de corte delimitadas evitam paginação ilimitada, e as imagens devem caber na região de corpo disponível após cabeçalhos, rótulos e padding
O snapshot de tabela de propriedade e o cache do plano incluem estilos de run, dimensões de imagem, texto alternativo, retenção de subtotais e configurações de continuação; alterações posteriores na tabela de quem chama não alteram esse snapshot
| Routine | Description |
|---|---|
ResolveLayoutText | Expande os placeholders de número de página usando a largura de dígitos reservada |
PdfLayoutSemanticRoleName | Retorna o nome de estrutura de Tagged PDF para um papel semântico |
BuildTaggedLayoutPdf | Aplica um plano de layout concluído e uma estrutura tagged aos bytes de um PDF de origem |
ResolvePdfLayoutGridTracks | Resolve tracks de grade fixos, fracionários e dimensionados pelo conteúdo dentro da largura disponível |