HotPDF 2.806.0 для Delphi та C++Builder

Завдання JSON та C ABI експортують завантажені сторінки як семантичний HTML, XHTML, XML чи JSON, а типізовані таблиці — як CSV, JSON чи XLSX, з обробкою вибраних сторінок, обмеженим виводом, скасуванням та збереженням джерела

Інструкція з вибору прикладів · Приклади Delphi · Приклади C++Builder

Версіоновані реєстри правил рахунків підтримують явну валідацію CII XML і гібридних рахунків з окремими шарами профілю та країни, зокрема офіційні ресурси XRechnung і французькі CTC через налаштований застосунком рушій Saxon

Нативна генерація, редагування та підписання PDF, вивід з урахуванням стандартів, оптимізація шрифтів і робота із зображеннями для застосунків RAD Studio

HotPDF дозволяє застосункам VCL створювати, змінювати, захищати, підписувати, оптимізувати, імпортувати, стискати та зберігати PDF-документи безпосередньо з коду Delphi або C++Builder, без розгортання зовнішнього PDF-середовища виконання

Огляд проєкту

HotPDF — це бібліотека PDF-компонентів на рівні вихідного коду для Delphi та C++Builder. Вона створена для настільного ПЗ, якому потрібен детермінований PDF-вивід, пряме малювання сторінок, сильна інтеграція з RAD Studio та компактне розгортання

Компонент охоплює повсякденну генерацію PDF, розширене збирання документів, редагування PDF, вивід, насичений зображеннями, форми із захистом від дублювання імен полів, анотації, обгортки полів AcroForm часу створення, повторно використовувані ланцюги конструктора дій для дій відкриття, дій життєвого циклу документа, додаткових дій сторінок, дій анотацій, додаткових дій анотацій та додаткових дій AcroForm, шифрування, робочі процеси підписання, оптимізацію шрифтів і потокові робочі процеси з однієї нативної API-поверхні

Інструментарій завантаженого документа додає видалення за діапазонами сторінок, злиття з урахуванням контурів та AcroForm, обмеження форм із кількома віджетами, редагування геометрії, видимості, обертання, рамок і кольору, повне редагування анотацій, автоматичну активацію голих веб- та email-адрес, пошук наступного збігу без стану, повні типізовані знімки контурів, підписання зі сховища сертифікатів Windows, детермінований друк із колацією та виявленням можливостей паперу, знімки переглядача на всю сторінку, обмежений регіон і межі пікселів, prefetch сусідніх сторінок з урахуванням кешу, постійні виділення сторінок, виділення прямокутником з урахуванням обертання, друк поточного перегляду, навігацію клавіатурою та колесом і VCL-компоненти переглядача

Нещодавні випуски бібліотеки розширили HotPDF від класичного засобу запису PDF до ширшого набору нативних PDF-інструментів, що охоплює специфічне для версій керування функціями PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7, нативний вивід PDF 2.0, відповідність стандартам PDF/A-1 / -2 / -3 / -4 + PDF/X-1a / -3 / -4 + PDF/UA-1 / -2, цифрові підписи PAdES baseline / extended / long-term-validation, внутрішньопроцесний конвейєр підписання PFX / PKCS#12 з нативними RSA та ECDSA плюс опційними OpenSSL 3 Ed25519 і Ed448, інкрементні оновлення з шифруванням Standard і з відкритим ключем зі збереженням облікових даних, стабільними постійними ID, обертовими ID модифікацій, байт-точними префіксами джерела та байт-точними no-op збереженнями, субсетінг шрифтів CFF / OpenType / CID-keyed CFF та адаптери експорту PDF для FastReport, QuickReport, ReportBuilder і DevExpress ExpressPrinting, які спрямовують наявні звіти через HotPDF як єдиний PDF-бекенд. Direct File API обробляє багатогігабайтні PDF з мільйонами об'єктів файл-у-файл — кількість сторінок, копії, перезапис інформації документа та шифрування чи дешифрування AES-256 — за секунди, тоді як обмежений завантажувач відновлення може перемістити коректну секцію xref або перебудувати зміщення прямих об'єктів після пошкоджених даних startxref і xref, не довіряючи вкладеному об'єктоподібному тексту чи бінарним даним, і публікує події відновлення з діапазонами байтів та явними рівнями довіри

Опційний засіб запису LinearizeOutput додає вивід fast web view із секцією залежностей першої сторінки, групуванням спільних об'єктів, таблицями підказок первинної сторінки та спільних об'єктів і ранньою таблицею перехресних посилань для сумісності, зберігаючи пряме файлове та потокове призначення

Фільтри завантажених потоків проходять крізь повторно використовуваний конвейєр, чия фінальна стадія пише безпосередньо в потоки викликача, а проміжні стадії переливаються крізь незалежно стиснуті блоки та обмежену асинхронну пакетну чергу, зі строгими кінцевими маркерами ASCII85 і ASCIIHex, незалежними стелями декодованих байтів на ланцюг і на документ, лімітами кількості фільтрів і глибини конвейєра, виявленням циклів непрямих посилань, відхиленням рекурсії в тому самому потоці та структурованою діагностикою для кожного успіху чи невдачі

Кодування предикторів тепер відкриває строгі повторно використовувані шляхи TIFF та фіксовані або адаптивні шляхи PNG для упакованих, 8-бітових і 16-бітових растрів; завантажені зображення можуть копіювати нативні або узагальнено декодовані корисні дані безпосередньо в потоки викликача, тоді як вибіркова оптимізація використовує буфери переливу з пам'яті на диск, детерміновану чотиристратегеву базу zlib з наступним бюджетованим розбиттям блоків Zopfli та обмежені паралельні завдання зображень, які фіксують лише менші корисні дані в порядку джерела

Перекомпресія завантажених JPEG і JPEG 2000 може виконувати обмежені випробування якості та обирати детермінований вивід, спільно оцінюючи вибіркову перцептивну похибку та відносну вартість закодованих байтів, з дотриманням явних лімітів візуальної похибки та мінімальної економії

Великі локальні документи використовують обмежене віконне відображення в пам'ять зі спільним LRU-кешем для зчитувань парсера та незмінних лінивих діапазонів потоків, тоді як пороги відображення та геометрія вікна залишаються налаштовуваними, а збої автоматично відкатуються до резервного шляху; сирі стиснуті діапазони, декодовані зображення, скомпільовані списки відображення та відрендерені растрові сторінки мають незалежні ліміти кількості записів, сумарних байтів і допуску на запис, поєднують нещодавність зі старіючим допуском за фіксованою частотою пам'яті для стійкості до скан-забруднення та відкривають статистику заповненості, трафіку й частоти; справедливий планувальник пікової пам'яті на весь процес відкладає конкуруючі завантаження документів, рендеринг, оптимізацію потоків і паралельну оптимізацію зображень до перекриття їх основних робочих наборів, зберігаючи скасування та повідомляючи тиск на допуск; нешифрована серіалізація потоків і керовані викликачем передавання пишуть байти пам'яті, відображених файлів, лінивих файлів, адаптивного кешу та кешу діапазонів без проміжного повнокопійного копіювання потоку; короткоживучі токени та буфери парсера використовують утримувану блокову арену між завантаженнями, прості словники й масиви сканують незмінні діапазони з прямим числовим перетворенням та однопрохідною вкладеністю, налаштовувані бюджети байтів, агрегованих токенів, записів контейнерів і пошкоджених токенів зупиняють ворожий ввід з типізованою телеметрією, ключам словників більше не потрібні тимчасові об'єкти імен, а повторювані імена, оператори вмісту та незмінні короткі рядки спільно використовують обмежений пул у масштабі документа; модифіковані завантажені потоки використовують LoadedStreamMemoryThreshold для вибору між пам'яттю та власним стиснутим тимчасовим потоком, чиї сирі та стиснуті блоки спільно використовують обмежену асинхронну чергу запису; члени потоків об'єктів індексуються за номером об'єкта та розбираються лише за посилання, тоді як LoadFromRandomAccessSource під'єднує HTTP range-читачі та власні сховища, об'єднує сусідні зчитування крізь обмежений кеш, адаптивно нарощує асинхронне випереджувальне зчитування під час стійкого прямого парсингу, пригнічує спекулятивне транспортування після стрибків, кооперативно скасовує роботу в польоті для пошуку на передньому плані, відновлює ключі паролів з обмежених діапазонів трейлера, xref, ідентифікатора документа та словника шифрування без запитування повного джерела, захоплює точні бінарні записи обробників безпеки з авторитетного зміщення об'єкта, тож відкладене розшифрування не потребує перечитування джерела, відкриває першу лінеаризовану сторінку з її самодостатнього префікса та планує обмежені мінімальні діапазони bootstrap, підказок, сторінок, спільних об'єктів і перехресних посилань для будь-якої пізнішої сторінки, приймаючи легальні короткі зчитування та обидві сумісні розкладки підказок — interoperable й Annex F — за строгих лімітів пам'яті та структури

Відображені локальні файли тепер адаптуються в межах налаштованої стелі байтів: стійкі прямі зчитування використовують більші вікна для зменшення повторних відображень, стійкі далекі або зворотні зчитування утримують до 16 менших вікон MRU, зміна режиму потребує повторюваних свідчень, а THPDFMappedFileStatistics повідомляє активну геометрію, пікові відображені байти, лічильники шаблонів доступу та переходи

HotPDFABI.dll відкриває версійований плоский C ABI з перевіреними на компонування структурами колбеків Win32 і Win64, валідованими непрозорими дескрипторами, фіксованими кодами статусів, 64-бітовими зчитуваннями довільного доступу прямо в буфери парсера, повторюваними потоковими записами, явними довжинами байтів, скасуванням, прогресом і діагностикою; build-HotPDF-ABI.cmd будує DLL та бібліотеку імпорту для кожної платформи

Операції з документами через JSON і C ABI поділяють виявлення можливостей, рендеринг, текст Unicode і форми, шари OCR, redaction, підписування PFX та обмежену архівну растрову конвертацію у PDF/A-4 через версійовану схему, бюджети ресурсів, відкат колбеків і атомарний вивід файлів; архівні запити явно приймають втрату інформації та зберігають завантажене джерело

Нативні бекенди FPC надають TIFF, JPEG/JPX, ICC, JBIG2 і Zopfli через перевірений місток кодеків Windows, разом зі справжнім паралельним сторінковим, упорядкованим сторінковим, плитковим, смуговим рендерингом та рендерингом плиток JPEG 2000

