HotPDF 2.200.2 за Delphi и C++Builder

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

HotPDF позволява на VCL приложенията да създават, променят, защитават, подписват, оптимизират, импортират, компресират и записват PDF документи директно от Delphi или C++Builder код, без да внедряват външна PDF среда за изпълнение

Преглед на проекта

HotPDF е библиотека от PDF компоненти на ниво изходен код за Delphi и C++Builder, разработена за десктоп софтуер, който се нуждае от детерминиран PDF изход, директно чертане на страници, силна RAD Studio интеграция и компактно внедряване

Компонентът покрива ежедневното генериране на PDF, усъвършенствано сглобяване на документи, редактиране на PDF, изход с голям брой изображения, формуляри, анотации, шифриране, работни процеси за подписване, оптимизация на шрифтове и базирани на потоци работни процеси от един собствена API повърхност

Последните версии на библиотеката разшириха HotPDF от класическо средство за запис на PDF в по-широк собствен PDF пакет от инструменти, покриващ специфично за версията ограничаване на функциите за PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7, избрано PDF 2.0 шифриране, съответствие със стандартите PDF/A-1 / -2 / -3 + PDF/X-1a / -3 / -4 + PDF/UA-1, цифрови подписи PAdES за базова линия / разширени / дългосрочно валидиране, конвейер за подписване PFX / PKCS#12 в процеса, който не зависи от OpenSSL или външни собствени двоични файлове, запазване на инкрементални актуализации, подмножества от шрифтове CFF / OpenType / CID-keyed CFF и PDF адаптери за експортиране за FastReport, QuickReport, ReportBuilder и DevExpress ExpressPrinting, които насочват съществуващите си отчети чрез HotPDF като единичен PDF бекенд, като Direct File API обработва мултигигабайтови PDF файлове с милиони обекти от файл към файл - брой страници, копия, пренаписване на информация за документи и AES-256 шифриране или дешифриране - за секунди, а зареждащата програма сега възстановява и документи, обвити в транспортни контейнери с остарели отмествания, както и инкрементално актуализирани файлове със сираци или заменени обекти

Цикълът v2.119.32-51 добави оформяне от страна на производителя за арабски / персийски / урду (задължителна лигатура LAM-ALEF, 9 букви от арабските 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) с enum за стандартен структурен тип от Table 333 и типизирано претоварване на AddStructureElement, както и свойства на маркирани последователности от съдържание в BeginTaggedContent

Цикълът v2.119.52-68 завърши автоматичния конвейер за оформяне Phase 8 и разшири обхвата на писменостите: арабски Extended-A (включително арабските Supplement U+0750-077F и арабските Extended-A U+08A0-08FF) и персийски / урду Form-B бяха разширени до пълната таблица на класове за свързване U+0672-06D5 плюс 26 нови съпоставяния на Forms-A, с последващо сгъване за LAM-ALEF, YEH-HAMZA + гласни двойки (8 лигатури в U+FBEA-FBFB), самостоятелната лигатура за Allah (U+FDF2) and фразата Bismillah от 22 кодови точки (U+FDFD), като новото незадължително свойство ShapingFeatures + enum THPDFShapingFeature (sfArabicGSUB / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) кара производителя да излъчва автоматично управлявани от GSUB специфични за шрифта замени rlig / liga / clig / rclt, като латинските стандартни лигатури (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 позволяват на производителя да излъчва всеки заместващ GID на GSUB (форми на клъстери деванагари, стилистични алтернативи, вариационни последователности CJK) чрез кодови точки от Private-Use-Area с пълна интеграция /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) с потребителски интерфейс за избор на език, като лимитът за запазване на ChangeLog беше увеличен от 250 на 500 версии

