Appendix A: Supported HTML tags
O renderizador HTML aceita um subconjunto limitado para texto rico, blocos estruturados, tabelas e imagens explicitamente associadas
Parâmetros
<p>, <br> | Parágrafos e quebras de linha explícitas, incluindo atributos legados de alinhamento e espaçamento de parágrafos |
|---|---|
<h1> a <h6> | Títulos de bloco a negrito com tamanhos predefinidos decrescentes |
<div>, <section>, <article>, <header>, <footer>, <main> | Contentores de bloco |
<blockquote> | Conteúdo de bloco indentado |
<ul>, <ol>, <li> | Listas não ordenadas e ordenadas aninhadas |
<b>, <strong>, <i>, <em> | Texto a negrito e itálico |
<sup>, <sub>, <u> | Sobrescrito, subscrito, sublinhado, sublinhado duplo, rasurado e linha superior |
<font>, <span> | Atributos legados de tipo de letra, cor, fundo, contorno, modo de renderização de texto e fundo arredondado |
<a href="..."> | Hiperligações HTTP, HTTPS e para ficheiros |
Cascata CSS
As regras podem surgir em elementos <style> ou em atributos style em linha
Os seletores suportam combinações de etiqueta, classe, ID, tag.class e descendentes separados por espaços; os seletores de atributos e pseudoseletores não suportados, bem como os combinadores de irmãos ou filhos, são ignorados
As declarações correspondentes utilizam a especificidade CSS e a ordem da origem, as declarações em linha têm prioridade e !important é respeitado no subconjunto suportado
As propriedades suportadas incluem as propriedades de texto, fundo, tipo de letra, decoração, alinhamento, altura da linha, margem, preenchimento, contorno, largura, altura, apresentação e alinhamento vertical indicadas abaixo, além das propriedades Flexbox, Grid e de notas de rodapé nas respetivas secções
Os comprimentos aceitam pontos, píxeis a 0,75 pontos por píxel, unidades em, percentagens e valores de pontos sem unidade; os tamanhos de tipo de letra também aceitam a escala normalizada de palavras-chave entre xx-small e 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
Os contentores de linhas distribuem o espaço livre positivo e negativo por linha flexível, as linhas com quebra são medidas independentemente e os contentores de colunas 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, faixas fixas, percentuais e fr, formas simples de repeat() e minmax(), grid-column, grid-row, propriedades de início e fim, extensões, intervalos, colocação automática por linha ou coluna e alinhamento por item
Um contentor aceita no máximo 256 itens diretos e 64 linhas ou colunas; o conteúdo aninhado utiliza o mesmo renderizador HTML e a mesma cache de disposição
Notas de rodapé
<footnote>, <aside style="float:footnote"> e <aside role="doc-footnote"> criam notas numeradas
As caixas de texto finitas reservam a área das notas no fundo antes de disporem as linhas seguintes do corpo; uma referência e uma nota que não caibam juntas transitam para a moldura seguinte e o estado de continuação preserva a numeração
Tabelas
<table>, <tr>, <td> e <th> renderizam linhas medidas com fundos, preenchimento, contornos, estilos de texto e colspan até 64 colunas
As colunas dividem de forma igual a largura explícita ou disponível da tabela, as células de cabeçalho utilizam por predefinição texto a negrito com fundo claro e cada linha continua como uma unidade indivisível na caixa de texto HTML seguinte
Tabelas aninhadas, rowspan, união de contornos e dimensionamento automático de colunas orientado pelo conteúdo não fazem parte deste subconjunto
Imagens
<img src="name"> desenha uma imagem previamente associada com SetHTMLImage
O renderizador suporta largura, altura, margem, preenchimento, contorno, fundo e alinhamento à esquerda, ao centro ou à direita; a ausência de uma dimensão preserva a proporção natural e a omissão de ambas utiliza 0,75 pontos por píxel da origem
As origens de imagem nunca provocam acesso à rede ou a ficheiros, a medição não regista recursos e as utilizações repetidas reutilizam o XObject de imagem associado
Limites e recuperação
Uma entrada HTML aceita no máximo 2048 regras de folha de estilos, 256 bytes por seletor, 4096 bytes por bloco de declarações, 4096 linhas de tabela e 4096 células de tabela
As propriedades, seletores, etiquetas e atributos desconhecidos são ignorados, preservando o texto envolvente; as referências de caracteres são descodificadas e o aninhamento malformado é fechado 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;