Детерміновані диференціальні регресійні пробники порівнюють іменовані рушії в доменах парсингу, рендерингу, тексту та збереження, повторюють кожен результат для виявлення нестабільності, ізолюють винятки, дотримуються меж вводу й виводу, надають вбудовані відбитки SHA-256 HotPDF і видають упорядковану JSON-схему hotpdf.differential.v1

Нативний статистичний стенд регресії продуктивності ізолює робочі навантаження завантаження, збереження, рендерингу та витягання Win32 і Win64, записує розігріви плюс 30 сирих вимірів з p50, p95, вибірковою дисперсією, RSS, вводом/виводом процесу, детермінованою ідентичністю фікстури та метаданими середовища, і зазнає невдачі проти версійованих JSON-порогів

Сховище безперервного корпусу пошкоджених PDF повторно валідує та повторно мінімізує кожен кейс збою в налаштовуваних межах, тримає найменший еквівалентний за підписом ввід між запусками, серіалізує конкуруючі засоби запису процесно-безпечним блокуванням та атомарно публікує PDF з адресацією SHA-256 і файли метаданих hotpdf.corpus.case.v1

Уніфікована телеметрія операцій розділяє резервування планувальника та затримку черги, настінний час від процесорного часу поточного потоку, переносиму утримувану компонентом пам'ять від вибіркового робочого набору процесу, закодований ввід від фінального декодованого виводу, а також повідомляє пікові додаткові живі виділення, дельти байтів вводу/виводу процесу, активність кешу, агреговану роботу фільтрів та розширення декодування

Обмежені детерміновані журнали відтворення захоплюють контрольні точки скасування, доступність діапазонів довільного доступу та булеві або цілочислові результати колбеків у впорядкованій JSON-схемі; строге відтворення валідує підпис кожної події та підставляє записані рішення, тож переривчасте зовнішнє хронометрування та поведінку колбеків можна відтворити без зміни операцій з документом

Завантаження з урахуванням редакцій тепер валідує вільні списки xref і переходи поколінь, зберігаючи обмежені подробиці для дублікованих і затінених визначень об'єктів; руйнівні інкрементні правки зливають наявні та нововивільнені об'єкти в повний детермінований вільний ланцюг, просувають покоління з насиченням, зберігають покоління брудних об'єктів і відкривають статистику перебудови; явні стани об'єктів clean, dirty, released і must-write підтримують звільнення кешу потоків об'єктів після збереження в умовах малої пам'яті, тоді як детермінований порядок словників, потокові версійовані JSON-знімки графа об'єктів та інкрементні оновлення, редаговний діагностичний вивід QDF з обмеженим ремонтом довжини потоків і xref, обмежені ребра залежностей та атрибуція утримуваної пам'яті на основі домінаторів роблять структурну інспекцію відтворюваною

Шари тексту OCR з можливістю пошуку під'єднують обраний застосунком розпізнавач до обмеженого рендерингу сторінок, валідують довіру, геометрію Unicode і пікселів, інвертують обертання сторінки для вирівняного невидимого тексту, опційно прив'язують вивід до одного OCG та фіксують кожну вибрану сторінку через одну транзакцію графа; позначені шари OCR HotPDF можна безпечно замінювати після збереження та перезавантаження, сусідні латинські та кириличні слова отримують явні пробіли Unicode, а консольний приклад SearchableOCR генерує зразки сканів і конвертує вибрані сторінки з вбудованим OCR, RapidOCR чи рушіями Tesseract DLL/CLI, налаштовуваними межами та статистикою конвертації

Вбудований рушій OCR розпізнає звичайний, жирний, курсивний і жирний курсивний ASCII-текст, зокрема вицвілі написи та світлий текст на переважно темній сторінці; слова з неоднозначними збереженими гліфами пропускаються як цілі, щоб уникнути мовчазної втрати символів, порожні чи нерозпізнані сторінки завершуються успішно, а Windows FPC зберігає і 24-бітові, і 32-бітові вхідні пікселі

Опційний нативний DLL-адаптер Tesseract надає налаштовувані режими сегментації сторінок і рушія, багатомовне розпізнавання Unicode, довіру, межі слів та базові лінії через HPDFCreateTesseractDLLOCREngine у збірках Delphi, C++Builder і Windows FPC/Lazarus

Локальний CLI-адаптер Tesseract також приймає THPDFTesseractOptions для одноколонкових, однословних, розсіяних і вертикально-блокових макетів, з явним режимом рушія, таймаутом і лімітами вхідних пікселів; нативний DLL-адаптер використовує напрямок базової лінії, щоб довжина вертикальних слів не роздувала розмір пошукового тексту

Адаптер локальних моделей RapidOCR додає явні шляхи ONNX-моделей, опційну класифікацію кутів, локальні словники та шрифти, керування процесорними потоками, офлайн-попередню перевірку, точні пробіли розпізнаних рядків і обмежене розпізнавання Unicode через THPDFRapidOCROptions у збірках Delphi, C++Builder і Windows FPC/Lazarus

Нативний DLL-адаптер RapidOCR тримає процесорні ONNX-моделі в межах процесу та розпізнає знімки пам'яті через HPDFCreateRapidOCRDLLOCREngine, з пресетами THPDFRapidOCRDLLOptions.ForLanguage для спрощеної та традиційної китайської, англійської, японської, корейської, російської, поширених латинських мов, арабської та гінді, перевіреними локальними пакетами моделей, горизонтальним порядком читання, опційною класифікацією кутів, текстом Unicode, обмеженим виводом і кооперативним скасуванням у збірках Delphi, C++Builder і Windows FPC/Lazarus

Опційні локальні адаптери Tesseract і RapidOCR надають скасовуваний китайський OCR з явними шляхами виконуваного файла та моделей; вбудований рушій залишається типовим, а зовнішні рушії, пакети Python, моделі та локальна передумова RapidOCR — Arial — забезпечуються окремо

SetLoadedFreeTextPlainText явно замінює зовнішній вигляд підтримуваної завантаженої анотації FreeText вирівняним ліворуч ASCII-текстом Helvetica для перезапису або інкрементного збереження, тоді як SetLoadedAnnotationContents змінює лише збережений вміст

SetLoadedFreeTextText перебудовує вигляди завантаженого Unicode та багатого FreeText з вбудованими шрифтами, перенесенням, вирівнюванням, прозорістю, обертанням та атомарною обробкою переповнення; SetLoadedFreeTextRichText тепер оновлює і видимий вигляд, і збережений вміст

Декодування штрихкодів завантажених сторінок рендерить повну сторінку або регіон у межах media-box прогресивними обмеженими фрагментами, передає кожен оригінальний або повернутий на чверть растр обраному застосунком декодеру, валідує Unicode, сирі байти, довіру та межі, розгортає обертання растра й сторінки в простір користувача PDF і дедуплікує перекривні корисні дані

Виявлення redaction із попереднім рецензуванням поєднує вбудовані шаблони PII з урахуванням контрольних сум з обраними застосунком детекторами сутностей та облич, відображує кожен прийнятий діапазон або растровий прямокутник у простір сторінки PDF, починає кожну знахідку як очікувану та атомарно розміщує лише знахідки з одночасною явною ухвалою та ідентичністю рецензента, не випалюючи вміст

Перезапис кольору завантажених сторінок конвертує вибране малювання в DeviceGray, DeviceRGB або DeviceCMYK, зберігає звичайний текст і шляхи кольорів пристрою як доступні для пошуку вектори, рендерить зображення, форми, візерунки, затінення, прозорість, ICC і колір Type 3 через один безвтратний образ процесу за потреби, типовим чином зберігає сторінки зі spot-кольорами та атомарно фіксує повний обмежений пакет

Структурований експорт завантажених сторінок записує вибрані сторінки як UTF-8 HTML, XHTML, XML або JSON з однієї доступної моделі читання, віддаючи перевагу тегованому порядку та зберігаючи мову і назву документа, заголовки, списки, таблиці, рисунки, альтернативи, контури, мітки сторінок, безпечні посилання, анотації та нечутливі елементи форм за атомарного скасування та бюджетів байтів

Типізоване витягання таблиць конвертує виявлену геометрію таблиць у публічну канонічну сітку, поєднує сумісні фрагменти та сусідні сторінки, позначає повторювані заголовки та об'єднані діапазони колонок, виводить керовані локаллю цілі числа, числа, булеві значення, дати, дати-час, валюти та відсотки з довірою та атомарно записує обмежений CSV або багатий на метадані JSON

Опційні обробники документів розпізнають XPS, EPUB і CBZ з інспектованого вмісту, зберігають порядок фіксованих сторінок, корінця чи природний порядок зображень, конвертують скорочені шляхи XPS та суцільні, багатостопові лінійні або еліптичні радіальні градієнтні пензлі властивостей-елементів у нативні PDF-вектори та затінювальні візерунки, заповнюють шляхи з кешованих ресурсів ImageBrush пакета JPEG, PNG, TIFF або JPEG XR з обмеженим відображенням viewbox і viewport, трансформаціями, локальними для пензля, нативними повторюваними або відбитими візерунками зображень та альфою soft-mask PNG, застосовують значення Path.OpacityMask суцільних, градієнтних або зображувальних масок крізь згорнуту альфу або спільні групи прозорості DeviceGray, компонують перекривні нащадки Canvas один раз крізь ізольовані групи DeviceRGB заради Opacity і Canvas.OpacityMask, компілюють дерева XPS VisualBrush — вбудовані або з ресурсів — у повторно використовувані Form XObjects та обмежені мозаїчні візерунки, відображують обмежену трансформовану структуровану геометрію Canvas.Clip у вкладені нативні шляхи відсікання PDF, зберігають обмежені кластери XPS Glyphs, точні програми шрифтів пакета та ID гліфів, явні аванси, зміщення, RTL-origins, прозорість, повторне використання ресурсів, витягання Unicode, трансформовану навігацію HTTP, HTTPS, пошти, сторінок пакета та LinkTarget крізь кліповані нативні PDF-анотації, успадковують навігацію в масштабі Canvas крізь нащадків-візуали з вкладеними перевизначеннями, видають позиційовані прогони TJ, дотримуються спільних бюджетів архіву, ресурсів, reflow, сторінок, посилань, URI, геометрії, вмісту груп, пікселів, виводу та скасування, і повторно використовують один незмінний PDF-кеш заради атомарного експорту та рендерингу

Віддалене підписання CSC під'єднує наявний конвейєр провайдера CMS до сервісів CSC API v2 крізь власний для застосунку HTTP-транспорт, з оновленням OAuth, виявленням ланцюга облікових даних, точною обробкою SAD із закріпленням хешу, обмеженими впорядкованими пакетами multisign, синхронним або асинхронним підписанням, обмеженим опитуванням, мітками часу RFC 3161, скасуванням, ключами ідемпотентності з адресацією вмісту SHA-256 та скінченним кешем завершених операцій

