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;