Цикълът v2.152-v2.190 изгради завършен двигател за позициониране OpenType GPOS и разшири обхвата на сложни скриптове, като опциите за оформяне вече прилагат собствения кърнинг на шрифта (по двойки, контекстен и отдясно наляво), разполагане на комбиниращи маркировки (маркировка към основа, маркировка към маркировка и маркировка към лигатура за отделен компонент), анкери за курсивна връзка и вертикален кърнинг за вертикален текст, като всичко това е записано като стандартни PDF текстови оператори, така че всеки четец да възпроизвежда същия резултат, а оформянето от страна на производителя вече покрива арабски (включително блоковете Supplement, Extended-A и Extended-B), сирийски, монголски, нко, адлам, ханифи рохинга, тибетско натрупване на съгласни, деванагари и другите индийски писмености чрез веригата от функции Indic на шрифта, явански, подредба на маркировки за тайландски и лаоски, подредба на гласни за иврит, кхмерски, мианмарски, тай виет и мейтей майек, като фамилия от незадължителни типографски функции OpenType - стандартни, дискреционни и исторически лигатури, малки главни букви, цифри в стар стил / еднаква височина / пропорционални / таблични, горни индекси, долни индекси, ординали, дроби, научни долни индекси, числители, знаменатели, стилистични и контекстни алтернативи, локализирани форми, чувствителни към регистъра форми, зачертана нула и вертикални алтернативи - могат да се прилагат автоматично по време на текстовия изход, докато копирането, поставянето и текстовото търсене възстановяват оригиналните знаци в целия оформен изход, включително лигатури и верижни замени на функции, като изходът на шрифта също стана по-малък: вградените шрифтови програми винаги са компресирани с Flate, шрифт, използван на няколко страници, се вгражда веднъж на документ, етикетите на подмножествата се извеждат детерминирано за възпроизводим изход, а незадължителен компактен режим записва чист ASCII текст със стандартни шрифтове как невграден WinAnsi текст

Обхват на PDF стандартите

HotPDF включва специфична за версията поддръжка за практическите функции за създаване на PDF 1.3, PDF 1.4, PDF 1.5, PDF 1.6 и PDF 1.7, използвани от приложения за бизнес, изображения, публикуване и автоматизация на документи, като публичните API се проверяват спрямо избраната PDF версия, така че генерираните файлове да избягват по-нови записи, когато се изисква строга съвместимост

Текущата матрица обхваща филтри и предиктори, XRef потоци, вериги от инкрементални актуализации, AES шифриране, сигурност с публичен ключ, DeviceCMYK и ICCBased цветове, шаблони за запълване, аксиални/радиални/мулти-стоп засенчвания, вградени изображения, слоеве, групи за прозрачност, преходи между страници, анотации, компоненти AcroForm, външни куки за подписване, XMP метаданни, маркирани PDF структурни дървета, OutputIntents, производствени кутии на страници, ViewerPreferences, UserUnit, ред на разделителите Tabs и вграждане/подмножества от шрифтове за TrueType, Type 3, CFF, OpenType-CFF и CID-keyed CFF шрифтове

Това е широк обхват с поддръжка на стандарти за поддържаната повърхност за създаване на HotPDF, а не общо твърдение, че всеки граничен случай в ISO 32000-1 е внедрен

Защо да изберете HotPDF

Собствено съответствие с RAD Studio

Използвайте познати Delphi и C++Builder проекти, пакети, потоци, формуляри и шаблони за чертане, вместо да обвивате отделен PDF двигател

Модерни PDF функции

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

Компактен, бърз изход

Намалете размера на PDF с компресия zlib-ng, изображения libjpeg-turbo, подмножества от TrueType, подмножества от OpenType-CFF и поддръжка на CID-keyed CFF за големи CJK шрифтове

Конкурентни предимства

Възможностите по-долу са ясни технически разграничители за HotPDF в сравнение с типичните Delphi PDF компоненти, като повечето конкурентни търговски компоненти или напълно липсват тези функции, или са значително по-слаби в производствени условия, а всеки ред съответства на проверимо внедряване и публична API повърхност в рамките на библиотеката

