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;