Appendix A: Supported HTML tags

Il renderer HTML accetta un sottoinsieme limitato per rich text, blocchi, tabelle e immagini associate

Parametri

<p>, <br>Paragrafi e interruzioni di riga forzate, inclusi gli attributi legacy di allineamento e spaziatura dei paragrafi
<h1> through <h6>Intestazioni dei blocchi in grassetto con dimensioni predefinite decrescenti
<div>, <section>, <article>, <header>, <footer>, <main>Contenitori a blocchi
<blockquote>Contenuto del blocco rientrato
<ul>, <ol>, <li>Elenchi ordinati e non ordinati annidati
<b>, <strong>, <i>, <em>Testo in grassetto e corsivo
<sup>, <sub>, <u>Apice, pedice, sottolineatura, doppia sottolineatura, barrato e sovralineatura
<font>, <span>Attributi legacy di font, colore, sfondo, contorno, modalità di rendering del testo e sfondo arrotondato
<a href="...">Collegamenti ipertestuali HTTP, HTTPS e file

Cascata CSS

Le regole possono comparire negli elementi <style> o negli attributi style inline

I selettori supportano tag, classe, ID, tag.class e combinazioni di discendenti separate da spazi; i selettori di attributo e gli pseudoselettori non supportati, nonché i combinatori di elementi adiacenti o figlio, vengono ignorati

Le dichiarazioni corrispondenti usano specificità CSS e ordine sorgente, quelle inline hanno priorità e !important è rispettato nel sottoinsieme supportato

Le proprietà supportate includono testo, sfondo, font, decorazione, allineamento, interlinea, margini, spaziatura, bordo, dimensioni, display, allineamento verticale, Flexbox, Grid e note

Le lunghezze accettano punti, pixel a 0.75 punti per pixel, unità em, percentuali e valori senza unità espressi in punti; le dimensioni dei caratteri accettano inoltre la scala standard di parole chiave da xx-small a xx-large

Flexbox

display:flex e display:inline-flex supportano 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

I contenitori di righe distribuiscono lo spazio libero positivo e negativo per ciascuna linea flex, le righe mandate a capo vengono misurate indipendentemente e i contenitori di colonne distribuiscono un'altezza esplicita o derivata dal contenuto

CSS Grid

display:grid e display:inline-grid supportano grid-template-columns, grid-template-rows, tracce fisse, percentuali e fr, repeat(), minmax(), grid-column, grid-row, span, gap, posizionamento automatico e allineamento

Un contenitore accetta al massimo 256 elementi diretti e 64 righe o colonne; il contenuto annidato usa lo stesso renderer HTML e la stessa cache del layout

Note a piè di pagina

<footnote>, <aside style="float:footnote"> e <aside role="doc-footnote"> creano note numerate

Le caselle finite riservano l'area note prima delle righe successive; riferimento e nota che non entrano insieme passano al frame successivo preservando la numerazione

Tabelle

<table>, <tr>, <td> e <th> generano righe misurate con sfondi, spaziatura interna, bordi, stili di testo e colspan fino a 64 colonne

Le colonne dividono equamente la larghezza esplicita o disponibile della tabella, le celle di intestazione usano per impostazione predefinita testo in grassetto con uno sfondo chiaro e ogni riga prosegue come unità indivisibile nella casella di testo HTML successiva

Le tabelle annidate, rowspan, l'unione dei bordi e il dimensionamento automatico delle colonne basato sul contenuto non fanno parte di questo sottoinsieme

Immagini

<img src="name"> disegna un'immagine associata in precedenza con SetHTMLImage

Il renderer supporta larghezza, altezza, margine, spaziatura interna, bordo, sfondo e allineamento a sinistra, al centro o a destra; se manca una dimensione viene mantenuto il rapporto di formato naturale, mentre le dimensioni omesse usano 0,75 punti per pixel sorgente

Le sorgenti immagine non accedono mai a rete o file, la misurazione non registra risorse e l'uso ripetuto riutilizza l'XObject immagine associato

Limiti e ripristino

Un input HTML accetta al massimo 2048 regole CSS, 256 byte per selettore, 4096 per blocco dichiarazioni, 4096 righe e 4096 celle di tabella

Proprietà, selettori, tag e attributi sconosciuti vengono ignorati conservando il testo; riferimenti carattere decodificati e annidamento non valido chiuso prudentemente

Esempio

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;