Appendix A: Supported HTML tags
HTML-рендерер приймає обмежену підмножину для форматованого тексту, структурованих блоків, таблиць і явно відображених зображень
Параметри
<p>, <br> | Абзаци та жорсткі розриви рядків, включно із застарілими атрибутами вирівнювання та інтервалів абзаців |
|---|---|
<h1> through <h6> | Жирні блочні заголовки зі спадними типовими розмірами |
<div>, <section>, <article>, <header>, <footer>, <main> | Block containers |
<blockquote> | Indented block content |
<ul>, <ol>, <li> | Вкладені марковані та нумеровані списки |
<b>, <strong>, <i>, <em> | Жирний і курсивний текст |
<sup>, <sub>, <u> | Верхній і нижній індекси, підкреслення, подвійне підкреслення, закреслення та надкреслення |
<font>, <span> | Застарілі атрибути шрифту, кольору, фону, контуру, режиму рендерингу тексту та округленого фону |
<a href="..."> | Гіперпосилання HTTP, HTTPS і файлові |
Каскад CSS
Правила можуть з'являтися в елементах <style> чи вбудованих атрибутах style
Селектори підтримують тег, клас, ID, tag.class та комбінації нащадків через пробіл; непідтримувані селектори атрибутів, псевдоселектори та комбінатори сиблінгів чи дітей ігноруються
Збіжні оголошення використовують специфічність CSS і порядок джерела, вбудовані оголошення мають пріоритет, а !important шанується в межах підтримуваної підмножини
Підтримувані властивості охоплюють текст, тло, шрифт, декор, вирівнювання, міжрядкову висоту, поля, відступи, рамку, ширину, висоту, display і вертикальне вирівнювання з переліку нижче, плюс властивості Flexbox, Grid і виносок у відповідних розділах
Довжини приймають пункти, пікселі по 0.75 пункта на піксель, одиниці em, відсотки та безрозмірні значення пунктів; розміри шрифтів також приймають стандартну шкалу ключових слів від xx-small до xx-large
Flexbox
display:flex і display:inline-flex підтримують flex-direction, flex-wrap, flex, flex-grow, flex-shrink, flex-basis, justify-content, align-items, align-self, align-content, gap, row-gap і column-gap
Контейнери рядків розподіляють додатний і від'ємний вільний простір на кожну flex-лінію, перенесені рядки вимірюються незалежно, а контейнери колонок розподіляють явну чи виведену з вмісту висоту
CSS Grid
display:grid і display:inline-grid підтримують grid-template-columns, grid-template-rows, фіксовані, процентні треки та fr, прості repeat() і minmax(), grid-column, grid-row, властивості початку й кінця, спани, проміжки, авто-розміщення за рядком чи колонкою та вирівнювання окремих елементів
Один контейнер приймає щонайбільше 256 прямих елементів і 64 рядки чи стовпці; вкладений вміст використовує той самий HTML-рендерер і кеш верстки
Виноски
<footnote>, <aside style="float:footnote"> і <aside role="doc-footnote"> створють нумеровані примітки
Скінченні текстові блоки резервують зону приміток унизу перед компонуванням наступних рядків тіла; посилання та примітка, які не вміщаються разом, йдуть у наступний кадр, а стан продовження зберігає нумерацію
Таблиці
<table>, <tr>, <td> і <th> рендерять виміряні рядки з фонами, відступами, межами, стилями тексту та colspan до 64 колонок
Стовпці ділять явну ширину таблиці чи доступну ширину порівну, комірки заголовків типово дають жирний текст на світлому тлі, а рядок продовжується як один атомарний блок у наступному HTML-текстовому блоці
Вкладені таблиці, rowspan, злиття меж і автоматичне визначення розміру колонок за вмістом не входять у цю підмножину
Зображення
<img src="name"> малює зображення, раніше прив'язане SetHTMLImage
Рендерер підтримує ширину, висоту, поля, відступи, рамку, тло та вирівнювання ліворуч, по центру чи праворуч; одна відсутня вимірювання зберігає природне співвідношення сторін, а пропущені вимірювання використовують 0.75 пункти на піксель джерела
Джерела зображень ніколи не ініціюють мережевого чи файлового доступу, вимірювання не реєструє ресурсів, а повторне використання перевикористовує прив'язаний XObject зображення
Межі та відновлення
Один ввід HTML приймає щонайбільше 2048 правил таблиць стилів, 256 байтів на селектор, 4096 байтів на блок оголошень, 4096 рядків таблиці та 4096 комірок таблиці
Невідомі властивості, селектори, теги та атрибути ігноруються, а навколишній текст зберігається; символьні посилання декодуються, а неправильно вкладена розмітка консервативно закривається
Приклад
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;