Пълно OpenType оформяне + позициониране

Напълно функционален двигател за замяна GSUB, покриващ всеки LookupType 1-8 (Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual), съчетан с двигател за позициониране GPOS, покриващ всички 9 LookupTypes (кърнинг по двойки / единичен / контекстен, маркировка към основа, маркировка към маркировка, маркировка към лигатура за отделен компонент на лигатура, курсивно прикачване, разстояние, вертикален vkrn/vpal), като цялото позициониране се излъчва със стандартни PDF текстови оператори, така че всеки четец да възпроизвежда съдържанието идентично

Оформяне на сложни скриптове от страна на производителя

Над 20 скрипта се оформят от страна на производителя, управлявани от собствената верига от функции GSUB на шрифта: арабски (вкл. Supplement / Extended-A / Extended-B), сирийски, монголски, нко, адлам, ханифи рохинга, тибетско натрупване, деванагари и индийското семейство, явански, подредба на маркировки за тайландски / лаоски, подредба на гласни за иврит, кхмерски, мианмарски, тай виет, мейтей майек, като изходът съдържа пълно обратно съпоставяне /ToUnicode, така че копирането / поставянето да възстановява оригиналните кодови точки

Стек за подписване в процеса, нула външни зависимости

ASN.1, RSA, AES, PKCS#12 разопаковане и CMS SignedData (RFC 5652) са внедрени изцяло в HotPDF, като SignPDFWithPFX подписва контейнерния PDF с едно повикване без среда за изпълнение на OpenSSL и без крипто доставчик на платформата - цялата верига за подписване живее във вашия процес, като е възпроизводима, подлежи на одит и има нула собствени двоични файлове за внедряване

PAdES дългосрочно валидиране, от край до край

Работните процеси PAdES B-B, B-T, B-LT и B-LTA са напълно покрити: времеви клейма RFC 3161, речници за дългосрочно валидиране DSS / VRI, подписи на времеви клейма за документи, ограничения на стойностите за семена (Seed Value) и XAdES-в-PDF, което е строгото изискване за съвместими с ЕС eIDAS електронни подписи, където повечето конкурентни компоненти спират до базово CMS подписване

Съвместимост по три оси + предварителна проверка (Preflight)

Независимо ограничаване на профили за PDF/A-1/-2/-3, PDF/X-1a/-3/-4 и PDF/UA-1 едновременно - несъответстващите повиквания предизвикват диагностични изключения, вместо мълчаливо да записват несъвместими PDF файлове, като CreatePreflightReport излъчва отчети в текстов / JSON / HTML / CSV формат с INI профили, вградени предварителни настройки, групово агрегиране и вграждане на доказателства XMP, валидирани от край до край спрямо veraPDF

Direct File API за мултигигабайтови файлове

Работи върху PDF файла на диска, без да изгражда граф на обектите в паметта, като при документ от 2 GB с 1.67 милиона обекта: шифрирането с AES-256 отнема ~14 сек, дешифрирането ~16 сек, пълното пренаписване ~6 сек, а четенето на броя страници на документ от 1.25 GB отнема милисекунди, докато класическите xref таблици, XRef потоците, хибридните референтни файлове и инкрементално актуализираните документи остават на директния път

Подмножества за CFF / OpenType-CFF / CID

Шрифтовете TrueType, OpenType-CFF и CID-keyed CFF поддържат създаване на подмножества, като същевременно запазват идентификаторите на глифовете за текст Type0 / Identity-H, като CJK документите, които преди са вграждали 14 MB CID-keyed CFF програми, сега се доставят с размер от 500 KB до 2 MB без загуба на изобразени глифове, като вградените шрифтови програми винаги са компресирани с Flate, многостраничните шрифтове се вграждат веднъж на документ, а етикетите на подмножествата са детерминирани за възпроизводим изход

