Appendix A: Supported HTML tags

HTML renderer akceptuje ohraničenú podmnožinu pre rich text, štruktúrované bloky, tabuľky a výslovne namapované obrázky

Parametre

<p>, <br>Odseky a pevné zalomenia riadkov, vrátane starších atribútov zarovnania a rozostupov odsekov
<h1> through <h6>Tučné nadpisy blokov s klesajúcimi predvolenými veľkosťami
<div>, <section>, <article>, <header>, <footer>, <main>Block containers
<blockquote>Indented block content
<ul>, <ol>, <li>Vnorené nečíslované a číslované zoznamy
<b>, <strong>, <i>, <em>Bold and italic text
<sup>, <sub>, <u>Horný a dolný index, podčiarknutie, dvojité podčiarknutie, prečiarknutie a nadčiarknutie
<font>, <span>Staršie atribúty písma, farby, pozadia, obrysu, režimu vykresľovania textu a zaoblenej pozadia
<a href="...">Hypertextové odkazy HTTP, HTTPS a súborové

CSS kaskáda

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

Selektory podporujú kombinácie tagu, triedy, ID, tag.class a potomkov oddelených medzerou; nepodporované selektory atribútov, pseudo selektory a kombinátory súrodencov či detí sa ignorujú

Zodpovedajúce deklarácie sa riadia špecificitou CSS a poradím zdroja, inline deklarácie majú prednosť a !important sa rešpektuje v rámci podporovanej podmnožiny

Podporované vlastnosti zahŕňajú vlastnosti text, background, font, decoration, alignment, line-height, margin, padding, border, width, height, display a vertical-alignment uvedené nižšie, plus vlastnosti Flexbox, Grid a footnote v ich príslušných sekciách

Dĺžky akceptujú body, pixely po 0,75 bodu na pixel, jednotky em, percentá a bezjednotkové hodnoty v bodoch; veľkosti písma akceptujú aj štandardnú kľúčovú škálu od xx-small po xx-large

Flexbox

display:flex a display:inline-flex podporujú flex-direction, flex-wrap, flex, flex-grow, flex-shrink, flex-basis, justify-content, align-items, align-self, align-content, gap, row-gap a column-gap

Row kontajnery rozdeľujú kladný aj záporný voľný priestor na flex riadok, zalomené riadky sa merajú nezávisle a column kontajnery rozdeľujú výslovnú alebo z obsahu odvodenú výšku

CSS Grid

display:grid a display:inline-grid podporujú grid-template-columns, grid-template-rows, pevné, percentuálne a fr stopy, jednoduché repeat() a minmax(), grid-column, grid-row, vlastnosti start a end, rozsahy, medzery, automatické umiestnenie po riadkoch či stĺpcoch a zarovnanie jednotlivých položiek

Jeden kontajner prijme najviac 256 priamych položiek a 64 riadkov alebo stĺpcov; vnorený obsah používa ten istý HTML renderer a layout cache

Poznámky pod čiarou

<footnote>, <aside style="float:footnote"> a <aside role="doc-footnote"> vytvárajú číslované poznámky

Konečné textové boxy si pred rozložením neskorších riadkov tela vyhradia poznámkovú oblasť dole; referencia a poznámka, ktoré sa nezmestia spolu, pokračujú do ďalšieho rámu a stav pokračovania zachováva číslovanie

Tabuľky

<table>, <tr>, <td> a <th> vykresľujú odmerkané riadky s pozadiami, odsadením, rámami, štýlmi textu a colspan až do 64 stĺpcov

Stĺpce rozdelia výslovnú šírku tabuľky alebo dostupnú šírku rovnomerne, bunky hlavičky majú predvolene tučný text so svetlým pozadím a riadok pokračuje ako jeden atomic unit v ďalšom HTML textovom boxe

Vnorené tabuľky, rowspan, zlučovanie rámov a automatické dimenzovanie stĺpcov podľa obsahu do tejto podmnožiny nepatria

Obrázky

<img src="name"> vykreslí obrázok, ktorý bol predtým viazaný cez SetHTMLImage

Renderer podporuje width, height, margin, padding, border, background a zarovnanie left, center alebo right; jedna chýbajúca dimenzia zachováva prirodzený pomer strán a vynechané dimenzie používajú 0.75 bodu na zdrojový pixel

Zdroje obrázkov nikdy nespúšťajú sieťový ani súborový prístup, meranie neregistruje resources a opakované použitie znova využije naviazaný image XObject

Hranice a obnovenie

Jeden HTML vstup prijme najviac 2048 stylesheet pravidiel, 256 bajtov na selektor, 4096 bajtov na deklaračný blok, 4096 riadkov tabuľky a 4096 buniek tabuľky

Neznáme vlastnosti, selektory, tagy a atribúty sa ignorujú, pritom okolitý text zostáva zachovaný; character referencie sa dekódujú a deformované vnorenie sa konzervatívne uzavrie

Príklad

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;