Dodatek A: obsługiwane znaczniki HTML

Mechanizm renderowania HTML akceptuje ograniczony podzbiór przeznaczony dla tekstu sformatowanego, bloków strukturalnych, tabel i jawnie zmapowanych obrazów

Parametry

<p>, <br>Akapity i twarde podziały wiersza, w tym starsze atrybuty wyrównania i odstępów akapitów
<h1> przez <h6>Pogrubione nagłówki blokowe o malejących rozmiarach domyślnych
<div>, <section>, <article>, <header>, <footer>, <main>Kontenery blokowe
<blockquote>Wcięta zawartość blokowa
<ul>, <ol>, <li>Zagnieżdżone listy nieuporządkowane i uporządkowane
<b>, <strong>, <i>, <em>Tekst pogrubiony i kursywa
<sup>, <sub>, <u>Indeks górny, indeks dolny, podkreślenie, podwójne podkreślenie, przekreślenie i nadkreślenie
<font>, <span>Starsze atrybuty czcionki, koloru, tła, konturu, trybu renderowania tekstu i zaokrąglonego tła
<a href="...">Hiperłącza HTTP, HTTPS i plikowe

Kaskada CSS

Reguły mogą występować w elementach <style> lub wbudowanych atrybutach style

Selektory obsługują znacznik, klasę, identyfikator, tag.class i kombinacje potomków rozdzielonych białymi znakami; nieobsługiwane selektory atrybutów, pseudoselektory oraz kombinatory rodzeństwa lub elementu podrzędnego są ignorowane

Pasujące deklaracje używają specyficzności CSS i kolejności źródłowej, deklaracje wbudowane mają pierwszeństwo, a !important jest respektowane w obsługiwanym podzbiorze

Obsługiwane właściwości obejmują wymienione poniżej właściwości tekstu, tła, czcionki, dekoracji, wyrównania, wysokości wiersza, marginesu, dopełnienia, obramowania, szerokości, wysokości, wyświetlania i wyrównania pionowego, a także właściwości Flexbox, Grid i przypisów w ich odpowiednich sekcjach

Długości akceptują punkty, piksele przy 0.75 punktu na piksel, jednostki em, procenty i bezjednostkowe wartości punktowe; rozmiary czcionek akceptują również standardową skalę słów kluczowych od xx-small do xx-large

Flexbox

display:flex i display:inline-flex obsługują flex-direction, flex-wrap, flex, flex-grow, flex-shrink, flex-basis, justify-content, align-items, align-self, align-content, gap, row-gap i column-gap

Kontenery wierszy rozdzielają dodatnią i ujemną wolną przestrzeń dla każdego wiersza flex, zawinięte wiersze są mierzone niezależnie, a kontenery kolumn rozdzielają jawną lub wyprowadzoną z zawartości wysokość

CSS Grid

display:grid i display:inline-grid obsługują grid-template-columns, grid-template-rows, ścieżki stałe, procentowe i fr, proste repeat() i minmax(), grid-column, grid-row, właściwości początku i końca, rozpiętości, odstępy, automatyczne rozmieszczanie wierszowe lub kolumnowe oraz wyrównanie poszczególnych elementów

Jeden kontener akceptuje najwyżej 256 bezpośrednich elementów i 64 wiersze lub kolumny; zawartość zagnieżdżona używa tego samego mechanizmu renderowania HTML i pamięci podręcznej układu

Przypisy

<footnote>, <aside style="float:footnote"> i <aside role="doc-footnote"> tworzą numerowane przypisy

Pola tekstowe o skończonych wymiarach rezerwują obszar przypisów u dołu przed rozmieszczeniem kolejnych wierszy tekstu głównego; odwołanie i przypis, które nie mieszczą się razem, przechodzą do następnej ramki, a stan kontynuacji zachowuje numerację

Tabele

<table>, <tr>, <td> i <th> renderują zmierzone wiersze z tłem, dopełnieniem, obramowaniem, stylami tekstu oraz colspan do 64 kolumn

Kolumny dzielą jawnie określoną lub dostępną szerokość tabeli po równo, komórki nagłówka domyślnie używają pogrubionego tekstu na jasnym tle, a wiersz przechodzi jako jedna niepodzielna jednostka do następnego pola tekstowego HTML

Zagnieżdżone tabele, rowspan, zwijanie obramowań i automatyczne ustalanie szerokości kolumn na podstawie zawartości nie należą do tego podzbioru

Obrazy

<img src="name"> rysuje obraz wcześniej powiązany za pomocą SetHTMLImage

Mechanizm renderowania obsługuje szerokość, wysokość, margines, dopełnienie, obramowanie, tło i wyrównanie do lewej, środka lub prawej; brak jednego wymiaru zachowuje naturalne proporcje, a pominięte wymiary używają 0.75 punktu na piksel źródłowy

Źródła obrazów nigdy nie wyzwalają dostępu do sieci ani plików, pomiar nie rejestruje zasobów, a ponowne użycie korzysta z powiązanego obiektu XObject obrazu

Granice i odzyskiwanie

Jedno wejście HTML akceptuje najwyżej 2048 reguł arkusza stylów, 256 bajtów na selektor, 4096 bajtów na blok deklaracji, 4096 wierszy tabeli i 4096 komórek tabeli

Nieznane właściwości, selektory, znaczniki i atrybuty są ignorowane przy zachowaniu otaczającego tekstu; odwołania znakowe są dekodowane, a wadliwe zagnieżdżenie zamykane zachowawczo

Przykład

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;