Вкладені транзакції графа об'єктів copy-on-write знімають знімок кожного торкнутого непрямого кореня один раз на точку збереження, зберігають адреси коренів під час відкату, відновлюють виділення номерів об'єктів, прибирають додані корені, переливають історію великих потоків за налаштовуваний поріг та відкривають статистику знімків у пам'яті та з файлового бекенду

Повторно використовувані елементи верстки підтримують вимірювання без побічних ефектів, верифіковані головки розбиття та власні продовження переповнення для абзаців, рядків, контейнерів і власного вмісту; декларативні колбеки сторінок компонують фони, колонтитули, вміст документа та передні плани в стабільному порядку, тоді як необмежені звіти зберігають файлове розміщення сторінок, обмеження абзаців, обмежену діагностику, семантичні помічники та керування напрямком bidi

Рендеринг завантажених сторінок виконує кольорові та некольорові мозаїчні візерунки плюс осьові, радіальні, вільні та ґратчасті Гуро, Coons patch і тензорно-добуткові patch-затінення для заливок і обведень, дотримується матриць візерунків у усталеній системі координат батьківського вмісту, підтримує всі три типи мозаїки та знакові кроки, ізолює шлях кожної клітинки, застосовує некольорові базові відтінки до операцій заливки й обведення та обмежує рекурсивну глибину візерунків, виконання плиток, декодування сіток і адаптивну тесаляцію для ворожих ресурсів

Продакшн-рендеринг бітмапів, direct-DC, форм та відтворення списків відображення тепер спільно використовують один інтерпретатор токенів вмісту зі скасуванням на рівні оператора; скомпільовані списки відображення кешують індекси операторів для відтворення без сканування операндів і відкривають кількість команд через THPDFPageDisplayList.OperatorCount і THPDFDisplayListInfo.OperatorCount, тоді як рендерер зберігає свою повну машину станів графіки та ресурсів

Ізольовані та knockout групи прозорості рендеряться крізь обмежені плитки по 768 пікселів з абсолютною безперервністю координат пристрою, локальним для плитки зберіганням альфи та soft mask, однопрохідним декодуванням і токенізацією форм, детермінованим відновленням стану вкладених груп та статистикою пікового робочого набору, доступною через GetLastTransparencyGroupTileStats

Опційний proofing overprint зберігає фарби процесу, які малювання не називає, застосовує захист нульової компоненти /OPM 1 для DeviceCMYK, трактує DeviceGray як чорну фарбу процесу та поєднує spot-відтінки Separation і DeviceN через їх альтернативні перетворення кольору

Повторювані гліфи Type 3 повторно використовують обмежені списки відображення CharProc, ключовані за шрифтом, гліфом, лінійною матрицею та станом кольору, уникаючи повторного декодування й токенізації потоків, зберігаючи трансляцію, відсікання, вкладені ресурси, правила кольору d0/d1 і ліміти рекурсії

Прогресивні сеанси завантажених сторінок декодують відповідні прогресивні зображення DCTDecode по одному скану на обмежене продовження заради раніших видимих попередніх переглядів, відкривають лічильники сканів і зображень через THPDFLoadedPageRenderSession і надають скасовувані сповіщення THPDFProgressiveJPEGScanEvent, зберігаючи резервний шлях повного зображення для непідтримуваного стану малювання чи збоїв декодування

Прогресивні регіональні сеанси виділяють лише запитане вікно простору користувача, зберігають стан графіки й тексту між обмеженими продовженнями, використовують консервативні межі списку відображення для відсікання нерелевантних шляхів, тексту, зображень, форм і затінень та відкривають лічильники видимого й відсіченого малювання для телеметрії

Декодування JPEG 2000 валідує окремі плитки кодового потоку, поєднує реконструкцію за регіоном джерела та роздільністю інтересу і паралельно декодує незалежні видимі плитки з приватним станом кодека, скасуванням, лімітами робочих потоків CPU і користувача, детермінованою композицією та автоматичним відкатом до бюджету пікової пам'яті

Кеш-попадання завантажених зображень тепер повертають незмінні декодовані растрові дескриптори з підрахунком посилань, які переживають виселення та знищення документа, підтримують безпечне для потоків пряме малювання, зберігають ізольовані змінні копії на вимогу та усувають повторне піксельне копіювання з теплих шляхів рендерера

Паралельний рендеринг завантажених сторінок тепер перекриває компіляцію списків відображення з відтворенням між динамічно збалансованими робочими процесами, компілює нерелевантні сторінки поза блокуванням кешу, починає вивід до завершення компіляції повного вхідного набору, зберігає порядок вводу та повідомляє телеметрію паралелізму стадій, використання кешу, завершення і затримок через THPDFParallelRenderPipelineInfo; RenderLoadedPagesParallelOrdered додає колбеки викличного потоку з обмеженою чергою завершених растрових зображень, backpressure упорядкованого вікна, кооперативним скасуванням колбеків та позиченими часами життя bitmap для завдань, чиї повні растрові результати не повинні залишатися резидентними

Обидва паралельні API сторінок тепер використовують планувальник пікової пам'яті на весь процес, щоб зменшувати кількість запитаних робочих потоків від консервативних оцінок сторінок, резервувати кожну заявлену сторінку, справедливо відкладати роботу під тиском та повідомляти похідну від пам'яті паралельність, пікові зарезервовані байти, допуски, затримки й час очікування; упорядковані колбеки тримають резерви виводу активними до звільнення bitmap, тож чергові растри та активні робочі процеси спільно використовують один бюджет

RenderLoadedPageTilesParallel і RenderLoadedPageBandsParallel потоково передають одну сторінку крізь ізольовані робочі процеси з доставкою плиток у порядку рядків або смуг зверху вниз, позиченими часами життя bitmap, кооперативним скасуванням, керованим викликачем пам'яттю в польоті та обмеженим незмінним кешем послідовностей токенів гліфів Type 3 і порогових екранів напівтонів

SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded і SaveLoadedPagesToTiffStreamBanded живлять той самий смуговий рендерер потоковими енкодерами PNG або TIFF, видаючи стиснуті рядки без повного фреймбуфера та повідомляючи телеметрію смуг, рядків, робочих процесів, пам'яті, виводу, часу та скасування

Підключувані бекенди рендерингу завантажених сторінок отримують скомпільовані списки відображення та доступ до ресурсів документа, оголошують можливості паралельності та керування кольором, беруть участь у синхронному та паралельному рендерингу, інвалідують застарілі растрові кеші під час заміни та відкривають детерміновану статистику збоїв, резервних шляхів і виконання; вбудований нативний бекенд GDI зберігає наявний вивід, не заявляючи апаратного прискорення

Prefetch завантажених сторінок тепер компілює та рендерить поза блокуванням кешу з контрольними точками кооперативного скасування, одразу поступається рендерингу сторінок на передньому плані та повідомляє прогрес запитів, використання кешу, збої, лічильники витіснення і затримку скасування через THPDFLoadedPagePrefetchInfo

Валідація графа сегментів JBIG2 тепер перевіряє як потоки зображень, так і глобальні потоки перед нативним або зовнішнім декодуванням, відхиляє пошкоджені залежності та недійсну вбудовану організацію в межах явних бюджетів сегментів, ребер, глибини та символів і не пускає недійсні спільні словники до кешу globals

Пакетне кодування JBIG2 тепер тренує символи по повному наборі сторінок крізь зовнішній статичний бекенд, спільно використовує один глобальний словник між усіма image XObject, згортає точні дублікати сторінок, за дозволу відкатується до нативного акумулятора та публікує телеметрію бекенду, розміру, символів і бюджету

Векторний та зображувальний рендеринг на основі ICC застосовує повні кольорові конвеєри джерела, proof, виводу та sRGB з обираним наміром рендерингу та компенсацією точки чорного, тоді як безпечний для потоків обмежений LRU-кеш повторно використовує перетворення між екземплярами документів і рендерерів

Перекомпресія завантажених зображень та даунсемплінг за ефективним DPI зберігають калібровані визначення виводу, тоді як вирівнювання прозорості видає калібрований RGB і зберігає сторінки Separation або DeviceN як векторний вміст замість відмови від ідентичності spot-кольорів

Дії обчислення та валідації завантажених AcroForm можуть використовувати обмежену типізовану підмножину виразів з булевими значеннями, числами, рядками, null, undefined, масивами, умовними та короткозамкненими операторами, детермінованими датами UTC та дозволеними помічниками рядків, масивів, перетворень і Math, тоді як непідтримуваний активний скриптинг завершується відмовою без запуску рушія JavaScript

Опційні прив'язки середовища QuickJS виконують ширший керований застосунком JavaScript через статичні об'єкти або нейтральний до ABI місток-DLL на Win32 і Win64, з налаштовуваними лімітами пам'яті, стека, скриптів, часу та переривань плюс явною семантикою статусів і відновлення

Скриптинг форм XFA розширює обмежений FormCalc умовною логікою, повторюваними числовими масивами та валідованими колбеками екземплярів, тоді як явно увімкнена пісочниця QuickJS додає повний потік керування та нативні типізовані масиви, не відкриваючи об'єктів файлів, процесів, браузера чи мережі; інтерактивне динамічне середовище XFA додає нейтральний до хоста фокус, редагування Unicode, перевірку попадання, обізнане з екземплярами валідування та обчислення, атомарний відкат і обмежений reflow без сплощення

SanitiseLoadedDocument застосовує до завантажених PDF політики лише-JavaScript, активного вмісту або строгих недовірених документів, прибирає недосяжні об'єкти-корисні дані, ущільнює живі номери об'єктів та безпечно перезаписує на місці через атомарну заміну файлу

Знахідки preflight у форматах JSON, HTML і стилі veraPDF відкривають стабільні ідентифікатори правил з простором імен та структуровані розташування PDF з логічним scope, шляхом, ключем і точними координатами об'єкта, сторінки або байта, коли вони доступні, тоді як текстова та CSV сумісність залишається без змін

Повторно використовувані політики валідації тепер поєднують структурний preflight зі строгими або WTPDF вимогами приймання, витягують канонічні метадані декларацій і тверджень, проводять упорядковані пакети файлів крізь обмежені ліміти робочих процесів і черг, зберігають помилки з урахуванням джерела та пропонують режими inspect, add-missing і synchronize для ремонту XMP незалежно від структурного ремонту PDF

