Appendix A: Supported HTML tags

O renderizador HTML aceita um subconjunto limitado para rich text, blocos estruturados, tabelas e imagens explicitamente mapeadas

Parâmetros

<p>, <br>Parágrafos e quebras de linha duras, incluindo atributos legados de alinhamento e espaçamento de parágrafo
<h1> through <h6>Títulos de bloco em negrito com tamanhos padrão decrescentes
<div>, <section>, <article>, <header>, <footer>, <main>Block containers
<blockquote>Indented block content
<ul>, <ol>, <li>Listas não ordenadas e ordenadas aninhadas
<b>, <strong>, <i>, <em>Bold and italic text
<sup>, <sub>, <u>Sobrescrito, subscrito, sublinhado, sublinhado duplo, strikeout e overline
<font>, <span>Atributos legados de fonte, cor, fundo, contorno, modo de renderização de texto e fundo arredondado
<a href="...">Hiperlinks HTTP, HTTPS e file

Cascata CSS

Rules may appear in <style> elements or inline style attributes

Seletores suportam combinações de tag, classe, ID, tag.class e descendentes por espaço em branco; seletores de atributo não suportados, pseudo seletores e combinadores de irmão ou filho são ignorados

Declarações correspondentes usam especificidade CSS e ordem no código-fonte, declarações inline têm prioridade, e !important é respeitado dentro do subconjunto suportado

As propriedades suportadas incluem as propriedades de texto, fundo, fonte, decoração, alinhamento, line-height, margem, padding, borda, largura, altura, display e alinhamento vertical listadas abaixo, além das propriedades de Flexbox, Grid e notas de rodapé em suas respectivas seções

Comprimentos aceitam pontos, pixels a 0,75 pontos por pixel, unidades em, percentuais e valores sem unidade em pontos; tamanhos de fonte também aceitam a escala padrão de palavras-chave de xx-small a xx-large

Flexbox

display:flex e display:inline-flex suportam flex-direction, flex-wrap, flex, flex-grow, flex-shrink, flex-basis, justify-content, align-items, align-self, align-content, gap, row-gap e column-gap

Contêineres de linha distribuem espaço livre positivo e negativo por flex line, linhas quebradas são medidas de forma independente, e contêineres de coluna distribuem uma altura explícita ou derivada do conteúdo

CSS Grid

display:grid e display:inline-grid suportam grid-template-columns, grid-template-rows, tracks fixos, percentuais e fr, repeat() e minmax() simples, grid-column, grid-row, propriedades start e end, spans, gaps, auto-posicionamento por linha ou coluna e alinhamento por item

Um contêiner aceita no máximo 256 itens diretos e 64 linhas ou colunas; conteúdo aninhado usa o mesmo renderizador HTML e o mesmo cache de layout

Notas de rodapé

<footnote>, <aside style="float:footnote"> e <aside role="doc-footnote"> criam notas numeradas

Caixas de texto finitas reservam a área de notas na parte de baixo antes de compor as linhas seguintes do corpo; uma referência e nota que não couberem juntas seguem para o próximo frame, e o estado de continuação preserva a numeração

Tabelas

<table>, <tr>, <td> e <th> renderizam linhas medidas com fundos, padding, bordas, estilos de texto e colspan de até 64 colunas

As colunas dividem igualmente a largura explícita da tabela ou a largura disponível, células de cabeçalho vêm em negrito com fundo claro por padrão, e uma linha continua como uma unidade atômica na próxima caixa de texto HTML

Tabelas aninhadas, rowspan, colapso de bordas e dimensionamento automático de colunas guiado pelo conteúdo não fazem parte deste subconjunto

Imagens

<img src="name"> desenha uma imagem previamente vinculada com SetHTMLImage

O renderizador suporta width, height, margin, padding, border, background e alinhamento à esquerda, ao centro ou à direita; uma dimensão ausente preserva a proporção natural, e dimensões omitidas usam 0.75 pontos por pixel de origem

Fontes de imagem nunca disparam acesso à rede ou a arquivos, a medição não registra recursos, e o uso repetido reutiliza o XObject de imagem já vinculado

Limites e recuperação

Uma entrada HTML aceita no máximo 2048 regras de stylesheet, 256 bytes por seletor, 4096 bytes por bloco de declaração, 4096 linhas de tabela e 4096 células de tabela

Propriedades, seletores, tags e atributos desconhecidos são ignorados enquanto o texto ao redor é preservado; referências de caractere são decodificadas e aninhamentos malformados são fechados de forma conservadora

Exemplo

var
  LogoID: Integer;
begin
  LogoID := PDF.AddImageFromFile('logo.png');
  PDF.SetHTMLImage('brand-logo', LogoID);
  PDF.DrawHTMLTextBox(50, 750, 420, 180,
    '<style>.report h2 { color:#204080; } table { border:1pt solid #808080; }</style>' +
    '<section class="report"><h2>Quarterly report</h2>' +
    '<img src="brand-logo" width="72pt">' +
    '<table><tr><th>Region</th><th>Total</th></tr>' +
    '<tr><td>North</td><td>125</td></tr></table></section>');
end;