Структурированный экспорт загруженных страниц
THotPDF.ExportLoadedPagesStructured преобразует выбранные загруженные страницы в один документ UTF-8 HTML, XHTML, XML или JSON, не изменяя сам PDF
Единая семантическая модель
Каждый формат потребляет одну доступную модель чтения, поэтому порядок структуры, язык и заголовок документа, заголовки разделов, списки, таблицы, рисунки, замены marked-content, ссылки на объекты, навигация, метки страниц, аннотации и элементы форм остаются согласованными во всех экспортёрах
Tagged-структура используется в приоритетном порядке, если даёт пригодную проекцию страницы, а геометрический анализ абзацев, заголовков, списков, подписей, колонок и таблиц подключается только как настроенный fallback
Генерация завершается в ограниченном staging stream, а публикация снимает копию байтов назначения, которые будут перезаписаны, чтобы при сбое финальной записи можно было восстановить исходное состояние stream
Каждый span несёт безопасно экранированный Unicode-текст плюс опциональные границы в системе координат страницы, идентификатор объекта исходного content stream, ресурс исходного шрифта и размер в пунктах
Доступная структура и взаимодействия
HTML и XHTML используют семантические элементы и стабильные якоря страниц, а XML и JSON сохраняют эквивалентные записи begin, end, content, object-reference, interaction, outline и page-label
Свойства inline- и именованного marked-content разрешаются по всем stream страницы и рекурсивным Form XObject, ActualText заменяет видимый глифовый текст, артефакты остаются вне доступной модели, а альтернативный текст рисунков связывается через tagged content, а не по визуальному порядку
Безопасные назначения http, https, mailto и локальные можно экспортировать, а URI с исполняемым содержимым или control-символами пропускаются
Имена, подписи, опции, состояния и обычные значения полей форм можно сохранять, но payloads паролей, выбора файлов, NoExport и подписи никогда не попадают в общую модель экспорта
Изображения
Вхождения Image XObject сохраняют имя ресурса, номер объекта, собственный размер в пикселях и преобразованные границы в системе координат страницы
simEmbeddedPNG декодирует каждое поддерживаемое изображение через обычный ограниченный image pipeline и выдаёт PNG data URI, simMetadataOnly не материализует пиксели, а simOmit исключает изображения
Ограниченный атомарный вывод
Лимиты на число страниц, глифов, изображений, узлов структуры, записей outline, взаимодействий на страницу, опций на поле, байтов изображений, их суммарный объём, байтов вывода и отмена применяются до копирования готового буфера в stream вызывающего
Сбои извлечения и превышение бюджета оставляют назначение неизменным, а сбой записи в назначение пытается восстановить его исходные позицию и размер