Унифицирана фасада за регистриране по време на изпълнение

THPDFLogger + глобалният HPDFLog предоставят диагностична фасада, превключваема по време на изпълнение: филтриране по важност на Error / Warning / Info / Debug, едновременни цели за файлове + OutputDebugString + конзола, безопасни за нишки, единичен ролоувър на архив от 10 MB, бърз път за изключване без допълнително натоварване, като LoadFromFile, отчетите за предварителна проверка и пътят за откат към потока от обекти вече са свързани със структурирана диагностика, която може да се превключва по време на изпълнение без повторно компилиране - оперативно предимство, което повечето конкурентни компоненти напълно липсват

Четири адаптера за генератори на отчети

PDF бекенди за директна замяна за FastReport (TfrxHotPDFExport), QuickReport (TQRHotPDFExportFilter), ReportBuilder (TppHotPDFDevice) и DevExpress ExpressPrinting (покриващ cxGrid / cxRichEdit / cxScheduler / cxPivotGrid), при което съществуващите оформления на отчети продължават да работят - сменя се само PDF излъчвателят

Това са доставени възможности, а не обещания за бъдещи планове. Всеки елемент по-горе е внедрен в текущата библиотека, компилира се чисто и преминава DUnitX тестове плюс проверка от край до край с veraPDF, като при оценката на конкурентни компоненти изисквайте доказателства за пълно покритие на GSUB/GPOS LookupType, верига PAdES B-LTA в процеса и измерена пропускателна способност при шифриране на мултигигабайтови файлове

Предимства за разработчиците

  • Интеграцията на ниво изходен код поддържа отстраняването на грешки и внедряването под ваш контрол
  • Споделените примери за Delphi и C++Builder улесняват проверката на поведението и в двата езикови стека
  • Статичната интеграция на C библиотеки на трети страни запазва възпроизводимостта на зависимостите за компресиране и изображения
  • Фокусираните помощни API покриват PDF филтри, FlateDecode, LZW, CCITT, маски на изображения, баркодове, създаване на подмножества на шрифтове и работни процеси за съдържание на страници
  • Ограниченията за PDF версия могат автоматично да повишат версията на изхода или да наложат строго съответствие с PDF 1.3/1.4/1.5/1.6/1.7 чрез StrictVersionLock
  • Готови за използване проекти за пакети на Delphi и C++Builder обхващат текущите поколения RAD Studio, включително 13.1 Florence

Последни акценти в библиотеката

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 и излъчват отчети в текстов, JSON, HTML или CSV формат, с профили в стил INI за потискане на приети констатации - готови за CI прегради и групово приемане на документи, като демонстрацията PreflightCLI добавя рекурсивно изпълнение по папки и обобщени дашбордове

Инструменти за формуляри в заредени документи

HasFormFields и FormFieldExists отговарят на въпроси относно формуляри в зареден PDF преди модифицирането му, като стойностите на полетата могат да се четат и записват по индекс или име, а FlattenFormFields вгражда интерактивните полета AcroForm в съдържанието на страницата и отчита колко полета са изравнени - наред с изравняването на XFA-към-AcroForm, което запазва възможността за използване на XFA формуляри във всеки четец

PFX / PKCS#12 подписване в процеса

THotPDF.SignPDFWithPFX(InputPDF, OutputPDF, PFXFile, Password) подписва съществуващ контейнерен PDF с едно повикване, като пълният стек ASN.1, RSA, AES, PKCS#12 и CMS SignedData (RFC 5652) е внедрен изцяло в HotPDF, поради което не се изисква среда за изпълнение на OpenSSL или крипто доставчик на платформата

PAdES дългосрочно валидиране

Работните процеси PAdES B-B, B-T, B-LT и B-LTA са покрити от край до край: създаване на подписи с времеви клейма RFC 3161, речници за дългосрочно валидиране DSS / VRI, подписи с времеви клейма на документи и ограничения на стойностите за семена (Seed Value), като XAdES-в-PDF и налагането на ограничения върху стойностите за семена на подписа са част от същата повърхност