Приймання Factur-X і ZUGFeRD тепер перехресно перевіряє MIME-тип первинного вкладення рахунка та назви FileSpec проти реєстрацій AF у EmbeddedFiles і Catalog, відкриває декодований MIME-тип та URI простору імен XMP і відхиляє неспівпадні типи документів XMP або простори імен розширень

Вбудована валідація бізнес-правил е-рахунків виконує всі специфічні для профілю перевірки Schematron з перевіреною сумісністю XPath 2, зовнішніми базами кодів, стабільними ідентифікаторами правил, явними помилками обчислення, безпечним парсингом XML та fail-closed спільними вердиктами

Архівна растрова конвертація завантажених PDF/A-4 перебудовує видимий вміст сторінок як обмежені зображення sRGB у новому валідованому документі PDF/A-4, нормалізуючи шрифти, прозорість і намальовані кольори через строгий нативний рендерер; файловий API готує та атомарно публікує результат, а звіт ідентифікує видалені анотації, форми та вкладення. Цей опційний візуальний архівний шлях відкидає початковий векторний текст, пошуковий текст, підписи та інтерактивний вміст

Вивід PDF 2.0 тепер підтримує ідентифікацію та валідацію PDF/A-4, PDF/A-4e, PDF/A-4f, PDF/UA-2, PDF/X-6, PDF/X-6p і PDF/X-6n, включно з відомими про редакції XMP, що розв'язуються за URI простору імен, транзакційним ремонтом PDF/A-4 для безпечного нормалізування заголовка, трейлера, метаданих, Catalog та презентації з байт-точним відкатом і збереженим вмістом сторінок, обираними наборами правил PDF/X-6 ISO 15930-9:2020 та resolved-errata, фактичними перевірками заголовка і каналів ICC, намірами виведення документа і сторінок, фактичним намальованим кольором та overprint крізь масиви вмісту, вкладеними формами, мозаїчними й затінювальними візерунками, зображеннями, масками зображень, затіненнями, гліфами Type 3, soft masks та зовнішніми виглядами анотацій, успадкованим станом графіки й прозорості, спільною композицією заливки та обведення, зв'язками CIDFont і CMap, обмеженою роботою декодованих байтів і токенів вмісту, елементами структури з урахуванням просторів імен, перевірками метаданих та рядків документа, optional content, фізичною приналежністю анотацій, семантикою форм, структурованими призначеннями, контурами, вкладеними мітками сторінок, авторингом пов'язаних файлів, успадкованими виробничими блоками сторінок, діагностикою з урахуванням пунктів і походженням наборів правил, автоматичною fail-closed валідацією генерації та транзакційним ремонтом PDF/UA-2 для просторів імен, атрибутів, списків, таблиць, Ruby, Warichu, вимови, альтернативного тексту, успадкування мови, порядку заголовків і тегів Artifact

Таблиці Tagged PDF 2.0 отримують обмежене розширення сітки, перевірки перетинів і груп рядків, локальну для таблиці асоціацію заголовків та виявлення циклів, тоді як списки отримують повні перевірки нумерації та ланцюгів продовження; точні послідовності Ruby і Warichu дотримуються, а застосунки можуть записувати підказки вимови на елемент або впорядковані вбудовані лексикони PLS через SetStructurePronunciation і AddPronunciationLexicon

