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;