Съответствие с PDF/A, PDF/X и PDF/UA

HotPDF ограничава методите за функции спрямо профилите PDF/A-1 / -2 / -3, PDF/X-1a / -3 / -4 и PDF/UA-1, като повикванията, които биха нарушили избрания профил (прозрачност в PDF/A-1, JavaScript в PDF/A, външни анотации в PDF/X, немаркирана структура в PDF/UA) предизвикват диагностични изключения, вместо тихо да създават несъответстващи PDF файлове

Адаптери за генератори на отчети на трети страни

PDF бекенди за директна замяна за четирите най-често срещани Delphi генератори на отчети: TfrxHotPDFExport (FastReport 4 / FastReport VCL), TQRHotPDFExportFilter (QuickReport), TppHotPDFDevice (ReportBuilder) и dxHotPDFExportReportLinkToFile/Stream (DevExpress ExpressPrinting System, покриваща cxGrid / cxRichEdit / cxScheduler / cxPivotGrid), при което съществуващите дефиниции на отчети работят без пренаписване на оформлението - сменя се само PDF излъчвателят

OpenType GPOS двигател за позициониране

Незадължително позициониране на текст, управлявано от собствените GPOS данни на шрифта: кърнинг по двойки и контекстен за текст отляво наляво и отдясно наляво, позициониране маркировка към основа, маркировка към маркировка и за всеки компонент на лигатура, подравняване при влизане/излизане на курсив, позициониране по разстояние и вертикален кърнинг за вертикални шрифтове, като позиционирането се излъчва със стандартни PDF текстови оператори, така че всеки PDF четец да възпроизвежда същия резултат

Обхват на оформяне на сложни скриптове

Оформянето от страна на производителя изобразява правилно съединен и пренареден текст за арабски (включително блоковете Supplement, Extended-A и Extended-B), сирийски, монголски, нко, адлам, ханифи рохинга, тибетски, деванагари и останалите индийски писмености, явански, тайландски, лаоски, иврит, кхмерски, мианмарски, тай виет и мейтей майек, без да се разчита на модул за оформяне от страна на четеца, като всеки скрипт е незадължителен превключвател, така че съществуващият изход остава идентичен по байтове, докато не бъде активиран, а копирането/поставянето възстановява оригиналните знаци

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

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

Компактен изход на шрифтове

Вградените шрифтови програми винаги са Flate компресирани, шрифт, използван на няколко страници, се вгражда веднъж за целия документ, а етикетите на подмножествата се извличат детерминистично от действително използваните глифове, така че повтарящите се изпълнения да произвеждат идентичен изход, докато незадължителен режим записва чист ASCII текст със стандартни шрифтове като компактен невграден WinAnsi текст, свивайки страница с обикновен текст от стотици килобайти до няколко килобайта

Оформяне от страна на производителя за множество скриптове