Цикл v2.119.32-51 додав формування арабської / перської / урду на стороні генератора (обов'язкова лігатура LAM-ALEF, 9 літер Arabic Presentation Forms-A), повнофункціональний рушій заміни OpenType GSUB, що охоплює всі LookupType 1-8 з вибором Script / LangSys і замиканням субсетера TTF для замінних гліфів, підтримку контейнерів XFA (XML Forms Architecture) (AddXFAPacket / ClearXFAPackets / XFAPacketCount), родину тригерів полів форм AcroForm /AA /K + /F + /V + /C, реєстрацію шрифтів з багатьма Unicode /DR через RegisterAcroFormFont, сетери атрибутів доступності елементів структури (/Lang / /E / /T) з перечисленням стандартних типів структури Таблиці 333 та типізованим перевантаженням AddStructureElement, і властивості послідовності позначеного вмісту на BeginTaggedContent

Цикл v2.119.52-68 завершив автоматичний конвейєр формування Phase 8 і розширив охоплення писемностей: Arabic Extended-A (включно з U+0750-077F Arabic Supplement та U+08A0-08FF Arabic Extended-A) і персько-урдуські Form-B були розширені до повної таблиці класів з'єднань U+0672-06D5 плюс 26 нових відображень Forms-A, з пост-проходом згортання для LAM-ALEF, пар YEH-HAMZA + голосна (8 лігатур у U+FBEA-FBFB), окремої лігатури Allah (U+FDF2) і 22-кодовой фрази Bismillah (U+FDFD). Нова опційна властивість ShapingFeatures + перечислення THPDFShapingFeature (sfArabicGSUB / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) змушує генератор автоматично видавати специфічні для шрифту заміни rlig / liga / clig / rclt, керовані GSUB, з приєднанням латинських стандартних лігатур (ff / fi / fl / ffi / ffl / ſt / st через U+FB00-FB06) та складового переупорядкування деванагарі (Repha + передбазова I-matra) до того самого конвейєра. Нові методи можливостей формування для сирійської (GetSyriacJoiningClass / GetSyriacPosition), монгольської (GetMongolianJoiningClass / GetMongolianPosition) і деванагарі (GetDevanagariCategory / ApplyDevanagariReorder) дозволяють викликачам керувати неарабськими складними писемностями через той самий рушій GSUB. GetCodepointAdvance відкриває кешовану em-фракцію /W для розрахунків переносів, а AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID дозволяють генератору видавати будь-який GSUB-замінний GID (кластерні форми деванагарі, стилістичні альтернати, послідовності варіацій CJK) через кодові точки приватної області використання з повною інтеграцією /CIDToGIDMap + /ToUnicode + /W. Кумулятивна ToUnicode CMap тепер постачається з 35 записами зворотного відображення лігатур (8 LAM-ALEF + 18 родини YEH-HAMZA + 1 Allah + 1 Bismillah + 7 латинських), тож копіювання / вставка в читачах-споживачах дає вихідні кодові точки. Скелети документації ChangeLog тепер постачаються 11 мовами (EN / CN / AR / DE / ES / FR / IT / JA / KO / PT / RU) з UI вибору мови; ліміт утримання ChangeLog підвищено з 250 до 500 версійних секцій

Цикл v2.152-v2.190 побудував повний рушій позиціонування OpenType GPOS і розширив охоплення складних писемностей. Опційні перемикачі формування тепер застосовують власний кернінг шрифту (парний, контекстний і справа-наліво), розміщення комбінованих знаків (mark-to-base, mark-to-mark і mark-to-ligature на компонент), курсивні якорі з'єднання та вертикальний кернінг для вертикального тексту, усе записується стандартними текстовими операторами PDF, тож будь-який читач рендерить той самий результат. Формування на стороні генератора тепер охоплює арабську (включно з блоками Supplement, Extended-A та Extended-B), сирійську, монгольську, N'Ko, Adlam, Hanifi Rohingya, тибетський стек приголосних, деванагарі та інші індійські писемності через ланцюг Indic-функцій шрифту, яванську, впорядкування діакритики тайської і лаоської, впорядкування голосних івриту, кхмерську, бірманську, тай-в'єтську та метей-маєк. Родина опційних типографічних функцій OpenType — стандартні, дискреційні та історичні лігатури, малі великі літери, старостильні / лінійні / пропорційні / табличні фігури, верхні та нижні індекси, порядкові, дроби, наукові нижні індекси, чисельники, знаменники, стилістичні та контекстні альтернати, локалізовані форми, чутливі до регістру форми, перекреслений нуль і вертикальні альтернати — може застосовуватися автоматично під час виведення тексту. Копіювання, вставка та текстовий пошук відновлюють оригінальні символи в усьому сформованому виводі, включно з лігатурами та ланцюговими замінами функцій. Вивід шрифтів також став меншим: вбудовані програми шрифтів завжди стискаються Flate, шрифт з кількох сторінок вбудовується один раз на документ, теги субсетів виводяться детерміновано заради відтворюваного виводу, а опційний компактний режим пише plain-ASCII текст стандартними шрифтами як невбудований WinAnsi текст

Охоплення стандартів PDF

HotPDF включає специфічну для версій підтримку практичних функцій створення PDF 1.3, PDF 1.4, PDF 1.5, PDF 1.6, PDF 1.7 і PDF 2.0, які використовують бізнес-, imaging-, видавничі та документно-автоматизаційні застосунки. Публічні API перевіряються проти вибраної версії PDF, тож згенеровані файли уникають новіших записів, коли потрібна строга сумісність

Поточна матриця охоплює фільтри та предиктори, потоки XRef, ланцюги інкрементних оновлень, шифрування AES, безпеку з відкритим ключем, Ed25519, Ed448, кероване розширенням верифікацію ML-DSA, провайдерів підписання на основі колбеків, віддалених, PKCS#11 та Windows CNG сховищ ключів, колір DeviceCMYK і ICCBased, мозаїчні візерунки, осьові, радіальні, багатостопові, Гуро, Coons patch і тензорно-добуткові затінення, вбудовані зображення, шари, групи прозорості, переходи сторінок, анотації, віджети AcroForm, метадані XMP, теговані дерева структури PDF, OutputIntents, виробничі блоки сторінок, ViewerPreferences, UserUnit, порядок Tabs та вбудовування і субсетінг шрифтів TrueType, Type 3, CFF, OpenType-CFF і CID-keyed CFF

Це широке охоплення стандартів для підтримуваної поверхні створення HotPDF, а не загальна заява, що кожен крайній випадок ISO 32000-1 реалізовано

Чому обирають HotPDF

Власні конвейєри потокових фільтрів

Реєстр IHPDFCustomStreamFilter поєднує визначені застосунком push- і pull-декодери зі вбудованими фільтрами під одним агрегованим бюджетом байтів, явними контрактами пошуку, кооперативним скасуванням, ізольованим тимчасовим виводом, типізованими статусами збоїв і телеметрією виконання

Декодування RunLength валідує закодовані прогони перед резервуванням точного розміру декодованого виводу, а випереджувальне зчитування прямих файлів відкидає неповні поповнення кешу після збоїв вводу/виводу

Нативна інтеграція з RAD Studio

Використовуйте знайомі проєкти, пакети, потоки, форми та шаблони малювання Delphi і C++Builder замість обгортання окремого PDF-рушія

Сучасні функції PDF

Створюйте PDF з формами, анотаціями, шарами, прозорістю, переходами сторінок, тегованою структурою, шифруванням, заповнювачами підписів та інкрементними оновленнями

Компактний та швидкий вивід

Зменшуйте розмір PDF стисненням zlib-ng, imaging libjpeg-turbo, субсетінгом TrueType і OpenType-CFF, підтримкою CID-keyed CFF та внутрішньо інстансованими змінними шрифтами TrueType і CFF2

Конкурентні переваги

Нижченаведені можливості — тверді технічні відмінності HotPDF від типових Delphi PDF-компонентів. Більшість конкуруючих комерційних компонентів або взагалі не мають цих функцій, або помітно слабші в продакшні. Кожен рядок відповідає перевірюваній реалізації та публічній API-поверхні всередині бібліотеки

Повне формування + позиціонування OpenType

Повний рушій заміни GSUB, що охоплює всі LookupType 1-8 (Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual), у парі з рушієм позиціонування GPOS, що охоплює всі 9 LookupTypes (парний / одинарний / контекстний кернінг, mark-to-base, mark-to-mark, mark-to-ligature на компонент лігатури, курсивне приєднання, відстань, вертикальні vkrn/vpal). Усе позиціонування видається стандартними текстовими операторами PDF, тож кожен читач рендерить однаково

Формування складних писемностей на стороні генератора

Понад 20 писемностей формуються на стороні генератора під керуванням власного ланцюга функцій GSUB шрифту: арабська (включно з Supplement / Extended-A / Extended-B), сирійська, монгольська, N'Ko, Adlam, Hanifi Rohingya, тибетське стекування, деванагарі та індійська родина, яванська, впорядкування діакритики тайської / лаоської, впорядкування голосних івриту, кхмерська, бірманська, тай-в'єтська, метей-маєк. Вивід несе повне зворотне відображення /ToUnicode, тож копіювання / вставка відновлює оригінальні кодові точки

Внутрішньопроцесний стек підписання

ASN.1, RSA, AES, розгортання PBES2 PKCS#12 з профілями AES-128 / AES-192 / AES-256 CBC і HMAC-SHA-1 / SHA-256 / SHA-384 / SHA-512 PBKDF2, застаріле розгортання PBE-SHA1-3DES PFX і CMS SignedData (RFC 5652) обробляються всередині HotPDF. SignPDFWithPFX підписує ідентичності RSA та ECDSA нативним кодом і використовує опційний OpenSSL 3 libcrypto для Ed25519 чи Ed448 PureEdDSA; PFX-файли з кількома ідентичностями відкривають детермінований вибір localKeyId та автоматично вбудовують відповідний доступний ланцюг сертифікатів з точною дедуплікацією DER, підписувачі CMS можуть використовувати ідентичності issuer-and-serial або компактні X.509 SubjectKeyIdentifier, CMS-контейнери з кількома підписувачами зберігають незалежні атрибути, алгоритми, сертифікати, провайдери та результати валідації, валідація політики підпису PAdES підтримує явні ідентифікатори політик, структуровані квалифікатори, хешування документа політики та закріплення викликачем, а preflight профілю PAdES повідомляє кожну вимогу baseline або extended з доказами пункту, об'єкта та редакції, тоді як верифікація завантажених підписів підтримує RSA PKCS#1 v1.5, RSA-PSS з валідованими параметрами, NIST і Brainpool ECDSA, Ed25519, Ed448, політики дайджестів SHA-2, SHA3 і SHAKE256, токени міток часу RFC 3161, керовані викликачем шляхи сертифікатів, офлайн-валідацію OCSP або CRL та fail-fast машиночитану діагностику неузгоджених алгоритмів дайджестів CMS

Довгострокова перевірка PAdES, наскрізна

Робочі процеси PAdES B-B, B-T, B-LT і B-LTA охоплені наскрізь з верифікацією підписів та міток часу документа RFC 3161 SHA-2 або SHA3, оновленням архівних міток часу в режимі лише-додавання з наданими викликачем доказами сертифіката DSS, OCSP і CRL, точною дедуплікацією доказів між редакціями, валідацією DSS / VRI, наданими викликачем якорями довіри, обмеженнями Seed Value, деклараціями розширень ISO 32001 та XAdES-in-PDF

Триосьова відповідність + Preflight

Незалежне керування профілями для PDF/A-1/-2/-3, PDF/X-1a/-3/-4 і PDF/UA-1 одночасно — виклики, що порушують відповідність, викидають діагностичні винятки замість мовчазного запису невідповідних PDF. CreatePreflightReport видає звіти text / JSON / HTML / CSV / XML зі стабільними ID правил і розташуваннями, тоді як CreatePreflightMRR додає детерміновані обмежені плагіни функцій і валідації для власних політик CI

Direct File API для багатогігабайтних файлів

Працює з PDF на диску без побудови графа об'єктів у пам'яті. На документі 2 GB з 1,67 млн об'єктів: шифрування AES-256 ~14 с, дешифрування ~16 с, повний перезапис ~6 с; зчитування кількості сторінок документа 1,25 GB займає мілісекунди. Класичні таблиці xref, потоки XRef, файли з гібридними посиланнями та інкрементно оновлені документи всі залишаються на прямому шляху

Обмежене відновлення пошкоджених PDF

Переміщує цілі таблиці або потоки xref після зламаного startxref, потім переходить до резервного токен-обізнаного сканера фрагментів по 1 MiB, який перебудовує зміщення прямих об'єктів з налаштовуваними бюджетами байтів і об'єктів, пріоритетом найновішого визначення, фільтрацією хибних спрацювань тіл потоків, обмеженими подіями довіри з діапазонами байтів та обов'язковим повним перезаписом під час збереження

Субсетінг CFF / OpenType-CFF / CID

Шрифти TrueType, OpenType-CFF і CID-keyed CFF усі піддаються субсетінгу зі збереженням ID гліфів для тексту Type0 / Identity-H. CJK-документи, які раніше вбудовували програми CID-keyed CFF на 14 МБ, тепер важать 500 КБ — 2 МБ без втрати жодного відрендереного гліфа; вбудовані програми шрифтів завжди стискаються Flate, багатосторінкові шрифти вбудовуються один раз на документ, а теги субсетів детерміновані заради відтворюваного виводу Опційні компактні TrueType-субсети перенумеровують збережені гліфи, тож кільком CJK-символам вистачає кількох кілобайтів даних шрифту, а один перемикач CompressDocument поєднує їх зі стисканням Flate та об'єктними потоками заради найменшого виводу; завантажені PDF проходять той самий безвтратний обробник через CompressLoadedDocument

Уніфікований фасад логування часу виконання

THPDFLogger + глобальний HPDFLog дають вмикуваний під час виконання діагностичний фасад: фільтрація за серйозністю Error / Warning / Info / Debug, одночасні цілі файл + OutputDebugString + консоль, безпечність для потоків, ротація 10 МБ з одним резервним файлом, нульові накладні витрати вимкненого швидкого шляху. LoadFromFile, preflight-звіти та резервний шлях потоків об'єктів уже підключені до структурованої діагностики, яку можна перемикати під час виконання без перебудови — операційна можливість, якої більшість конкуруючих компонентів позбавлена повністю

Чотири адаптери рушіїв звітів

Готові PDF-бекенди для FastReport (TfrxHotPDFExport), QuickReport (TQRHotPDFExportFilter), ReportBuilder (TppHotPDFDevice) і DevExpress ExpressPrinting (охоплює cxGrid / cxRichEdit / cxScheduler / cxPivotGrid). Наявні компонування звітів продовжують працювати — змінюється лише PDF-емітер, з нативним виводом тексту / зображень / фігур / ліній / посилань / штрихкодів FastReport, включно з кліпінгом картинок та рамками, реєстрацією палітри дизайну FastReport, фільтрацією діапазонів сторінок з одиниці, нативним виводом тексту / векторів / зображень / посилань / штрихкодів ReportBuilder та опційними шлюзами відповідності PDF/A і PDF/X у всіх чотирьох адаптерах звітів

Це доставлені можливості, а не обіцянки з дорожньої карти. Кожен пункт вище реалізований у поточній бібліотеці, компілюється без помилок і проходить тести DUnitX плюс наскрізну валідацію veraPDF. Оцінюючи конкуруючі компоненти, питайте доказів повного покриття LookupType GSUB/GPOS, внутрішньопроцесного ланцюга PAdES B-LTA та виміряної пропускної здатності багатогігабайтного шифрування

Основні можливості

  • Будуйте портативне ядро Linux з нативним відображенням файлів POSIX, декодуванням об'єктів і вмісту PDF, спільними даними шрифтів sfnt, стисненням, криптографією та класичною серіалізацією PDF; повне розгортання Linux-компонентів ще інтегрується
  • Порівнюйте формулювання контрактів за абзацами та токенами слів чи речень, зберігайте двосторонні позиції в джерелі, виявляйте переставлення застережень, виключайте явні шаблонні формулювання та створюйте HTML чи анотаційний PDF-огляд
  • Створюйте PDF-файли, додавайте сторінки, малюйте текст і векторну графіку, зберігайте у файли або потоки викликача
  • Конвертуйте та рендерите XPS, EPUB і CBZ через опційні контентно-оцінені обробники з обмеженою роботою архіву та конвертації
  • Імпортуйте посторінкові медіа HTML5 з толерантним DOM, каскадом print CSS, таблицями, вкладеними бізнес-панелями flex/grid, рядками з перенесенням, span-ами колонок, зображеннями та опційними елементами керування AcroForm у паралельних блоках, ресурсами шрифтів sfnt під керуванням колбека та обмеженими бюджетами парсера, верстки, ресурсів і декодованих зображень
  • Імпортуйте SVG як повторно використовувані Form XObjects з нативною геометрією, CSS, градієнтами, масками, текстом Base 14, посиланнями з урахуванням розміщення та строгими бюджетами парсера й ресурсів
  • Пагінуйте вміст RichEdit і RTF через механізм форматування Windows, зберігаючи векторний текст, шрифти, зображення, підтримувані презентації OLE та явні бюджети ресурсів
  • Рендерите нативні векторні діаграми з серіями line, bar, area, pie і scatter, автоматичними або ручними осями, темами, легендами, підписами, обмеженими даними та опційними альтернативами Figure PDF/UA
  • Інспектуйте візуальну діагностику верстки з обмеженим виявленням перекриттів, шляхами елементів, опційним відображенням на джерело, нативними векторними накладками, статистикою та синхронними колбеками попереднього перегляду
  • Керуйте семантикою Y-координати тексту сторінки через THPDFPage.TextFromBaseLine, стримуйте експертні сирі оператори PDF через AppendScopedRawContent і запитуйте вивід текстових рамок через TextOutBoxEx / WideTextOutBoxEx
  • Обробляйте текст Unicode, текст справа наліво, вертикальний текст Identity-V, фолбек шрифтів з урахуванням писемності, діагностику нерозв'язаних гліфів, вбудовані шрифти, субсети TrueType, субсети CFF/OpenType-CFF, метрики тексту та абзаци
  • Застосовуйте кернінг OpenType шрифту, позиціонування комбінованих знаків, курсивне з'єднання, формування складних писемностей та типографічні функції під час виведення тексту через опційні перемикачі формування
  • Додавайте метадані, анотації, спливні коментарі, гіперпосилання, вкладення, налаштування переглядача, всі шість стандартних компонувань сторінок, включно з розворотами з обкладинкою, поведінку друку, шари та переходи сторінок
  • Імпортуйте та записуйте орієнтовані робочі процеси зображень JPEG, bitmap, TIFF, JPEG2000, JBIG2, WMF і EMF, з повторним використанням закодованих image XObject, помічниками масок зображень, помічниками прозорості soft mask, перевизначеннями якості JPEG на зображення, опціями рендерингу EMF/WMF на виклик, керуванням шарами полотна, керуванням перемалюванням, відсіканням кадрів, збереженням візерунків hatch-пензля, діагностикою null-pen і null-brush та опційним автоматичним вибором монохромного стиснення
  • Декодуйте плитки кодового потоку JPEG 2000 і регіони роздільності інтересу через обмежені нативні та crash-ізольовані шляхи, з автоматичним вибором роздільності рендерера та бюджетно-обізнаною паралельною реконструкцією плиток
  • Кодуйте пакети сторінок JBIG2 з міжсторінковим тренуванням символів, одним спільним глобальним словником, повторним використанням дублікатів сторінок, обмеженими бюджетами вводу, нативним фолбеком і явною телеметрією стиснення; декодуйте refinement та агреговані словники символів і уточнені текстові екземпляри через нативний Pascal-фолбек для арифметичних і стандартних Huffman-потоків, з утримуваними контекстами, обмеженими таблицями довгих посилань, ланцюговими глобальними словниками та декодуванням видимих плиток
  • Декодуйте завантажені потоки зображень CCITT Group 3 і Group 4 з одно- та двовимірними рядками, нестиснутими розширеннями T.4/T.6, строгим розпізнаванням EOFB, повною обробкою DecodeParms і обмеженою ресинхронізацією пошкоджених рядків
  • Завантажуйте наявні PDF, копіюйте сторінки, додавайте сторінки, видаляйте сторінки, об'єднуйте документи, оновлюйте інформацію, редагуйте метадані та зовнішній вигляд анотацій, ставьте штампи на сторінки, інспектуйте, заповнюйте або сплощуйте форми та транскодуйте завантажені потоки зі стисненням Flate з урахуванням рівня стиснення або декомпресією з безпечними предикторами
  • Обробляйте багатогігабайтні PDF через Direct File API: читайте кількість сторінок, копіюйте, перезаписуйте інформацію документа, застосовуйте чи знімайте захист AES-256 файл-у-файл за секунди, без завантаження графа об'єктів документа
  • Застосовуйте паролі, AES-128, AES-256, PDF 2.0 AES-256 R6, шифрування з відкритим ключем, керування шифруванням метаданих, прапорці захисту та керування дозволами
  • Створюйте поля AcroForm, автоматичні потоки зовнішнього вигляду форм, поля підписів, заповнювачі зовнішнього підписання CMS та інкрементні оновлення з кількома підписами

Переваги для розробників

  • Інтеграція на рівні вихідного коду тримає налагодження та розгортання під вашим контролем
  • Спільні приклади Delphi і C++Builder полегшують перевірку поведінки в обох мовних стеках
  • Статична інтеграція сторонніх C-бібліотек тримає залежності стиснення та обробки зображень відтворюваними
  • Спеціалізовані допоміжні API охоплюють фільтри PDF, обмежене звернення предикторів TIFF і PNG, строге декодування потоків LZW, FlateDecode, CCITT, маски зображень, штрихкоди, субсетінг шрифтів та робочі процеси вмісту сторінок
  • Шлюзи версій PDF можуть автоматично підвищувати версію виводу або дотримуватися строгої відповідності PDF 1.3/1.4/1.5/1.6/1.7 через StrictVersionLock
  • Готові до використання проєкти пакетів Delphi та C++Builder охоплюють поточні покоління RAD Studio, включно з 13.1 Florence

Нещодавні визначні можливості бібліотеки

Безвтратне редагування потоків вмісту

THPDFContentStreamAST зберігає кожен байт пробілів, коментар, роздільник, написання операндів та корисні дані вбудованих зображень, відкриваючи зв'язані вузли операцій і контейнерів, обмежений парсинг, відсортовані накладки редагування та серіалізацію в пам'ять або потік; відвідувачі операторів вмісту додають обмежені колбеки inspect, measure, replace, delete, stop і reject з детермінованими знімками стану та валідованими атомарними оновленнями завантажених сторінок; семантичне порівняння канонізує числа, рядки, вбудовані зображення, ефективні матриці, надлишкові сетери та збереження/відновлення стану графіки перед точним порівнянням подій; заміна тексту завантаженої сторінки змінює лише збіжні діапазони операндів

Direct File API для багатогігабайтних файлів

Родина DAOpenFileReadOnly / DACopyFile / DASetDocumentInfo / DASaveAsFile та виклики EncryptFile / DecryptFile файл-у-файл працюють з PDF-файлом напряму замість побудови графа об'єктів у пам'яті. На еталонному документі 2 GB з 1,67 млн об'єктів шифрування AES-256 займає близько 14 секунд, дешифрування близько 16 секунд, повний перезапис близько 6 секунд; відкриття документа 1,25 GB заради кількості сторінок займає мілісекунди. Класичні таблиці, потоки перехресних посилань, файли з гібридними посиланнями та інкрементно оновлені документи всі залишаються на прямому шляху

Звіти Preflight

CreatePreflightReport і CreatePreflightReportWithProfile аудиту PDF проти підтримуваних перевірок PDF/A, PDF/X і PDF/UA та видають звіти text, JSON, HTML, CSV або XML. ValidatePDFWithPluginBundle поєднує ті самі вбудовані політики з обмеженими довіреними плагінами функцій і правил в одному детермінованому XML MRR

Інструментарій форм завантаженого документа

Обмін FDF файлами та потоками й багатозначний обмін XFDF зберігають окремі вибрані елементи в полях вибору з багатовибором, включно зі значеннями опцій, що містять розриви рядків, і перебудовують індекси вибору під час імпорту

HasFormFields і FormFieldExists відповідають на питання про форми завантаженого PDF до будь-яких змін, створення полів у завантаженому документі відхиляє дублікати кореневих назв до реєстрації віджетів, значення полів можна читати й писати за індексом чи назвою, а FlattenFormFields вписує інтерактивні поля AcroForm у вміст сторінок і повідомляє, скільки полів спрощено — поруч зі сплощенням XFA-to-AcroForm, яке тримає вкладені, обгорнуті, фіксовано-колонкові та авто-колонкові табличні XFA-форми придатними в будь-якому читачі

Внутрішньопроцесне підписання PFX / PKCS#12

THotPDF.SignPDFWithPFX(InputPDF, OutputPDF, PFXFile, Password) підписує наявний PDF із заповнювачем за один виклик. Робочі процеси файлів, потоків, зовнішнього підписувача та провайдерів обирають дайджест SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-384, SHA3-512 або потрібний для Ed448 512-бітовий SHAKE256, копіюють з обмеженими буферами 256 КБ, латочно виправляють фіксованої ширини поля /ByteRange і /Contents та підтримують підписання того самого потоку без утримання повної другої копії PDF у пам'яті. Стек ASN.1, AES і PBES2 PKCS#12 приймає приватні ключі RSA, ECDSA на іменованих кривих, Ed25519 і Ed448 плюс AES-128 / AES-192 / AES-256 CBC з HMAC-SHA-1 / SHA-256 / SHA-384 / SHA-512 PBKDF2; підписання RSA та ECDSA використовує нативні шляхи, тоді як підписання Ed25519 і Ed448 — опційний OpenSSL 3 libcrypto. HPDFEnumeratePFXIdentities, HPDFParsePFXByLocalKeyID і THPDFCMSSignOptions.PFXLocalKeyID детерміновано обирають облікові дані з кількох ідентичностей та несуть їх відповідний доступний ланцюг сертифікатів до CMS; неузгоджені ідентифікатори підписувача, контейнера, довжини ключа, механізму підпису або алгоритмів RFC 6211 зазнають невдачі до хешування документа чи роботи провайдера

Довгострокова перевірка PAdES

Робочі процеси PAdES B-B, B-T, B-LT і B-LTA охоплюють створення міток часу RFC 3161 SHA-2 або SHA3 та криптографічну верифікацію, оновлення архівних міток часу в режимі лише-додавання, яке розширює DSS перед запечатуванням нової редакції, довгострокову валідацію DSS / VRI з офлайн доказами сертифіката, OCSP і CRL, керовані викликачем шляхи сертифікатів, обмеження Seed Value та XAdES-in-PDF

Відповідність PDF/A, PDF/X та PDF/UA

HotPDF керує викликами функцій проти профілів PDF/A-1 / -2 / -3 / -4 / -4e / -4f, PDF/X-1a / -3 / -4 і PDF/UA-1 / -2, тоді як генерація PDF/A-4 запускає обмежений валідатор графа об'єктів перед серіалізацією. Виклики, які зламали б вибраний профіль, викидають діагностичні винятки замість мовчазного виробництва невідповідних PDF

Адаптери сторонніх рушіїв звітів

Готові PDF-бекенди для чотирьох найпоширеніших рушіїв звітів Delphi: TfrxHotPDFExport (FastReport 4 / FastReport VCL, включно з виводом нативних об'єктів для тексту, картинок, фігур, ліній, посилань і підтримуваних штрихкодів плюс фільтрація діапазону сторінок, керування вбудовуванням шрифтів, парольний захист, опції шлюзів PDF/A чи PDF/X і дизайн-часова одиниця реєстрації frxHotPDFDesign), TQRHotPDFExportFilter (QuickReport з опціями шлюзів PDF/A чи PDF/X), TppHotPDFDevice (ReportBuilder, включно з опційним виводом нативних команд малювання для тексту, векторних примітивів, зображень, посилань, підтримуваних штрихкодів та опцій шлюзів PDF/A чи PDF/X) і dxHotPDFExportReportLinkToFile/Stream (DevExpress ExpressPrinting System, що охоплює cxGrid / cxRichEdit / cxScheduler / cxPivotGrid з опціями шлюзів PDF/A чи PDF/X). Наявні звіти продовжують працювати — змінюється лише PDF-емітер

Рушій позиціонування OpenType GPOS

Опційне позиціонування тексту під керуванням власних даних GPOS шрифту: парний і контекстний кернінг для тексту зліва направо і справа наліво, розміщення mark-to-base, mark-to-mark і mark на компонент лігатури, курсивне вирівнювання входу/виходу, позиціонування відстані та вертикальний кернінг для вертикальних шрифтів. Позиціонування видається стандартними текстовими операторами PDF, тож кожен PDF-читач рендерить однаковий результат

Охоплення формування складних писемностей

Формування на стороні генератора рендерить коректно з'єднаний і переупорядкований текст для арабської (включно з блоками Supplement, Extended-A і Extended-B), сирійської, монгольської, N'Ko, Adlam, Hanifi Rohingya, тибетської, деванагарі та інших індійських писемностей, яванської, тайської, лаоської, івриту, кхмерської, бірманської, тай-в'єтської та метей-маєк без покладання на формувач у читачеві. Кожна писемність — окремий опційний перемикач, тож наявний вивід залишається байт-ідентичним до увімкнення, а копіювання/вставка відновлює оригінальні символи

Автоматичні типографічні функції OpenType

Опційні перемикачі формування застосовують стандартні, дискреційні та історичні лігатури шрифту, малі великі літери, старостильні / лінійні / пропорційні / табличні фігури, верхні та нижні індекси, порядкові, дроби, наукові нижні індекси, чисельники, знаменники, стилістичні та контекстні альтернати, локалізовані форми, чутливі до регістру форми, перекреслений нуль і вертикальні альтернати автоматично під час виведення тексту, з відображенням витягнутого тексту назад у вихідні символи

Компактний вивід шрифтів

Вбудовані програми шрифтів завжди стиснуті Flate, шрифт, використаний на кількох сторінках, вбудовується один раз на весь документ, а теги субсетів виводяться детерміновано з фактично використаних гліфів, тож повторні запуски дають ідентичний вивід. Опційний режим пише plain-ASCII текст стандартними шрифтами як компактний невбудований WinAnsi текст, зменшуючи сторінку простого тексту з сотень кілобайт до кількох кілобайт

Формування кількох писемностей на стороні генератора

Формування на стороні генератора згортає прогони Unicode-вводу в їх презентаційні форми перед видачею тексту PDF. Арабська охоплює повну таблицю класів з'єднань U+0672-06D5 плюс понад 40 відображень Forms-A, з автоматичним пост-проходом лігатур для LAM-ALEF, YEH-HAMZA + голосних (U+FBEA-FBFB), Allah (U+FDF2) і Bismillah (U+FDFD). Поверхні можливостей для сирійської (GetSyriacJoiningClass), монгольської (GetMongolianJoiningClass) і деванагарі (GetDevanagariCategory / ApplyDevanagariReorder) дозволяють викликачам керувати складними неарабськими писемностями через той самий рушій GSUB

Автоматичний конвейєр формування (Phase 8)

Опційна властивість ShapingFeatures + перечислення THPDFShapingFeature (sfArabicGSUB / sfCursiveAttachment / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) підносить рушії OpenType GSUB і GPOS до автоматичного конвейєра на стороні генератора. Нативні арабські init / medi / fina / isol, rlig, calt, rclt, курсивне приєднання GPOS, латинські liga / clig і переупорядкування індійської деванагарі відбуваються під час видачі тексту, з повним зворотним відображенням /ToUnicode заради коректності копіювання / вставки

Латинські стандартні лігатури + синтетичні кодові точки PUA

Латинські стандартні лігатури (ff / fi / fl / ffi / ffl / ſt / st через U+FB00-FB06) видаються автоматично через ApplyLatinLigatureRefinement, коли увімкнено sfStandardLigatures. Для GSUB-замінних GID без природної кодової точки Unicode — кластерні форми деванагарі, стилістичні альтернати, послідовності варіацій CJK — AssignSyntheticCodepointForGID виділяє кодову точку приватної області використання (U+E000-F8FF) з дзеркальною інтеграцією /CIDToGIDMap + /W + /ToUnicode

Рушій заміни OpenType GSUB

Кожен OpenType GSUB LookupType 1-8 (Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual) реалізовано як поверхню запитів можливостей (GetSingleSubstituteGlyph, ApplyLigatureSubstitution, ApplyContextualSubst, ApplyReverseChainedContextualSubst та помічники Multiple / Alternate / Script / LangSys / Feature). MarkUnicodeGlyphUsed втягує кожен замінний гліф у субсетер TTF, тож вбудовані субсети шрифтів залишаються самодостатніми

Дії сторінок + форми XFA + тригери AcroForm + Unicode /DR

Додаткові дії життєвого циклу документа PDF відкривають тригери каталогу /AA /WC, /AA /WS, /AA /DS, /AA /WP і /AA /DP через побудовані на конструкторі помічники встановлення та очищення, тоді як додаткові дії на рівні сторінок відкривають тригери відкриття /AA /O і закриття /AA /C через THPDFPage та індексовані сторінками обгортки THotPDF. Контейнерні пакети XFA (§12.7.6 / §12.7.8 PDF 1.7) їдуть поруч зі статичними /Fields (або замість них) через AddXFAPacket. Повна родина тригерів полів форм AcroForm (/AA /K Keystroke, /F Format, /V Validate, /C Calculate) відкрита як методи-обгортки, тригери миші, фокусу та видимості віджетів (/E, /X, /D, /U, /Fo, /Bl, /PO, /PC, /PV, /PI) тепер можна встановлювати за назвою поля, а відповідні помічники очищення тримають словники тригерів легкими для заміни. THPDFActionBuilder охоплює дії життєвого циклу документа, сторінок, форм, анотацій, шарів, мультимедіа, переходів, 3D-переглядів та вбудованої навігації GoToE, тоді як API графа завантажених дій безпечно інспектує всі 18 стандартних типів дій та впорядковані ланцюги /Next

Мітки сторінок + ланцюги статей

THotPDF.SetPageLabel і його допоміжні методи для конкретних стилів записують записи числового дерева /PageLabels каталогу для десяткової, римської та абеткової нумерації сторінок, тоді як RegisterArticleThread разом із THPDFPage.AddArticleBead видає словники ланцюгів статей та намистин для керованої навігації читача

Субсетінг шрифтів та PDF CJK

THotPDF.EnableFontSubsetting робить субсетінг шрифтів TrueType, OpenType-CFF, CID-keyed CFF і CFF2 зі збереженням ID гліфів для тексту Type0 / Identity-H. Контури gvar та фантомні точки TrueType, блени CFF2, відображені осі та горизонтальні, вертикальні й глобальні метрики запікаються в статичний sfnt з коректною контрольною сумою перед вбудовуванням

Сертифікаційні підписи та блокування полів

AddCertificationSignatureField, ConfigureCertificationSignature і AttachSignatureFieldLock створюють структури дозволів DocMDP і FieldMDP зі зв'язуванням Catalog та політиками блокування полів, тоді як GetLoadedSignaturePermissions інспектує кожен стандартний метод перетворення, включно з правами використання UR/UR3 та областями Identity, AnalyzeLoadedSignatureRevisions класифікує пізніші зміни валідації, форм, підписів, анотацій, вбудованих файлів та інших проти політик, реконструйованих із підписаного знімка, а SaveIncrementalUpdateAuthenticated автентифікує кожен контрольний підпис перед атомарною публікацією дозволеної редакції

Розширене охоплення функцій PDF

  • Специфічні для версій шлюзи PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7 + вибрані шлюзи API PDF 2.0 для Catalog, ViewerPreferences, анотацій, JavaScript, шрифтів Type0, карт ToUnicode, прозорості, шарів і шифрування
  • Шлюзи відповідності PDF/A-1 / -2 / -3 / -4 / -4e / -4f, PDF/X-1a / -3 / -4 і PDF/UA-1 / -2 плюс обмежена структурна валідація PDF/A-4, які відхиляють невідповідні виклики функцій або вивід замість мовчазного порушення профілю
  • Теговані дерева структури PDF з картами ролей, StructParents, виводом ParentTree та елементами структури для робочих процесів, орієнтованих на доступність
  • OutputIntents, профілі ICC, блоки сторінок, обертання, UserUnit, порядок Tabs, мозаїчні візерунки, альфа ExtGState, режими змішування, керовані кольором luminosity soft masks для вмісту ICCBased, Lab, Separation і DeviceN, виконувані напівтони Type 1 / 5 / 6 / 10 / 16 з незалежними екранами колірних компонент, компактні кешовані порогові масиви, повні масиви transfer-функцій, кешовані вибіркові функції з усіма стандартними упакованими глибинами та порядками інтерполяції, посилання на функції black-generation / under-color-removal
  • Вбудовані зображення, багатостопові осьові градієнти, радіальні градієнти, трикутні сітки з затіненням Гуро вільної та ґратчастої форми, адаптивно тесельовані сітки Coons і тензорного добутку, soft-mask зображення для попіксельної альфи в стилі PNG та повторно використовувані заливки візерунками
  • Іменовані призначення, ескізи сторінок, стилізація контуру на рівні сторінки (колір, жирність, курсив), документний реєстр іменованого JavaScript і повна родина додаткових властивостей Line / PolyLine / Polygon (підпис, закінчення ліній, намір, ефект рамки)
  • Формування арабської на стороні генератора охоплює повну таблицю класів з'єднань U+0672-06D5 плюс понад 40 статичних відображень Arabic Presentation Forms-A, з пост-проходом згортання лігатур для LAM-ALEF, пар YEH-HAMZA + голосна (U+FBEA-FBFB), лігатури Allah (U+FDF2) і фрази Bismillah (U+FDFD)
  • Поверхні можливостей формування кількох писемностей: сирійська (GetSyriacJoiningClass / GetSyriacPosition), монгольська (GetMongolianJoiningClass / GetMongolianPosition), деванагарі (GetDevanagariCategory / ApplyDevanagariReorder) — керуйте тим самим рушієм GSUB для складних неарабських писемностей
  • Автоматичний конвейєр формування Phase 8 під керуванням опційної властивості ShapingFeatures: sfArabicGSUB застосовує нативні арабські init / medi / fina / isol плюс rlig / calt / rclt, щоб видавати специфічні для шрифту контекстні ID гліфів, sfCursiveAttachment застосовує курсивні якорі GPOS, sfStandardLigatures / sfContextualLigatures видають латинські liga / clig (FB00-FB06: ff / fi / fl / ffi / ffl / ſt / st), а sfIndicShaping переупорядковує кластери деванагарі (Repha + передбазова I-matra) перед видачею
  • Повнофункціональний рушій заміни OpenType GSUB (LookupType 1-8) з вибором Script / LangSys, замиканням субсетера TTF (MarkUnicodeGlyphUsed), покриттям Cmap формату 12 для SMP, парсингом GDEF, автоматичною видачею ToUnicode CMap з 35 записами зворотного відображення лігатур та пошуком GetUnicodeGlyphForCodepoint для викликачів, що керують видачею гліф-за-гліфом
  • Видача синтетичних кодових точок PUA (AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID) дозволяє генераторам видавати будь-який GSUB-замінний GID (кластерні форми деванагарі, стилістичні альтернати, послідовності варіацій CJK) через приватну область використання U+E000-F8FF з дзеркальною інтеграцією /CIDToGIDMap + /W. GetCodepointAdvance відкриває кешовану em-фракцію /W для розрахунків переносів
  • Рушій позиціонування OpenType GPOS за опційними перемикачами формування: парний, одинарний та контекстний (Context / Chained Context) кернінг для тексту зліва направо і справа наліво, розміщення mark-to-base / mark-to-mark / mark-to-ligature з точністю на компонент для лігатур, курсивне приєднання вхід-вихід, позиціонування відстані та вертикальний vkrn / vpal кернінг, що застосовується до вертикального текстового виводу
  • Формування складних писемностей на стороні генератора для Arabic Supplement / Extended-A / Extended-B, сирійської, монгольської, N'Ko, Adlam, Hanifi Rohingya, тибетського стекування, індійської родини писемностей через ланцюг Indic-функцій шрифту, яванської, впорядкування діакритики тайської / лаоської, впорядкування голосних івриту, кхмерської, бірманської, тай-в'єтської та метей-маєк, кожна за власним опційним перемикачем із зворотним відображенням ToUnicode для копіювання / вставки
  • Автоматичні типографічні функції OpenType під час виведення тексту: лігатури liga / clig / dlig / hlig, малі великі літери smcp / c2sc, стилі фігур onum / lnum / pnum / tnum, sups / subs / ordn / frac / sinf / numr / dnom, стилістичні альтернати salt, контекстні альтернати calt / rclt, локалізовані форми locl, форми case, перекреслений нуль zero і вертикальні альтернати vert / vrt2, з розв'язанням ланцюгових замін назад у вихідний текст у ToUnicode CMap
  • Оптимізація вбудовування шрифтів: завжди стиснуті вбудовані програми шрифтів, одна вбудована копія на документ для шрифтів з кількох сторінок, детерміновані теги субсетів заради відтворюваного виводу та опційний невбудований режим WinAnsi для plain-ASCII тексту стандартними шрифтами
  • Текстові поля AcroForm, списки, комбіновані списки, прапорці, перемикачі, дії кнопок (включно з розширеними Named / Hide / Show / ImportData / SubmitForm з керованими користувачем /Flags і просунутими ланцюгами дій THPDFActionBuilder), поля підписів і згенеровані потоки зовнішнього вигляду (багаторядковий + comb + rich-text Tx + CID-шрифт /AP)
  • Родина тригерів полів форм AcroForm (/AA /K Keystroke, /F Format, /V Validate, /C Calculate) з одним методом-обгорткою на JavaScript-тригер, обмеженим типізованим обчислювачем для умовних, рядкових, датних та масивних виразів, іменованими помічниками встановлення й очищення THPDFActionBuilder, обгортками за назвою поля для тригерів миші та фокусу віджетів (/E, /X, /D, /U, /Fo, /Bl), реєстрацією шрифтів з багатьма Unicode /DR через RegisterAcroFormFont, підтримкою контейнерів XFA (XML Forms Architecture) (§12.7.6 / §12.7.8 PDF 1.7) з AddXFAPacket / ClearXFAPackets / XFAPacketCount, DOM-запитами та правками XDP-потоків і масиву пакетів зі збереженням точних байтів з обмеженою канонічною серіалізацією просторів імен, CDATA та сутностей, шлюзами відповідності PDF/A + PDF/X, плюс сплощенням XFA-to-AcroForm (ApplyXFAAsAcroForm для сирих байтів XDP, FlattenLoadedXFA для вбудованої форми завантаженого PDF), яке перетворює статичну XFA на нативні поля AcroForm, стилі, виміряні потоком вкладені layout="tb", обгорнуті layout="lr-tb", фіксовано-колонкові та авто-колонкові табличні текстові поля і графіку сторінок, тож форма залишається видимою та заповнюваною в читачах без рушія XFA
  • Метадані навігації згенерованих документів: діапазони /PageLabels каталогу через THPDFPageLabelStyle, SetPageLabel і десяткові / римські / абеткові допоміжні методи, плюс /Threads каталогу та посторінкові намистини статей через RegisterArticleThread і THPDFPage.AddArticleBead
  • Додаткові дії життєвого циклу документа в каталозі /AA /WC, /AA /WS, /AA /DS, /AA /WP і /AA /DP через помічники THotPDF, плюс додаткові дії на рівні сторінок /AA /O і /AA /C через THPDFPage.SetPageAdditionalAction і THotPDF.SetPageAdditionalAction, включно з ланцюгами /Next THPDFActionBuilder та помічниками очищення
  • Поверхня доступності тегованого PDF PDF/UA-1: властивості послідовності позначеного вмісту §14.8.4 на BeginTaggedContent (/Lang / /Alt / /ActualText / /E), сетери атрибутів елементів структури (/Lang / /E / /T), перечислення стандартних типів структури Таблиці 333 (THPDFStandardStructureType) плюс типізоване перевантаження AddStructureElement
  • Підтримка анотацій для виділень, довільного тексту, посилань, вкладених файлів, спливних вікон, redaction, водяних знаків, rich media, 3D / U3D / PRC, стилів рамок і пов'язаних спливних коментарів
  • Стандартна безпека паролів, обробники безпеки AES-128 / AES-256, хешування PDF 2.0 R6, шифрування з відкритим ключем для отримувачів-сертифікатів через надані викликачем конверти PKCS#7, явне очищення копій паролів, похідних ключів файлів і об'єктів, кешованих розкладів AES, відкритого тексту PKCS#12 і потокового scratch відкритого тексту на кожному шляху успіху чи невдачі, та безпечна для бінарних даних обробка не-ASCII назв колорантів / шрифтів
  • Цифрові підписи PAdES B-B, B-T, B-LT і B-LTA з верифікацією міток часу RFC 3161 SHA-2 або SHA3, оновленням LTA в режимі лише-додавання з наданим викликачем сертифікатом DSS і доказами відкликання, дедуплікацією доказів між редакціями, валідацією DSS / VRI, наданими викликачем якорями довіри, обмеженнями Seed Value, деклараціями ISO 32001 та XAdES-in-PDF
  • Внутрішньопроцесне підписання PFX / PKCS#12: об'єднані в бібліотеку профілі ASN.1, RSA, AES, PBES2 AES-128 / AES-192 / AES-256 CBC і HMAC-SHA-1 / SHA-256 / SHA-384 / SHA-512 PBKDF2, застарілий PBE-SHA1-3DES PFX, детермінований вибір localKeyId для кількох ідентичностей, збереження відповідного доступного ланцюга сертифікатів, а стек CMS SignedData підписує RSA та ECDSA нативно або Ed25519 і Ed448 через опційний OpenSSL 3 libcrypto
  • Готові PDF-бекенди для FastReport 4 / FastReport VCL, QuickReport, ReportBuilder і DevExpress ExpressPrinting System, плюс VCL-експортер таблиць TDBGrid з опційними шлюзами PDF/A і PDF/X

Високопродуктивний стек стиснення та обробки зображень

Поточні збірки HotPDF використовують zlib-ng у zlib-сумісному режимі для комплектного бекенду Flate. Потоки сторінок, вбудовані потоки шрифтів, ToUnicode CMap, потоки зображень Flate, пов'язаний з TIFF вивід і помічники FlateDecode маршрутуються через шар zlib HotPDF

Збірки zlib-ng Win64x та діагностичної MSVC Win64 включають диспетчеризацію CPU під час виконання для шляхів SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ і AVX2 зі збереженими універсальними резервами. Win32 залишається на універсальному наборі OMF-об'єктів zlib-ng через bcc32c, тоді як об'єкти JPEG і TIFF Win32 продовжують використовувати класичний шлях OMF bcc32

Стандартні JPEG-робочі процеси використовують комплектний набір об'єктів libjpeg-turbo 3.1.90 через сумісний з libjpeg API, відкритий HPDFJpeg.pas. Нативні збірки Win32, Win64 і Win64x тепер включають відповідні набори SIMD-об'єктів NASM, а той самий нативний JPEG-бекенд доступний шару інтеграції TIFF для обробки JPEG-стиснутих TIFF

Місток середовища C у HPDFCLibs.pas тепер розв'язує malloc, free, realloc, calloc, memcpy, memmove і memset через один шар, звернений до Pascal, з вирівнюванням виділень по 32 байти заради SIMD-дружніх нативних буферів

Репозиторій включає відтворювані скрипти збирання об'єктів: Lib\thirdparty\build-bcc32.bat, Lib\thirdparty\build-bcc64x.bat і Lib\thirdparty\build-vc64.bat для повного набору нативних C-бібліотек, плюс скрипти лише для zlib-ng для сфокусованих перезбирань стиснення

Швидкий приклад Delphi

program HelloHotPDF;

uses
  System.SysUtils,
  HPDFDoc;

var
  PDF: THotPDF;
begin
  PDF := THotPDF.Create(nil);
  try
    PDF.AutoLaunch := False;
    PDF.FileName := 'HelloHotPDF.pdf';
    PDF.Compression := cmFlateDecode;
    PDF.EnableFontSubsetting := True;
    PDF.BeginDoc;
    PDF.CurrentPage.SetFont('Arial', [], 18);
    PDF.CurrentPage.TextOut(50, 50, 0, 'Hello HotPDF');
    PDF.EndDoc;
  finally
    PDF.Free;
  end;
end.

Вміст пакета

Типові випадки використання