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>Bold and italic text
<sup>, <sub>, <u>Верхний и нижний индексы, подчеркивание, двойное подчеркивание, зачеркивание и надчеркивание
<font>, <span>Устаревшие атрибуты шрифта, цвета, фона, обводки, режима рендеринга текста и скругленного фона
<a href="...">Гиперссылки HTTP, HTTPS и файлов

Каскад CSS

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

Селекторы поддерживают тег, класс, 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;