Оформянето от страна на производителя преобразува Unicode входните последователности в техните Presentation Forms преди излъчването на 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 + enum 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, а за заместващи GIDs в GSUB без естествена Unicode кодова точка - клъстерни форми на деванагари, стилистични алтернативи, вариационни последователности CJK - методът AssignSyntheticCodepointForGID разпределя кодова точка от Private-Use-Area (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

Пакетните контейнери XFA според PDF 1.7 §12.7.6 / §12.7.8 се пренасят заедно със (или вместо) статичните /Fields чрез AddXFAPacket, като пълната фамилия тригери за полета на формуляри AcroForm (/AA /K Keystroke, /F Format, /V Validate, /C Calculate) е изложена като методи-обвивки, а RegisterAcroFormFont свързва множество Unicode шрифтове към единичен речник на ресурси /DR на AcroForm за многоезични компоненти на формуляри

Създаване на подмножества на шрифтове и CJK PDF файлове

THotPDF.EnableFontSubsetting създава подмножества за TrueType, OpenType-CFF и CID-keyed CFF шрифтове, като същевременно запазва идентификаторите на глифовете за текст Type0 / Identity-H, като CJK PDF файловете, които преди са вграждали 14 MB CID-keyed CFF програми, сега се доставят с размер от 500 KB до 2 MB, без да губят изобразени глифове

Инкрементно запазване с множество подписи

BeginIncrementalUpdate, SaveIncrementalUpdate, MarkDirty и API интерфейсите за контейнери за подписи поддържат инкрементални PDF актуализации само с добавяне и работни процеси с множество подписи, без да пренаписват по-рано подписани диапазони от байтове

Поддръжка на разширени PDF функции

  • Специфични за версията PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7 + избрани PDF 2.0 API прегради за Catalog, ViewerPreferences, анотации, JavaScript, Type0 шрифтове, ToUnicode карти, прозрачност, слоеве и шифриране
  • Прегради за съответствие с PDF/A-1 / -2 / -3, PDF/X-1a / -3 / -4 и PDF/UA-1, които отказват несъответстващи повиквания на функции, вместо мълчаливо да нарушават профила
  • Маркирани PDF структурни дървета с ролеви карти, StructParents, изход ParentTree и структурни елементи за ориентирани към достъпността работни процеси
  • OutputIntents, ICC профили, кутии на страници, ротация, UserUnit, ред на разделителите Tabs, шаблони за запълване, ExtGState алфа, режими на смесване, полутонове (Type 1 / 5 / 6 / 10 / 16), трансферни функции и референции към функции за генериране на черно / премахване на цветовете под него
  • Вградени изображения, мулти-стоп аксиални градиенти, радиални градиенти, свободно оформени / решетъчно оформени триъгълни мрежи със засенчване по Гуро (Gouraud), Coons пач и тензорни пач мрежи, изображения с мека маска за PNG-стил алфа за всеки пиксел и шаблони за запълване за многократна употреба
  • Именувани дестинации, миниатюри на страници, очертаване на ниво страница (цвят, получер, курсив), регистър на именуван JavaScript на ниво документ и пълната фамилия екстри Line / PolyLine / Polygon (надпис, краища на линии, намерение, ефект на границата)
  • Арабското оформяне от страна на производителя обхваща пълната таблица на съединителните класове U+0672-06D5 плюс над 40 статични съпоставяния на арабски 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 за излъчване на специфични за шрифта контекстни глифови IDs, 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) позволява на производителите да излъчват всеки заместващ GID на GSUB (клъстерни форми на деванагари, стилистични алтернативи, вариационни последователности CJK) чрез Private Use Area U+E000-F8FF с огледална интеграция /CIDToGIDMap + /W, като GetCodepointAdvance излага кешираната em-фракция /W за изчисления на пренасяне
  • Двигател за позициониране OpenType GPOS зад незадължителни превключватели за оформяне: кърнинг по двойки, единичен и контекстен (Context / Chained Context) за текст отляво наляво и отдясно наляво, разполагане маркировка към основа / маркировка към маркировка / маркировка към лигатура с точност за отделен компонент при лигатури, курсивно прикачване при влизане-излизане, позициониране по разстояние и вертикален кърнинг vkrn / vpal, приложен към изхода на вертикален текст
  • Оформяне от страна на производителя на сложни скриптове за арабски Supplement / Extended-A / Extended-B, сирийски, монголски, нко, адлам, ханифи рохинга, тибетско натрупване, индийското семейство писмености чрез собствената верига на функции 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 за чист ASCII текст с поддръжка на стандартни шрифтове
  • Текстови полета AcroForm, списъчни кутии, комбинирани кутии, полета за отметка, радио бутони, действия с бутони (включително разширените Named / Hide / Show / ImportData / SubmitForm с контролирани от потребителя /Flags), полета за подписи и генерирани потоци за външен вид (multi-line + comb + Tx + CID-font /AP)
  • Фамилия тригери за полета на формуляри AcroForm (/AA /K Keystroke, /F Format, /V Validate, /C Calculate) с един метод-обвивка на тригер, регистрация на шрифтове с множество Unicode /DR чрез RegisterAcroFormFont, поддръжка на XFA (XML Forms Architecture) контейнери (PDF 1.7 §12.7.6 / §12.7.8) с AddXFAPacket / ClearXFAPackets / XFAPacketCount and прегради за съответствие с PDF/A + PDF/X, плюс изравняване на XFA-към-AcroForm (ApplyXFAAsAcroForm за сурови XDP байтове, FlattenLoadedXFA за вграден формуляр в зареден PDF), което превръща статичния XFA в собствени полета AcroForm, стилове и графики на страници, така че формулярът да остане видим и попълваем в четци без двигател за XFA
  • PDF/UA-1 повърхност за достъпност с маркиран PDF: свойства на маркирани последователности от съдържание според §14.8.4 в BeginTaggedContent (/Lang / /Alt / /ActualText / /E), сетери на атрибути за структурни елементи (/Lang / /E / /T), enum за стандартен структурен тип от Table 333 (THPDFStandardStructureType) плюс типизирано претоварване на AddStructureElement
  • Поддръжка на анотации за открояване на текст, свободен текст, връзки, прикачени файлове, изскачащи прозорци, редигиране, водни знаци, мултимедия, 3D / U3D / PRC, стилове на граници и свързани изскачащи прозорци за коментари
  • Стандартна защита с парола, обработчици за защита AES-128 / AES-256, хеширане по PDF 2.0 R6, шифриране с публичен ключ за получатели на сертификати чрез предоставени от викащия пликове PKCS#7 и безопасно за двоични данни обработване на не-ASCII имена на оцветители / шрифтове
  • Цифрови подписи PAdES B-B, B-T, B-LT и B-LTA с времеви клейма RFC 3161, речници за дългосрочно валидиране DSS / VRI, подписи с времеви клейма за документи, ограничения на стойностите за семена (Seed Value) и XAdES-в-PDF
  • PFX / PKCS#12 подписване в процеса: пакетният стек ASN.1, RSA, AES, PKCS#12 и CMS SignedData на библиотеката подписва съществуващ контейнерен PDF с едно повикване без каквато и да е зависимост от OpenSSL или криптографски функции на платформата
  • PDF бекенди за директна замяна за FastReport 4 / FastReport VCL, QuickReport, ReportBuilder и DevExpress ExpressPrinting System, така че съществуващите дефиниции на отчети да се извеждат чрез HotPDF без пренаписване на оформлението на отчетите

Високопроизводителен стек за компресиране и изображения

Текущите версии на HotPDF използват zlib-ng в zlib-съвместим режим за включения Flate бекенд, като потоците на страници, потоците на вградени шрифтове, ToUnicode CMaps, Flate потоците от изображения, изходите, свързани с TIFF, и помощните модули FlateDecode се насочват през HotPDF zlib слоя

Компилациите за Win64x и диагностичните MSVC Win64 zlib-ng компилации включват диспечиране на процесора по време на изпълнение за пътеки SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ и AVX2 с запазени общи алтернативи, докато Win32 остава на общия zlib-ng OMF набор от обекти чрез bcc32c, а Win32 JPEG и TIFF обектите продължават да използват класическия bcc32 OMF път

Стандартните JPEG работни процеси използват включения libjpeg-turbo 3.1.90 набор от обекти чрез съвместимото с libjpeg API, предоставено от HPDFJpeg.pas, като собствените компилации за Win32, Win64 и Win64x вече включват съответните NASM SIMD набори от обекти, а същият собствен 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.

Съдържание на пакета

Типични случаи на употреба