HotPDF Бележки към изданието
История на версиите за видими за потребителите функции на HotPDF, корекции, актуализации за съвместимост и промени в документацията
Note: Only the latest 500 change records are kept
Last release
- Latest version: 2.748.6; Release date: 2026-09-07
Version 2.748.6
Fixed
- Поправено е subsection на cross-reference, който декларира повече записи, отколкото таблицата съдържа, да обхожда целия деклариран брой, макар да не е останало нищо за четене, което правеше отхвърлянето на 40-байтов malformed файл да отнема десетки секунди
- Поправено е job runner-ът да губи всички резултати, които вече е произвел, когато операция хвърли изключение, и HTML import-ът да губи picture обект, когато stream-ът около него не може да бъде създаден
Version 2.748.5
Fixed
- Поправено е PKCS#12 файл с парола извън ASCII да не се отваря: паролата е UTF-8 байтов низ, но се разширяваше байт по байт вместо да бъде декодирана, така че извеният ключ беше грешен за всеки символ извън ASCII. Файлове, защитени със съвременната PBES2 схема, не бяха засегнати — затова двете се държаха различно
- Поправено е signature batch validator-ът и revocation evidence cache-ът да вдигат access violation вместо собствена грешка при конструиране с невалидна опция, защото деструкторът се изпълняваше преди членовете, които той освобождава, да бъдат създадени
- Поправено е evidence download задачата да се проваля в деструктора си, когато аргументите ѝ бъдат отхвърлени, тъй като проверките се изпълняваха преди самият thread да бъде създаден
- Поправено е cloud-signature provider-ът да кодира algorithm identifier, чийто втори arc надхвърля 39, а malformed идентификатор вече вдига собствената грешка на provider-а вместо грешка от конверсия
- Certificate и signature container-ите вече отхвърлят вложен елемент, който декларира дължина, излизаща отвъд елемента, който го съдържа, така че онова, което се валидира, и онова, което подписът покрива, вече не могат да се разминават
- Стойностите на private key се изчистват от паметта след RSA подписване, вместо да си остават на heap-а за следващото заделяне
Version 2.748.4
Fixed
- Поправено е зареждането на Type 1 шрифт да чете всяко свойство от първия ред на font програмата: token списъкът се презареждаше, без да бъде изпразван, така че низовете за version, family и weight, stem hint-овете и дължината на charstring ключа всички идваха от стари token-и. Type 1 шрифтовете вече докладват собствените си metadata
- Поправено е дължината на charstring ключа да се пази като указател към вече освободен низ и да се използва без range check; сега се съхранява като стойност и се ограничава до диапазона, който форматът позволява
- Поправено е не-вграден шрифт винаги да се връща към системния default face: търсеното име на face се копираше байт по байт в wide-character font записа, така че нито един инсталиран family изобщо не съвпадаше
- Поправено е парсването на вградени TrueType и OpenType да чете след края на съкратена font програма при декодиране на glyph outline-и, аргументи на composite glyph и CFF таблицата на OpenType container, а malformed character map вече не иска отрицателен glyph масив
- Поправено е препълване на декларираните номера на обекти в cross-reference таблици и stream-ове: запис, претендиращ за номер близо до лимита на integer, се увиваше в отрицателен индекс и се записваше извън таблицата, а деклариран брой обекти или
/Size, далеч по-голям от капацитета на файла, оразмеряваше масивите на loader-а само въз основа на тази претенция
Version 2.748.3
Fixed
- Поправено е Data Matrix да отхвърля валиден вход: размерът на символа се оценяваше, като броят цифри се делеше на две, но само съседни цифри споделят code word, така че текст като
1a2a3aизбираше символ, твърде малък за собствените му данни, и кодирането се проваляше - Поправено е четири-байтовите UTF-8 символи в XFDF, като emoji, да се декодират към грешен surrogate pair, а неразпознат байт вече не поглъща трите символа след него
- Region записите на enhanced metafile вече ограничават броя правоъгълници по размера на записа, вместо да вярват на броя в region header-а, който можеше да чете далеч отвъд записа
- PNG изображения, чиято декларирана ширина по височина надхвърля адресируемия диапазон, се отхвърлят още на header-а вместо да заделят pixel буфер с отрицателна дължина
- High-quality resampling на изображения вече докладва заявка извън диапазона вместо да препълни размера на междинния си буфер
- WebP meta prefix изображение, което претендира повече entropy групи, отколкото пиксели има, се отхвърля вместо да задели стотици мегабайта prefix таблици от вход от няколкостотин байта
- Поправени са leak-ове по failure пътищата на Aztec кодиране, WebP bitmap декодиране и object-stream decode worker pool-а, където частично изграден обект се изоставяше, когато по-късна стъпка хвърли изключение
Version 2.748.2
Fixed
- Поправено е QR Code символът да губи последните битове на code word: обхождането при module placement прескачаше най-лявата колона, така че опашката на последния error correction block никога не се записваше в символа
- Поправено е QR terminator-ът да запълва целия остатък от data block с нулеви битове, което не оставяше място за pad code word-овете 0xEC / 0x11, изисквани от ISO/IEC 18004; символ version 1 носеше шест нулеви code word-а вместо това
- Нов тест прочита генерирания символ обратно от неговите модули, така че data block, pad code word-овете, error correction block, mask-ата и placement-ът се проверяват срещу стандарта, а не срещу собствения изход на encoder-а
Version 2.748.1
Fixed
- Поправени са три parser-а да блокират на malformed вход вместо да го докладват: object parser-ът при
>>вътре в масив или]вътре в dictionary, CMap reader-ът при stray скоба или фигурна скоба, и XFDF reader-ът при конструкция без tag име (например document type declaration) или stray байт между атрибути. Всеки от тях спираше да придвижва курсора си, така че един-единствен неочакван байт превръщаше parse-а в безкраен цикъл - Поправено е CDATA секция в XFDF да се чете като markup: съдържанието ѝ вече се приема за текст на елемента, а маркерът на секцията се измерва коректно вместо да поглъща първия символ
- Поправено е дължина на WebP chunk близо до 2 GB да препълва size проверката, така че копието на payload-а четеше след края на file буфера; дължините на chunk-овете вече се проверяват за диапазон в 64-битова аритметика
- Поправено е PNG chunk с дължина 0xFFFFFFFF да освобождава chunk буфера, докато chunk-ът продължаваше да докладва декларираната си дължина, което оставяше следващи четения да сочат към освободена памет; прекалено дълги chunk-ове се отхвърлят
- Поправено е CCITT fax декодирането да препълва изчислението на размера на row буфера при много големи декларирани page геометрии, което можеше да пише след буфера; row store-ът вече е ограничен и декодирането спира чисто на лимита
- Поправено е CCITT encoder-ът да чете един байт след края на scan линия при ширини, кратни на осем
- Поправено е четенето на comment записите на enhanced metafile през 32-битов съкратен указател на 64-битови build-ове, което четеше несвързан адрес за всеки EMF с GDI comment
- Поправено е 8-битови изображения с по-малко от 256 palette записи да публикуват неинициализирана памет като опашка на цветовата си таблица, а таблицата вече декларира истинския си брой записи
- Поправено е дълбоко вложени BER структури с неопределена дължина да изчерпват стека при parse на signature или certificate container; вложение над 128 нива се отхвърля
Version 2.748.0
Fixed
- Поправена е error correction на всички 2D barcode, които библиотеката чертае: QR Code, Data Matrix, PDF417 и Aztec изграждаха generator polynomial-а си от свободния член нагоре, но делеха по него, сякаш водещият член идва първи, така че всеки символ носеше check words, които нито един коректен reader не приема. Check words вече съвпадат с решените примери в ISO/IEC 18004, ISO/IEC 16022 и ISO/IEC 15438
- Поправено е Aztec символът да губи payload-а си: encoder-ът дели code word масива на място, а caller-ът излъчва същия масив, така че message words бяха презаписани от деленето и символът не носеше нито данните, нито валидно mode message
- Поправено е generator polynomial на Data Matrix да започва корените си една степен по-ниско, което произвеждаше различен полином от предписания в ISO/IEC 16022 Annex E
- Поправен е finder pattern на Data Matrix: плътното L вече е лявата колона и долният ред, а редуващият се clock track — горният ред и дясната колона, като всеки започва тъмен в ъгъла, който споделя с L. Двете бяха разменени, така че reader-ите не можеха да установят ориентацията на символа
Version 2.747.4
Fixed
- Поправено е редактирането на зареден документ да записва PDF числа със системния десетичен разделител: page stitching, redaction на правоъгълници, text и image stamp-ове, композитни форми за воден знак и ellipse appearance-и винаги изписват точка, така че документи, редактирани на locale с десетична запетая (например немски или френски Windows), повече не съдържат content stream-ове, които viewer-ите отхвърлят
- Поправено е зареждането на Type 1 шрифт да зависи от системния locale: реалните числа на FontMatrix, BlueValues, stem hint-овете и charstring вече се парсват като PostScript числа с точка, така че PFB шрифтовете запазват метриките и outline-ите си на системи с десетична запетая вместо тихомълчиво да се сриват
- Поправено е парсването на размера и цвета на шрифта в default-appearance (
/DA), на HTMLwidthиsizeатрибутите, на резултатите от FormCalc и на JSON числата от job да следва locale-а на процеса; те вече използват инвариантния формат и в двете посоки - Поправено е вграденото чертане на barcode да записва правоъгълниците на бар-овете през формат, зависещ от locale, което произвеждаше невалиден content stream на система с десетична запетая
- Free Pascal build-овете вече парсват и форматират operand-ите на content stream, метриките от text extraction и JavaScript числата с инвариантния формат, съответствайки на Delphi build-овете вместо да се връщат към конверсията, зависеща от locale
- Number writer-ът вече не презаписва десетичния разделител в глобалните форматни настройки на хост приложението при всяко извикване, което променяше начина, по който останалата част от програмата форматираше собствените си числа, и не беше безопасно, когато няколко thread-а произвеждат документи едновременно
Version 2.747.3
Fixed
- Поправено е редактирането на зареден документ да записва PDF числа със системния десетичен разделител: page stitching, redaction на правоъгълници, text и image stamp-ове, композитни форми за воден знак и ellipse appearance-и винаги изписват точка, така че документи, редактирани на locale с десетична запетая (например немски или френски Windows), повече не съдържат content stream-ове, които viewer-ите отхвърлят
- Поправено е зареждането на Type 1 шрифт да зависи от системния locale: реалните числа на FontMatrix, BlueValues, stem hint-овете и charstring вече се парсват като PostScript числа с точка, така че PFB шрифтовете запазват метриките и outline-ите си на системи с десетична запетая вместо тихомълчиво да се сриват
- Поправено е парсването на размера и цвета на шрифта в default-appearance (
/DA), на HTMLfont sizeатрибутите, на резултатите от FormCalc и на JSON числата от job да следва locale-а на процеса; те вече използват инвариантния формат и в двете посоки - Free Pascal build-овете вече парсват и форматират operand-ите на content stream, метриките от text extraction и JavaScript числата с инвариантния формат, съответствайки на Delphi build-овете вместо да се връщат към конверсията, зависеща от locale
Version 2.747.2
Added
- Добавена е Free Pascal Win32 поддръжка: Lazarus пакетът вече се build-ва както за
i386-win32, така и заx86_64-win64чрез специализирани build entry point-и, smoke suite-ите приемат аргумент за архитектура, а проблемите с 32-bit компилатора и C symbol linking са поправени; създаването на PDF, зареждането, Flate компресията, AES криптирането и обработката на CBZ документи са покрити и на двете цели
Version 2.747.1
Fixed
- Поправено е retry-ът с ротарирана маска на вградения barcode декодер да оставя остарели байтове в недокоснатите клетки на ротарираната маска, което измисляше фантомно мастило и правеше завъртяните на четвърт оборот Code 39 символи нечетими; ротираният буфер вече се нулира изрично, така че завъртяни Code 39 снимки и сканирания се декодират през rotation retry
Version 2.747.0
Added
- Добавен е WebP image import:
AddImageFromFileвече приема.webpфайлове чрез вграден беззагубен (VP8L) декодер, имплементиращ RFC 9649 — канонични prefix кодове, spatial meta prefix кодове, LZ77 backward references с neighborhood distance картата, color cache-а и всичките четири inverse трансформации (predictor, color, subtract-green, color indexing с pixel bundling); lossy VP8 кадрите се отхвърлят с ясно съобщение
Version 2.746.0
Added
- Вграденият barcode декодер вече чете QR символи във всяка от осемте ориентации, в които може да пристигне снимана или сканирана страница: finder pattern-ите разпознават липсващия ъгъл, а семплираната module матрица се ротира или огледализира в очакваната подредба преди декодиране, така че завъртанията на четвърт оборот и огледалните снимки се четат без pre-processing
Version 2.745.0
Added
- Добавена е eIDAS оценка на qualified сертификати за заредени подписи: GetLoadedSignatureQCStatements докладва ETSI EN 319 412-5 QCStatements на сертификата на подписващия — QcCompliance, QcSSCD, QcType стойности, QcLimitValue валута/сума/експонента и PDS локациите — плюс TS 119 495 PSD2 роли на платец и получател, и повдига qualified-signature евристика, когато QcCompliance и QcSSCD са заявени едновременно (решението за QTSP trust остава у повикващия)
Version 2.744.0
Added
- Добавено е N-up imposition за заредени документи: ComposeLoadedPagesNUp преподрежда всяка страница върху grid-композирани листове с размера на source хартията (2-up, 4-up, 6-up, до 16x16) за print-ready изход, поглъща
/Rotateна всяка страница в матрицата на позициониране, споделя page ресурсите с композираната форма и по избор рисува тънки клетъчни рамки с регулируем gutter
Version 2.743.0
Added
- FlattenLoadedAnnotations вече запечатва анотации без appearance stream, вместо да ги прескача тихо: widget-ите първо получават генериран field appearance от стойността на полето (случаят
/NeedAppearances, типичен за формуляри, отпечатани от браузър), така че въведената стойност оцелява в page съдържанието - Markup анотации без
/APполучават синтезиран appearance, рисуван от собствените им свойства — FreeText и Stamp текст със/DAстилизация и/Qподравняване, Square и Circle фигури с/C//ICцвят и/BSширина, Line и Ink щрихи и Highlight / Underline / StrikeOut / Squiggly quad markup, зачитащи/QuadPointsи/CAopacity - Скритите анотации (флагът
/Fhidden) остават анотации, когато нямат appearance, защото запечатването на невидима бележка би я направило видима
Version 2.742.0
Fixed
- Поправено е провалът на Free Pascal package build-овете от 2.738.0 насам: декларациите на членове за LTV evidence и seed value бяха поставени в Delphi-only conditional блок, докато имплементациите им бяха безусловни, така че Free Pascal пакетът вече не се компилираше; имплементациите сега носят същия conditional и пакетът отново се компилира
Version 2.742.0
Added
- HTML импортът вече подрежда таблиците върху пълна occupancy решетка, така че
rowspanиcolspanклетките заявяват своите колони коректно, а следващите редове прескачат заетите слотове, вместо да изместват наляво - Височините на редовете на таблицата идват от пренасянето на текста на клетката при собствения ѝ шрифт, вместо от оценка по брой знаци, така че смесеното тясно и широко съдържание вече не произвежда преливащи или прекалено големи клетки
- Широчините на колоните следват
<col>width hint-и и per-cell width атрибути, а заглавните редове, маркирани с<thead>(или водещи редове само от<th>), се повтарят в горната част на всяка продължена страница, когато таблица пресича page break - rowspan група се запазва цяла при пренасяне през страници: редовете, съединени от обхващаща клетка, минават заедно на следващата страница, така че обхващащата клетка никога не се реже
Version 2.741.0
Fixed
- Поправено е Free Pascal build-овете да прекратяват изпълнението вместо да докладват грешка, когато документ се нуждае от някой от codec-ите, които тези build-ове не линкват: отваряне на TIFF, декодиране на JPEG 2000 или JBIG2 изображение, четене на progressive или намален мащаб JPEG, прилагане на ICC цветова трансформация или заявка за Zopfli рекомпресия прекратяваха процеса направо
- Всяка от тези операции вече се проваля по начина, който повикващият вече очаква, така че документ, използващ една от тях, се зарежда с пропусната функция, вместо да повали приложението
Version 2.741.0
Added
- Добавено е извличане на текст по структурен ред: ExtractLoadedPageStructureText обхожда дървото от структури на документа в реда на създаване (ISO 32000-1 14.8.4) и конкатенира marked-content run-овете на страница по MCID, така че tag-нати документи като държавни формуляри и достъпни публикации извличат своя авторитетен ред на четене вместо геометрично предположение; глифовете, които дървото никога не заявява, попадат в geometric tail и се броят в untagged отчета
Version 2.740.0
Fixed
- Поправена е загубата на прозрачност на цветните глифове във Free Pascal build-ове: вградените цветни битмапи се четяха през път, който изхвърля alpha канала, така че всеки emoji или color font глиф се рисуваше като непрозрачен правоъгълник. Битмапите вече запазват своя per-pixel alpha
Version 2.740.0
Fixed
- Активирано е P-384 ECDH key agreement: финалното условно изваждане в CIOS Montgomery умножението сравняваше с P limb плюс borrow, което се превърта към нула при all-ones high limbs на P-384 / P-521 простите числа и тихо взимаше грешен borrow; сравнението вече открива borrow без преливащото събиране и P-384 споделената тайна съвпада с OpenSSL reference векторите byte по byte
Version 2.739.0
Added
- Free Pascal build-овете вече шифроват и дешифроват документи: AES entry point-ите се обслужват от собствената FIPS-197 имплементация на библиотеката вместо да докладват unsupported-operation грешка, така че AES-128 и AES-256 защитени файлове могат да се създават и отварят там
- AES-GCM шифроване и дешифроване, включително streaming контекстът, използван за големи payload-и, са налични във Free Pascal build-ове
- Free Pascal smoke тестът вече проверява шифъра срещу FIPS-197 known answer, упражнява PKCS#7 и GCM round trips и създава и презарежда AES-256 защитен документ с отхвърляне на грешна парола
Version 2.739.0
Added
- Добавена е CSS2.1 абзацна типография в HTML5 import engine-а: text-align (с legacy align атрибут и mapping на center тага), letter-spacing и word-spacing чрез PDF Tc / word-space операторите, text-indent за отстъпи на първи ред и text-decoration underline / line-through правила, така че съществуващите web и email HTML импорти запазват центрираните си заглавия, отстъпите и подчертаванията
- Разширен е вграденият QR декодер отвъд version 1: version-ът на символа вече се извежда от finder геометрията чрез делимост на решетката (version 2-40 с чист module grid се декодират), лимитът на дължина в byte mode следва ISO/IEC 18004 Table 7 капацитета за version, а function-module картата покрива alignment patterns и version information блокове за по-високи символи
Version 2.738.0
Added
- Free Pascal build-овете вече компресират и декомпресират документи нативно: deflate codec-ът се осигурява от вграден backend върху Pascal zlib имплементацията, която идва с Free Pascal, така че FlateDecode съдържание вече не докладва unsupported-operation грешка
- Компресирани документи могат да се създават и презареждат под Free Pascal със настройката за компресия по подразбиране, а cross-reference потоци, object потоци, вградени файлове и компресирано page съдържание всички се декодират там
- Backend-ът покрива zlib и raw deflate wrapper-ите, gzip wrapper-а и автоматичното разпознаване на header, така че SVG импортът и multi-window-size decompression fallback-ът се държат както под Delphi
- Free Pascal smoke тестът вече верифицира codec-а чрез wrapper и checksum self тест плюс round trip с компресиран документ
Version 2.738.0
Added
- Добавено е доизграждане на веригата чрез AIA caIssuers: HPDFFetchAIAIntermediates обхожда access-method 1.3.6.1.5.5.7.48.2 endpoint-ите на CMS сертификатно множество през транспорта на повикващия (голите DER и PEM тела се декодират еднакво), а опцията за валидация FetchMissingIntermediates подава извлечените intermediates в изграждането на пътя, така че подписи от cloud-signer с единствен end-entity сертификат се валидират, вместо path building-ът да се проваля
- Добавено е LTV включване с едно извикване: PopulatePAdESLTVEvidence обхожда всеки зареден подпис, тегли intermediates плюс OCSP/CRL доказателства онлайн и записва материала в document DSS, като надгражда свеж B-B подписан документ до B-LT без ръчно сглобени evidence масиви
- Добавено е налагане на seed value при подписване: CheckLoadedSignatureSeedValue чете /SV речника на signature поле и проверява кандидат SubFilter, DigestMethod, Reason и DocMDP profile срещу ограниченията му със force-bit семантиката на ISO 32000-1 12.7.5.5, така че ограничения от автора на формуляра се спазват преди поставянето на подписа
Version 2.737.0
Added
- Добавена е строга проверка при запис чрез свойството VerifySavedOutput: след записването нова reader инстанция с изключено възстановяване на кръстосаните препратки презарежда файла, така че повредената сериализация вдига изключение на мястото на извикването, вместо да излезе на следващия консуматор
- Разширен е ReproducibleOutput за шифровани документи: AES-CBC потоците използват статичната 14*(1+i) IV конвенция, key material и солите се извеждат детерминистично, а каноничният document ID нормализира променливите Info timestamps, което дава byte-идентични шифровани записа за regression pipeline-и
Version 2.736.0
Added
- Добавени са висококачествено resampling и монохромно dithering чрез новата единица HPDFResample: separable Catmull-Rom bicubic и Lanczos3 ядра заменят GDI stretch семантиката за downsample на изображения чрез свойството ImageDownsampleKernel, а RenderOutputDither прилага Floyd-Steinberg error diffusion след композицията на страницата, така че print-preview изходът запазва фотографските детайли в чисто черно и бяло
Version 2.735.2
Fixed
- Поправено е подаването на адреса на buffer променливата вместо на самия буфер от Flate декомпресионните потоци при допълване от source потока, което разваляше паметта на всяко четене и можеше да срине процеса; засегнати са зареждането на компресирани документи, inflate stream класовете и compress/decompress stream помощниците
Version 2.735.1
Fixed
- Поправено е разтегливите XFA полета без data source да се свиват на един ред при flattening: височината им вече се измерва от текста, който самият template декларира, защото точно той се показва в такова поле. Поле, обвързано с празни данни, продължава да се мери като празно
Version 2.735.0
Added
- Free Pascal build-овете вече покриват цялата библиотека: всяка единица се компилира с FPC 3.2.2 и Lazarus, докато преди това само основният път за създаване и зареждане го правеше
- XPS, EPUB и CBZ контейнери могат да се импортират под Free Pascal чрез вграден read-only ZIP четец, който обслужва ZIP64 размери, stored и deflated записи, CRC проверка и традиционно шифровани записи със същия password callback като Delphi пътя
- XFA form flattening, FormCalc изчислителният engine, widget runtime-ът, компонентите за преглед на документи, Type 1 font handler-ите, HTML импортът, проверката на подписи и job runner-ът се компилират във Free Pascal build-ове; flattening-ът на XFA пакетите на зареден документ допълнително изисква deflate codec-а, който тези build-ове не линкват
Fixed
- Поправена е 64-битовата byte размяна в PNG helper единицата, която връщаше грешни стойности на Win64 и беше оставила единицата изцяло извън build-а
Version 2.735.0
Added
- Добавено е откриване на липсващи глифове по време на рисуване: свойството TrackUnresolvedGlyphs записва всяка code точка, която щеше да се нарисува като .notdef tofu квадрат през активния Unicode шрифт, извиква събитието OnUnresolvedGlyph при всяка находка и не пипа нерегистрирани pure-GDI документи
- Добавена е поддръжка на legacy kern таблици: RegisterUnicodeTTF прихваща kern таблицата от епохата на Apple/GDI, а излъчването на kerning се обръща към нейното format-0 binary търсене по двойки, когато шрифт няма GPOS kern lookup-и, което възвръща класическото разстояние между двойки в шрифтове като стандартния Arial
- Добавен е per-run font fallback в подредбата на абзаци: WideTextOutBox вече разделя всеки пренесен ред на code точки, които текущият шрифт не може да картира, и рисува всеки run в резолвирания му fallback шрифт, така че смесени латински, emoji и CJK абзаци се рендират без tofu, когато са регистрирани fallback вериги
Version 2.734.0
Added
- Добавена е инфраструктура за RFC 3161 time-stamp заявки: HPDFRFC3161BuildRequest излъчва DER TimeStampReq с прясно positive-INTEGER nonce, опционален policy OID и certReq, а HPDFRFC3161ParseResponse декодира PKIStatusInfo header-а и извлича token-а, така че TSA transport callbacks са три реда вместо курс по DER
- Добавена е ISO/TS 32002 developer extension декларация (THotPDF.EnsureISO32002Extensions), покриваща EdDSA signature алгоритми и допълнителните ECDSA криви в PDF 2.0 документи, idempotent и version-gated като 32001 SHA-3 декларацията
Version 2.733.0
Added
- Добавено е преносимо key agreement с X25519 и X448 Montgomery ladder плюс P-256 / P-521 NIST-curve ECDH с CIOS Montgomery умножение, което позволява key-agreement (KARI) public-key получатели да се създават и разгръщат изцяло в процеса; RFC 7748 и OpenSSL-генерирани reference вектори заключват ladder поведението в regression suite-а
- Добавени са HPDFUnwrapKeyAgreementRecipientEnvelope заедно с entry point-ите AddPubSecAgreementKeyMaterial и AddPubKeyAgreementRecipientWithSecret, така че документи, шифровани с ECDH / X25519 / X448 получатели, могат да се отварят с private scalar на получателя и да се шифроват без външен ECDH инструментариум
Version 2.732.0
Changed
- Записите вече насочват serializer изхода през 1 MiB buffered write поток, като свиват per-token Write извикванията на object header-и, dictionary ключове и xref редове в batched pushes към файлови дестинации
- Payload-ите на cross-reference поток прилагат PNG Up prediction (/DecodeParms /Predictor 12) преди FlateDecode и свиват free-list дупките чрез /Index подсекции, което смалява xref контейнерите на всеки PDF 1.5+ документ и при разредени обектни диапазони
- Свойството CompressionLevel вече избира и Flate усилието на cross-reference потока и object-stream контейнерите, така че clMaximum произвежда по-малки структурни потоци при запис
Fixed
- Ширините на /W полетата на cross-reference потока вече се адаптират към реалния offset диапазон, вместо фиксираната [1 4 2] подредба, чийто Cardinal cast тихо отрязваше offset-и над 4 GiB в повреден изход
Version 2.731.0
Changed
- Преработен е вграденият template-matching OCR с glyph извличане по connected компоненти, grayscale coverage оценяване спрямо кеширани multi-font шаблони, Otsu бинаризация с local-window fallback, bimodal gap разделяне на думи, базови линии по дума, отхвърляне на speckle шум и разширената 62-знакова азбука, която разпознава mixed-case ASCII текст чрез height клъстеризация на ниво ред и preference по case контекст
Version 2.730.0
Added
- Добавена е Win64 поддръжка за Free Pascal 3.2.2 и Lazarus 4.6, включително runtime package, reproducible build скрипт, compatibility слой и non-GUI create-and-reload smoke тест; нативните static codec интеграции остават само за Delphi и докладват изрична unsupported-operation грешка във Free Pascal build-овете
Version 2.729.0
Added
- Добавен е host-neutral динамичен XFA widget runtime с Unicode редактиране, focus и hit тестване, instance-aware binding, атомарна валидация и изчисление, ограничен reflow и read-only factory за заредени документи, която запазва source XFA
Version 2.728.0
Fixed
- Коригирано е XFA intrinsic измерването и текстовото продължение да запазват изрично празни и изчислени стойности, да използват binding контекста на всяко поле или повторен ред, да пазят breakAfter действия, да избягват колизии на synthetic имена и да налагат кеширан глобален measurement бюджет
Version 2.727.0
Changed
- XFA подредбата вече прилага intrinsic минимални и максимални размери, измерва growable полетата по обвързания им текст и атомарно разделя подходящото textEdit съдържание между content области и страници с read-only continuation полета и ограничени текстови, fragment и measurement бюджети
Version 2.726.0
Added
- Добавени са пълни NChannel process и spot атрибути, mixing hint-и, ограничени PDF 2.0 CxF/X-4 спектрални ink потоци и consistency проверки на ниво документ за spot tint дефиниции и външни output-intent цветни таблици
Version 2.725.0
Added
- Добавен е thread-safe детерминистичен SIMD scanline render backend, който прави preflight на поддържаните rectangle display списъци, записва финалната bitmap повърхност на vector блокове без междинно bitmap копие и връща точни причини за отказ по заявка през съществуващия software fallback и telemetry pipeline
Version 2.724.0
Changed
- Разширен е ограниченият нативен FormCalc evaluator с общи SOM node-set агрегации, смесени scalar и node-set аргументи, вложени числови и string извиквания и детерминистични selection, string, тригонометрични, логаритмични и конверсионни функции при съществуващите operation, array, depth, time и output бюджети
Version 2.723.0
Changed
SubsetLoadedFontsвече безопасно подбира subset от вградени Type 1 PFB, split binary и hex PFA програми, запазва рекурсивните TrueType composite зависимости и затваря COLR v0/v1 outline зависимости, като пази цветовите, bitmap, variation и shaping таблици
Version 2.722.0
Added
- Добавени са ограничени password callbacks за класически ZIP-шифровани XPS, EPUB и CBZ записи, включително retry лимити на запис, проверки за отмяна, credential обработка само в паметта и fail-closed отхвърляне на недостъпно, невалидно или неподдържано шифроване
Version 2.721.0
Changed
DownsampleLoadedImagesвече преоразмерява поддържаните 8-битови Separation и DeviceN image семпли директно в component пространство и запазва оригиналния граф на цветните пространства, tint transform, оцветителите,/Decodeдиапазоните и overprint семантиката при запис и повторно зареждане
Version 2.720.0
Added
- Добавени са ограничени built-in recognition overloads за висококонтрастен uppercase ASCII OCR, хоризонтален Code 39 и чисти, ориентирани по осите QR version 1 byte-mode символи, което позволява searchable text слоеве и barcode декодиране на заредени страници без engine, подаден от повикващия, докато двусмисленият или неподдържан вход отказва затворено
Version 2.719.0
Added
- Добавено е ограничено JPEG 2000 доразработване по resolution и quality layer чрез
THPDFJpeg2000Decoder.LoadProgressiveFromByteArray, плюс multi-layer кодиране чрезTJpeg2000Bitmap.QualityLayers, с идентични финални пиксели за LRCP, RLCP, RPCL, PCRL и CPRL progression подредби
Version 2.718.0
Changed
- Вградени са пълните UniJIS, UniGB, UniCNS и UniKS UCS2 и UTF16 хоризонтални и вертикални CMaps, включително supplementary скалари и стандартни вертикални настройки по подразбиране, така че CJK извличането на текст и геометрията вече не зависят от външни Unicode mapping файлове или догадки с половин em
Version 2.717.0
Added
- Добавени са изрични linearized shared-object зависимости по диапазони и range-arrival redraw планировчик, така че страниците могат да се рисуват преди пристигането на всички опционални зависимости и да се прерисуват точно когато новодостъпните данни променят резултата
Version 2.716.0
Added
- Добавен е ограничен repair на обектния граф за actionable preflight находки в xref, trailer, каталог, дърво от страници и дърво от имена, с валидиран transaction commit и пълен rollback при unsafe или двусмислен вход
Version 2.715.0
Added
- Добавени са PDF 2.0 encrypted payload wrapper-и, при които видимото съдържание на документа остава четимо преди автентикация, докато имена, описания и байтове на вградени файлове остават защитени до изрично отключване с парола
Version 2.714.0
Changed
- SVG експортът на заредени страници вече излъчва axial и radial градиенти, ограничени PNG представления на mesh засенчвания Type 4 до Type 7 и декодирани inline изображения, без да увеличава съответните skip броячи
Version 2.713.0
Changed
- OpenType SVG цветните глифове вече използват ограничения Form XObject pipeline за дъги, векторни градиенти, opacity, геометрични маски и локално
#idповторно използване, като продължават да отхвърлят скриптове, външни ресурси, изображения и неподдържано активно съдържание
Version 2.712.0
Changed
ReplaceLoadedPageTextвече заменя съвпадения, обхващащиTJstring елементи и масиви, чрез glyph source span-ове, като запазва kerning числата, несъвпадащите prefix-и и suffix-и, несвързаните операнди и оригиналната структура на content stream-а
Version 2.711.0
Added
- Добавена е CFF FontSet
SyntheticBaseрезолюция с наследени Top и Private DICT стойности, CharStrings, charset, Encoding и Local Subrs, плюс детерминистична override семантика и ограничено отхвърляне на невалидно, циклично или прекалено дълбоко наследяване
Version 2.710.0
Added
- Добавен е детерминистичен ограничен избор на Flate predictor чрез
HPDFSelectFlatePredictor, който използва разпределени row семпли, оценка на byte разхода, конфигурируемо CPU претегляне и изрични byte, row и work бюджети
Version 2.709.0
Added
- Добавен е opt-in нативен JBIG2 Huffman symbol-dictionary и text-region изход чрез
THPDFJBIG2Options.UseHuffmanEncoding, включително стандартните DH, DW, BMSIZE, FS, DS и DT таблици, raw collective битмапи, symbol-ID таблици, детерминистично нативно маршрутизиране и pixel-точни decoder round trips, като се запазват arithmetic и MMR настройките по подразбиране
Version 2.708.0
Changed
- Кеширани са арабските и комбинираните presentation-form обратни cmap карти по generation на регистрирания шрифт, което заменя повтарящите се сканирания на U+FB00..U+FDFF и U+FE70..U+FEFF в
ApplyArabicGSUBRefinement,ApplyArabicGSUBContextualRefinementи generic contextual GSUB пътя, като запазва codepoint предимството и shaped изхода
Version 2.707.0
Added
- Добавен е Aztec 2D barcode енкодер (ISO/IEC 24778) чрез
THPDFPage.DrawAztecи самостоятелната единицаTHPDFAztec: high-level кодиране с динамично програмиране с mode latches, shifts и binary-shift run-ове, bit stuffing, Reed-Solomon корекция на грешки над GF(16) до GF(4096), автоматичен избор между compact 15x15..27x27 и full 19x19..143x143 символи и forced-layer контрол за фиксирани размери на символите - Добавен е вертикален assembly на текста на страницата:
THotPDF.ExtractLoadedPageTextи range/stream aggregation API-тите вече групират WMode 1 глифове в колони по origin X на глифа, подреждат колоните отдясно наляво и обхождат всяка колона отгоре надолу, вместо да разкъсват вертикалния CJK текст на редове по глиф
Fixed
- Поправен е паралелният band export, който се проваляше с несъответствие на PNG band широчина на страници с дробни пикселни размери (A4 на 96 DPI): растерният размер вече се закръгля с
Ceilеднакво с band writer-ите, така че доставените tile-ове винаги съвпадат с широчината на енкодера
Version 2.706.0
Added
- Добавен е streaming PNG експорт на заредени страници и banded многостраничен TIFF експорт чрез
THotPDF.SaveLoadedPageToPng,SaveLoadedPageToPngStream,SaveLoadedPagesToTiffBandedиSaveLoadedPagesToTiffStreamBanded, които пишат компресирани image данни ред по ред през band енкодери, така че много големите страници не изискват пълен framebuffer;THPDFBandImageExportInfoдокладва телеметрия за страница, band, ред, worker, памет, изход, време и отмяна
Version 2.705.0
Added
- Добавена е PDF/A финализация в save пътищата за заредени документи:
THotPDF.SaveLoadedDocumentиSaveLoadedDocumentToStreamвече валидиратGTS_PDFA1OutputIntent (наследен от source каталога или току-що регистриран) и излъчватpdfaid:part/pdfaid:conformanceXMP идентификация, когатоPDFAComplianceе зададено, като запазват съществуващ pdfaid packet byte-for-byte при повторен запис - Добавена е консумация на вертикално писане (WMode 1) при зареждане: CIDFont
/W2и/DW2клетъчни метрики вече управляват извличането на текст и рендирането на страниците, като обхождат колоните надолу по y оста на text пространството с вектора за позициониране v1x/v1y вместо хоризонталните/Wаванси
Version 2.704.0
Added
- Добавен е паралелен tile и band рендинг на заредени страници чрез
THotPDF.RenderLoadedPageTilesParallelиTHotPDF.RenderLoadedPageBandsParallel, с row-major callbacks на повикващата нишка, borrowed битмапи, cooperative отмяна, in-flight памет, контролирана от повикващия, peak-memory допускане и ограничен immutable кеш за Type 3 глифове и halftone screen-ове, споделен между изолирани render контексти
Version 2.703.0
Added
- Добавени са ограничени CSC multisign batch-ове за дайджести чрез
THPDFCSCSignatureProvider.SignHashBatch, с един hash-pinned SAD и еднаsignatures/signHashзаявка за подредена batch от един алгоритъм, като се налагат локални и credentialmultisignлимити, строга response кардиналност, синхронно или асинхронно подреждане на резултатите, SHA-256 content-addressed idempotency ключове и replay на завършени batch-ове
Version 2.702.0
Added
- Разширен е
THotPDF.RenewPAdESLTATimestampс certificate, OCSP и CRL доказателства, подадени от повикващия, които се сливат в съществуващия DSS преди новия RFC 3161 document timestamp, запазва всяка по-ранна ревизия byte-for-byte и точно дедупликира validation потоците при последователни подновявания
Version 2.701.0
Added
- Добавен е clause-addressable PAdES baseline и extended profile preflight чрез
THotPDF.PreflightLoadedPAdES, който докладва всяко приложимо изискване със стабилен rule ID, profile, нормативно ниво, клауза от стандарта, PDF път, номер на обект, подписана или текуща ревизия и статус на преминаване, като валидира CMS кардиналности, ESS препратки на сертификата на подписващия, ограничения на signature речника, byte-range покритие, trusted време, DSS доказателства и покритие на document timestamp
Version 2.700.0
Added
- Добавено е end-to-end PFX / PKCS#12 зареждане на частни ключове и CMS подписване на документи с ECDSA, Ed25519 и Ed448, включително named-curve CNG ECDSA, опционален OpenSSL 3 PureEdDSA, RFC 8410 декодиране на ключове, RFC 8419 правила за дайджести и параметри, SHAKE256 с 512-битов изход за Ed448, автоматичен избор на key алгоритъм и строго certificate-to-key сдвояване
Version 2.699.0
Added
- Добавен е детерминистичен multi-identity избор на PFX / PKCS#12 credential чрез
HPDFEnumeratePFXIdentities,HPDFParsePFXByLocalKeyIDиTHPDFCMSSignOptions.PFXLocalKeyID, включително строги single-valuedlocalKeyIdиfriendlyNamebag атрибути, public-key свързване, рекурсивни safe-content bag-ове, ограничена диагностика за двусмислия и цикли и автоматично вграждане на съответстващи intermediate и root certificate вериги с точна DER дедупликация
Version 2.698.0
Added
- Разширено е in-process PFX / PKCS#12 PBES2 декодирането с AES-128-CBC и AES-192-CBC плюс PBKDF2 HMAC-SHA-384 и HMAC-SHA-512 PRF-и, включително специфична за шифъра опционална
keyLengthвалидация и ограничени проверки на salt, итерации, IV и padding, като се запазва съвместимост с AES-256-CBC и HMAC-SHA-1 / SHA-256
Version 2.697.0
Added
- Добавено е съобразено със спецификацията наследяване на XPS и OpenXPS Canvas
FixedPage.NavigateUri, така че descendantPath,Glyphsи вложени Canvas визуали получават scoped URI, освен ако самите не го презапишат, като запазва external, mail, package-page и percent-decodedLinkTargetдействия през трансформации, вложени клипове, изолирани opacity групи, потиснато reusable-visual, възстановяване след вложени override-и и съществуващите link, URI, отмена и unsafe-scheme лимити
Version 2.696.0
Added
- Добавени са ограничени нативни XPS и OpenXPS Canvas transparency групи, така че
Opacityи плътните, gradient или imageCanvas.OpacityMaskстойности композират припокриващи се дъщерни визуали веднъж през изолирани DeviceRGB Form XObjects, със сгъната uniform alpha, споделени variable-alpha soft маски, вложени групи, трансформирани клипове, пренос на ресурси, запазени линкове и fail-closed обработка на повредено, неподдържано, сингулярно или прекалено голямо съдържание
Version 2.695.0
Added
- Добавена е ограничена нативна XPS и OpenXPS
Canvas.Clipконверсия за abbreviated геометрия, локални или remoteStaticResourcePathGeometryстойности, директни property елементи, структурирани line, Bézier, quadratic и arc фигури, geometry трансформации, празни клипове и вложениEvenOddилиNonZeroизрязвания чрез PDFW*илиW, с изрязани navigation граници, лимит за parse от 100,000 стойности и fail-closed обработка на повредени или сингулярни трансформации
Version 2.694.0
Added
- Добавена е ограничена нативна XPS и OpenXPS навигация за трансформирани
PathиGlyphsвизуали, която запазва HTTP, HTTPS и mail линковете като PDF URI анотации и резолвва package-relative страници и percent-decodedLinkTargetфрагменти като forward или backward PDF GoTo действия след създаването на всички страници, с metric-aware click граници, лимити от 65,536 линка и 8,192 знака, потиснато VisualBrush capture, отмяна и fail-closed диагностика за unsafe схеми
Version 2.693.0
Added
- Добавена е ограничена нативна XPS и OpenXPS
VisualBrushконверсия за inline или resource-backedCanvas,PathиGlyphsвизуали, hierarchical и remoteResourceDictionaryтърсене, absoluteViewbox, absolute или relativeViewport,None,Tileи огледални tile режими, трансформации, opacity, многократно използваеми Form XObjects, споделени tiling шарки, token-aware пренос на ресурси и fail-closed бюджети за цикли, повреден вход, recursion, съдържание, кеш и позициониране
Version 2.692.0
Added
- Добавено е нативно вграждане на package шрифтове за XPS и OpenXPS за TrueType и OpenType програми, TTC member фрагменти, GUID-обфускирани ресурси, директни или cmap-производни glyph ID-та, едно-към-много Unicode cluster-и, изрични аванси и отмествания, width-коректни RTL начала, споделени font ресурси, permissions за вграждане и забрана на subsetting, опционален glyph subsetting, ограничени
ToUnicodeкарти и amortised-linear изход на позиционирани run-ове без GDI замяна на face
Version 2.691.0
Added
- Добавено е ограничено OpenXPS
GlyphsIndicesподреждане със строги cluster code-unit и глифови бройки, изрични аванси в стотни от em, хоризонтални и вертикални отмествания, обратно продвижение при нечетенBidiLevel, плътни fill-ове от атрибути или property елементи, opacity, нативен PDFTJbatching, positioned Unicode cluster fallback, запазено извличане на текст, fail-closed диагностика при повреден вход и amortised-linear буфери, ограничени до 65,536 mapping-а
Version 2.690.0
Added
- Добавена е поддръжка на OpenXPS
Path.OpacityMaskза плътни, variable-alpha multi-stop линейни и елиптични радиални градиенти и обикновени, tiling или огледални PNGImageBrushмаски чрез сгъната uniform alpha, ограничени нативни DeviceGray transparency групи, споделени shading шарки и image soft-mask потоци, fail-closed обработка на неподдържано съдържание и многократно използваемияRegisterLuminositySoftMaskStatebuilder с alpha-image resource обвързване
Version 2.689.0
Added
- Добавени са OpenXPS
ImageBrushрежимиTile,FlipX,FlipYиFlipXYчрез нативни PDF tiling шарки с едно, две или четири независимо изрязани позиционирания, споделени image и PNG soft-mask ресурси, композирани fixed-page, path и brush матрици и ограничениятRegisterImageTilingPatternAPI за многократно използваеми image-backed шарки
Version 2.688.0
Added
- Добавена е поддръжка на OpenXPS
ImageBrush.Transformза крайни матрични атрибути с шест параметъра иMatrixTransformproperty елементи, конкатенирани след нативнотоPathизрязване и преди viewport изрязването и позиционирането на изображението, така че brush-ът може да ротира, мащабира, наклонява или мести, без да променя векторната геометрия, която го съдържа; нестандартниятRelativeTransformи неразрешените matrix ресурси остават изрична диагностика
Version 2.687.0
Added
- Добавено е matrix-контролирано позициониране на image XObject чрез
THPDFPage.ShowImageMatrixи разширен XPS fixed-page import сImageBrushfill-ове от package JPEG, PNG, TIFF и JPEG XR, absolute или спрямо границитеViewboxиViewportmapping, нативно path и single-viewport изрязване, opacity на изображение и path, PNG soft-mask alpha, DPI-aware оразмеряване на 96 DPI, споделен кеш на декодирани ресурси и fail-safe диагностика за неподдържани tiling, трансформации, цветова конверсия и image щрихи
Version 2.686.0
Changed
- Добавена е многократно използваема ограничена регистрация на multi-stop радиални градиенти и разширен native-vector XPS path import с елиптични
RadialGradientBrushстойности като property елементи, Pad spread, еднаква stop alpha, opacity на brush, относителен или абсолютен center, mapping на origin и радиус, нативно Type 3 PDF засенчване и възстановяване на координатите, което оставя path геометрията непроменена
Version 2.685.0
Changed
- Разширен е подреденият native-vector XPS path import с quote-aware и ограничен parse на property елементи, плътни и multi-stop линейни gradient brushes, нативни PDF shading шарки, alpha на brush и stop, координати на градиента по подразбиране спрямо границите или изрично абсолютни, интерполация на stop-ове извън диапазона и fail-safe диагностика за неподдържани трансформации, spread режими, цветова интерполация, променлива alpha и дегенерирани оси
Version 2.684.0
Changed
- Добавен е подреден native-vector XPS path import с ограничена abbreviated геометрия, fill правила, плътни RGB и ARGB fill-ове и щрихи, opacity на path, ширина на щриха, трансформации с шест параметъра и fail-safe диагностика за неподдържани чертачки възможности
Version 2.683.0
Changed
- Усилена е PDF/X-6 валидацията на реално рисуваното съдържание с graphics state на shading шарките към момента на дефиниция, ExtGState семантика на nonstroking pattern, fail-closed проверки на soft-mask subtype и backdrop, точни Type 3 глифови метрики и правила за наследен цвят, строга alpha класификация на комбинираното рисуване, ограничена JPX цветова инференция и appearance-aware анотационно композитиране
Version 2.682.0
Added
- Добавена е поддръжка при подписване и проверка за ECDSA подписи с
brainpoolP256r1,brainpoolP384r1иbrainpoolP512r1, включително специфичната за кривите матрица от SHA-2 и SHA3 дайджести, валидация с провал преди provider, строги named-curve сертификатни параметри, ECDSA алгоритъмни идентификатори без параметри, канонични DER подписни стойности, Windows CNG import на named криви и детерминистична диагностика за изрични, trailing, неизвестни или несъответстващи параметри
Version 2.681.0
Changed
- Обединено е изпълнението на съдържание за non-progressive bitmap, direct-DC, Form и display-list чрез
HPDFInterpretContentTokensDeviceи опционалното пълно разширениеIHPDFContentOperatorDevice, с една cancellation точка на оператор, compile-time кеширане на операторни индекси за replay на display-list без сканиране на операнди, публичниOperatorCountметрики, запазена съвместимост на semantic-device ниво, коригирани семантики на операторите",vиyи коректна обработка наEIтерминатор без фалшиви fallback диагностики
Version 2.680.0
Added
- Добавени са ограничени transactional overloads на
RepairPDFA4с типизирани опции, детайлни repair отчети, споделен произход на находките, безопасна нормализация на PDF 2.0 header, trailer ID, metadata, Catalog и презентация, namespace-aware repair на PDF/A идентификацията, конфигурируема политика за partial или full-conformance commit, откриване на error regression, byte-exact rollback на графа и XMP и строга граница, която запазва съдържанието на страниците, шрифтовете, цветовете, прозрачността, изображенията, графичните оператори и извлечения текст
Version 2.679.0
Added
- Добавена е PDF/X-6 валидация на реално рисуваното съдържание с избор между ISO 15930-9:2020 и resolved-errata 2025 правила, проверки на реалния ICC header и каналите, resource-aware обхождане на content масиви, Form XObjects, tiling и shading шарки, изображения, Type 3 глифове, soft маски и анотационни appearance-и, диагностика на overprint mode и transparency при комбинирано рисуване, стабилен произход на правилата и ограничена работа по декодирани байтове, токени, обекти, находки, recursion и graphics state
Version 2.678.0
Added
- Задълбочена е ограничената PDF/A-4 валидация с кеширани проверки на ICC header и компоненти, консистентност на output intent на документа и страницата, анализ на реално рисуваните device цветове и прозрачността в content масиви, вложени Form XObjects, изображения, image маски, засенчвания и анотационни appearance-и, наследено graphics state, вграждане на рендиращи шрифтове, CIDFont и CMap взаимоотношения, строги анотационни флагове и appearance състояния, UTF-8 XMP packet и namespace валидация, логически локации в дървото от страници, стабилна clause-aware диагностика и конфигурируеми тавани за декодирани байтове и content токени
Version 2.677.0
Added
- Довършена е ограничената PDF/UA-2 валидация на документ, human-readable низове, optional content, анотации, AcroForm, structure назначения, outline, вградени файлове и вложени page етикети, включително физическо ParentTree ownership, скаларни structure деца, ограничения на appearance stream, XMP свойства по namespace URI, откриване на Unicode private-use и clause-aware диагностика; структурираният HTML, XHTML, XML и JSON експорт вече споделя tagged-first достъпен модел на четене с език, заглавие, навигация, page етикети, безопасни линкове, анотации, несензитивни формулярни контроли, заместващи marked-content, артефакти, алтернативи на изображения, geometric fallback, независими лимити, отмяна и атомарно публикуване
Version 2.676.0
Added
- Добавено е ограничено минимално byte-range планиране за всяка страница в линеаризиран PDF чрез
PlanProgressiveLinearizedPageRanges, с raw и Flate декодиране на primary или overflow hint-и, interoperable byte-aligned combined и Annex F continuous split hint подредби, точни bootstrap, page, shared-group и LF- или CRLF-префиксирани традиционни или stream зависимости на кръстосаните препратки, коректно натрупване при къси четения, таван от 256 MiB по подразбиране за паметта на planner-а с fail-closed разграничаване на кодирането, сливане с отчитане на припокриванията, строги структурни кръстосани проверки, типизирани лимити и диагностика на наличността и обединен[0, /E)first-page път
Version 2.675.0
Added
- Добавени са независими, съобразени със стандартите crypt-filter политики за низове, нормални потоци и вградени файлове чрез
ConfigureCryptFilterDefaultsиSetStreamCryptFilter, включително password и public-key reserved филтри,/Identity, коректно при запис password-security/EFFи водещи/Cryptpipeline-и, fail-closed получателски граници, специфични за public-key потоци, case-sensitive зареждане и инспекция на външни named филтри,/CFM /None, докладване на V2 дължина на ключа, mixed-policy Direct File fallback, разделени политики за object-stream контейнер и member низове и запазващи политиките шифровани инкрементални актуализации
Version 2.674.0
Added
- Добавени са инкрементални актуализации с запазени credential-и за Standard и public-key шифроване чрез password-aware overload на
BeginIncrementalUpdateи зададен key material на получателите, със сигурно запазени file ключове или FEKs, отделни crypt-filter политики за string, stream, metadata и Identity, generation-aware derivation на legacy обектни ключове, точни наследени/Encryptпрепратки, byte-идентични изходни ревизии, оригинален user, owner или recipient достъп и fail-closed отхвърляне на промени в шифроването или неподдържани хетерогенни филтри
Version 2.673.0
Security
- Добавена е ограничена валидация на JBIG2 segment графа преди full-page, region, нативно или външно декодиране и преди споделяне на global dictionary, с индексирани проверки за дублирани сегменти и липсващи препратки, итеративно откриване на цикли и дълбочина на зависимостите, налагане на page-асоциация на embedded stream сегментите, отхвърляне на забранени сегменти, бюджети за long reference и aggregate ръбове, предпазители при symbol dictionary алокации и прецизна телеметрия при отказ
Version 2.672.0
Added
- Добавено е генериране и строга валидация на PAdES E-EPES
signature-policy-identifierс изрични policy OID-и, известни или ETSI unknown hash-ове, SPuri, SPUserNotice и SPDocSpecification квалификатори, ограничен Unicode и collection parsing, хеширане на policy документа, закачване на OID и hash на основния подписващ преди криптографската работа, отделни статути за несъответствие и пълен JSON отчет
Version 2.671.0
Added
- Добавени са детерминистични RFC 5652 контейнери с до 256 независими основни
SignerInfoзаписа чрезHPDFCMSBuildMultiSignedDataиHPDFCMSMergeSignedData, включително prevalidation на цялата партида преди страничните ефекти на подписващите, атрибути, алгоритми, сертификати и providers на всеки подписващ, стриктна definite-length валидация на контейнера, DER-сортирани и дедупликирани множества, независими резултати от проверката, byte съвместимост при един подписващ и side-effect-free aggregate placeholder оразмеряване
Version 2.670.0
Added
- Добавени са опционални RFC 5652
SubjectKeyIdentifierидентичности на подписващия чрезTHPDFCMSSignOptions.SignerIdentifier, включително компактно IMPLICIT SID кодиране, автоматичен избор на версия наSignerInfoиSignedData, стриктно извличане на X.509 разширения, поддръжка при provider и placeholder оразмеряване и fail-closed съвпадение на SID, сертификат и версия при проверката
Version 2.669.0
Security
- Добавена е fail-fast диагностика за консистентност на CMS digest алгоритмите в
SignedData.digestAlgorithms,SignerInfo, параметрите на signature механизма и RFC 6211CMSAlgorithmProtection, с отделен verification статус, код за неуспешна валидация, разпространение на timestamp, детайлни причини за проблемите и JSON изход
Version 2.668.0
Added
- Добавено е генериране и проверка със SHA3-256, SHA3-384 и SHA3-512 в detached CMS, RSA PKCS#1 v1.5, RSA-PSS и ECDSA provider договори, RFC 3161 content и signature времеви печати, PAdES-LTA подновяване, Seed Value речници и ISO 32001 PDF 2.0 developer-extension декларации, с ограничено еднопроходно byte-range хеширане, споделено със съответните PDF MAC политики
Version 2.667.0
Added
- Добавен е
THotPDF.ValidatePDFMACChainс валидация на инкременталните ревизии от най-старата към най-новата, кумулативно класическо или xref-stream индексиране, точни локации на грешки по ревизия и xref, откриване на подмяна на исторически MAC, стабилно налагане наKDFSalt, отхвърляне на понижаване силата на дайджеста, автентикирани проверки на/Pи/Perms, preflight отчети и ограничен parse на ревизии без временни PDF копия
Version 2.666.0
Added
- Добавени са
THotPDF.SignPDFWithPFXAndAttachedPDFMACи валидация, прикачена към подписа, с директенAuthCodeв активния trailer, индиректенSigObjRef, пълно покритие на подписаната ревизия, обвързване на дайджеста на raw signature value, PDF MAC политики със SHA-2 или SHA-3, еднопроходно подписване и MAC range hashing, preflight отчети и атомарна подмяна на изхода
Version 2.665.0
Fixed
- Коригиран е
THotPDF.RegisterNChannelColorSpaceда излъчва петелементната ISO 32000-2 формаDeviceNс/Subtype /NChannelи metadata за process-компонентите, минималната PDF версия е повишена на 1.6, а luminosity soft mask-овете вече резолвват NChannel рисуване през неговото alternate пространство, като същевременно се запазва съвместимост при четене със старите/NChannelfamily token-и
Version 2.664.0
Added
- Довършено е PDF рендирането на blend mode-ове с целочислени hot-path имплементации за Hue, Saturation, Color и Luminosity, и е коригиран fast path-ът за пълна непрозрачност, така че всеки активен separable или non-separable blend mode се композира върху своя backdrop
Version 2.663.0
Security
- PKCS#12 контейнерите вече се автентикират преди разкриването на шифрованите safe съдържания, чрез проверка на опционалния външен
MacDataс ограничени PKCS#12 KDF итерации, SHA-1 или SHA-256 HMAC, сравнение на дайджести в constant time и fail-closed обработка на грешна парола и подправяне
Version 2.662.0
Added
- Добавени са три HotPDFCLI команди:
renderрастеризира всяка избрана страница в<prefix>-page<N>.pngпрез pipeline-а за битмапи на заредени страници (--pagesдиапазон,--dpi10..2400, по подразбиране 150),tablesизвлича типизирани таблици в CSV или JSON чрезExportLoadedTypedTables(--json,-oфайл или конзола), аcompareизвежда JSON отчет за сравнение на два документа чрезHPDFDocCompareDocuments(--mode0..5: брой страници, текст на страници, брой обекти, рендерирани изображения, пълен и структурен)
Fixed
- Поправен е Win64 ICC transform pipeline, който произвеждаше изход само от нули при 8-битови batch трансформации (
TransformBytes): оптимизираният 1D-LUT fast path вътре в Win64 lcms2 обектите връща нули, докато generic resampling pipeline-ът е коректен, затова 8-битовата трансформация вече се компилира сcmsFLAGS_NOOPTIMIZEсамо на Win64; 16-битовият single-color път и всички Win32 трансформации запазват оптимизирания fast path (batch sRGB primaries вече се round-trip-ват на двете платформи)
Version 2.661.0
Added
- Добавено е истинско бюджетирано Zopfli Flate компресиране с висок коефициент след съществуващия zlib baseline с четири стратегии, със строг избор без нарастване на размера, лимити за вход, итерации, блокове, изход и време, детайлна телеметрия за потоци и паралелни изображения и детерминистични прагове за спестявания върху фиксиран корпус
Version 2.660.0
Added
- Добавени са детерминистични XML preflight отчети, четими от машини, и trusted плъгини с версии по ABI за извличане на характеристики и персонализирани правила за валидация, със стабилна подредба, интеграция с policy bundle, разпространение на отмяната, fail-closed проверки за възможности и крайни бюджети за плъгини, находки, характеристики, низове, изход и време
Version 2.659.0
Added
- Разширен е ограниченият XFA FormCalc с условна логика, повтарящи се числови агрегации и валидирани dynamic-instance callbacks, и добавени са sandboxed QuickJS формулярни скриптове, изключени по подразбиране, с пълен control flow, нативни typed arrays, изолиран достъп до данни, крайни бюджети за инструкции, време, памет, стек, стойности и операции върху инстанции и телеметрия на изпълнението
Version 2.658.0
Added
- Добавени са ограничени редактируеми XFA packet DOM структури за пълни XDP потоци и подредени масиви от пакети с path заявки по local-name, мутиране на пакети и възли, точно запазване на недокоснатите байтове, селективно пренаписване на пакет, детерминистичен изход за namespaces и атрибути, безопасно разделяне на CDATA, екраниране на entity-та и крайни бюджети за вход, изход, пакети, възли, дълбочина, атрибути, текст и заявки
Version 2.657.0
Added
- Добавено е CSC API v2 отдалечено подписване през съществуващия CMS provider pipeline с транспорт, притежаван от приложението, обновяване на OAuth токени, ограничено откриване на credential вериги, изрична обработка на authorization и SAD, синхронно или асинхронно подписване на дайджести, RSA-PSS параметри, polling, RFC 3161 времеви печати, отмяна, стабилни idempotency ключове и краен кеш на завършени операции
Version 2.656.0
Added
- Добавени са опционални XPS, EPUB и CBZ документни манипулатори с оценяване по съдържание, подменяема thread-safe регистрация, едно валидирано сканиране на архива, подредба по fixed-page, spine и естествен ред на изображения, неизменяем кеш на PDF конверсиите, споделени бюджети за архив, ресурси, reflow, страници, пиксели, DPI, изход и отмяна и публикуване на PDF, безопасно при rollback
Version 2.655.0
Added
- Добавено е ограничено извличане на типизирани таблици и атомарен CSV или JSON експорт с канонични колони, сливане на фрагменти от една страница и от последователни страници, обхвати на слети клетки, повтарящи се заглавни редове, геометрия на страницата, увереност, произход и locale-контролирано разпознаване на integer, number, boolean, дата, date-time, валута и проценти
Version 2.654.0
Added
- Добавено е атомарно структурирано експортиране на заредени страници в HTML, XHTML, XML и JSON през единен модел на реда на четене с блокове, стилизирани span-ове, открити таблици, координати, ред на източника, опционални ограничени PNG изображения, Unicode-безопасно екраниране, отмяна и крайни ресурсни бюджети
Version 2.653.0
Added
- Добавено е атомарно пренаписване на цвета на заредени страници към DeviceGray, DeviceRGB или DeviceCMYK със запазено търсимо векторно съдържание, беззагубена цветово-управлявана растерна конверсия за изображения и сложни ресурси, устойчив на завъртане изход, изрични бюджети за точност на рендиране и ресурси, както и политики за запазване, конвертиране в обработка или отхвърляне на spot плаките
Version 2.652.0
Added
- Добавено е review-first откриване на redaction върху заредени страници с checksum-aware PII pattern-и, pluggable entity и face detector-и, confidence-оценени page-space находки, ограничена work телеметрия, задължителна reviewer идентичност, атомарно staging на одобрени анотации и отделна изрична burn-in граница
Version 2.651.0
Added
- Добавено е ограничено barcode декодиране на заредени страници и региони с pluggable engine-и, прогресивен low-resolution рендеринг, fallback quarter-turn сканирания, валидирани текстови и raw payload-и, PDF-space граници и ориентация, confidence филтриране, overlap дедупликация, отмяна и ресурсна телеметрия
Version 2.650.0
Added
- Добавени са ограничени, отменяеми searchable OCR текстови слоеве с pluggable recognition engine-и, confidence и geometry валидация, rotation-подравнен невидим Unicode текст, optional-content групиране, ресурсна телеметрия и атомарно multi-page публикуване
Version 2.649.0
Added
- Добавени са пълни object graph round trips през versioned JSON със streaming snapshot и incremental export-и, raw или декодирани embedded и атомарни sidecar payload-и, ограничен schema-съвместим import, структурна и stream-length валидация и transactional публикуване
Version 2.648.0
Added
- Добавен е ограничен repair за ръчно редактирани QDF диагностични документи, който запазва object и stream байтове, поправя direct, indirect, липсващи или остаряли stream дължини, възстановява classic кръстосани reference offset-и и trailers, отхвърля небезопасна структура и верифицира изхода през нормалния loader
Version 2.647.0
Added
- Добавен е thread-safe регистър за custom stream filter-и с ограничени push и pull договори, споделени decode бюджети, cooperative отмяна, изрични seek изисквания, изолирани custom неуспехи и execution телеметрия
Version 2.646.0
Added
- Добавени са ограничени content-operator visitor и event API-та с read-only operand изгледи, детерминистични state callbacks, действия inspect, measure, replace, delete, stop и reject, cooperative отмяна, валидиран изход и атомарни обновявания на заредени страници
Version 2.645.0
Added
- Добавен е pluggable loaded-page render backend договор с достъп до компилирани display list-ове, нативна GDI имплементация, thread-safe паралелна диспетчеризация, детерминистична fallback политика, cache инвалидация и execution телеметрия
Version 2.644.0
Added
- Добавено е ограничено откриване на layout застъпвания, element пътеки, opt-in source mapping, нативни vector overflow и overlap overlay-и, live диагностични callbacks и work статистика
Version 2.643.0
Added
- Добавени са нативни ограничени vector chart-ове с line, bar, area, pie и scatter серии, автоматични или ръчни оси, теми, легенди, етикети, PDF/UA Figure алтернативи и render статистика
Version 2.642.0
Added
- Добавено е ограничено GUI-thread RichEdit и RTF странициране с vector EMF изход, изображения, opt-in поддържани OLE представления, отмяна, запазване на stream позиция и изрични input, character, page и output бюджети
Version 2.641.0
Added
- Добавен е ограничен SVG 2 import като reusable PDF Form XObjects с нативна геометрия и арки, CSS cascade, векторни gradient-и, clip и mask поддръжка, Base 14 текст, opacity ресурси, placement-aware link анотации и import статистика
Version 2.640.0
Added
- Добавен е versioned HTML5 paged-media import профил с толерантен DOM parsing, print CSS cascade, paginated block и table layout, опционални AcroForm контроли, ограничени callback-driven ресурси и статистика per операция
Version 2.639.0
Changed
- Големите local-file mapping-и вече адаптират конфигурирания mapped-byte таван между по-големи sequential прозорци и до 16 по-малки MRU random-access прозорци, запазват изрична fixed-geometry опция и докладват активната геометрия, преходите, броячите по access pattern и peak mapped байтове
Version 2.638.0
Added
- Добавен е ограничен cross-page JBIG2 symbol training с external и native backend-и, един споделен global речник, точно преизползване на дублирани страници, директно PDF image-batch вмъкване, backend и size телеметрия и измерени 78.8 процента спестяване на компресия върху 100-страничния regression corpus
Version 2.637.0
Changed
- Паралелният loaded-page рендеринг вече намалява заявените worker-и от process-wide memory бюджета, резервира всяка заявена страница, задържа ordered-output резервациите през callback доставката, буди budget waiter-ите при отмяна или неуспех и докладва concurrency, reservation, admission, delay и wait телеметрия
Version 2.636.0
Changed
- Loaded-page prefetch-ът вече компилира и рендерира извън cache заключването, отменя cooperatively през tokenization и playback, отстъпва на foreground page рендеринга и излага progress, failure, preemption и cancellation-latency телеметрия
Version 2.635.0
Added
- Добавен е подреден streaming паралелен page рендеринг с calling-thread callbacks, ограничена опашка от завършени bitmap-и, producer backpressure, cooperative отмяна, borrowed bitmap животи и queue, byte, wait, completion и delivery телеметрия
Version 2.634.0
Added
- Добавен е двустадиен паралелен loaded-page pipeline, който компилира display list-ове извън render-cache заключването, стартира playback преди пълният набор страници да е компилиран, динамично балансира ограничени worker-и, запазва входния ред, намалява content-token алокацията и излага stage, cache, completion и latency телеметрия
Version 2.633.0
Added
- Добавени са immutable reference-counted декодирани bitmap handle-и с copy-free cache попадения, директно thread-safe рисуване от renderer-а, изолирани mutable копия при нужда, eviction-независими животи и кумулативна handle и copy телеметрия
Version 2.632.0
Changed
- QuickJS изпълнението вече работи и чрез static обекти, и чрез ABI-neutral bridge DLL на Win32 и Win64, с Unicode-safe стойности, детерминистично докладване на статус, конфигурируеми memory, stack, script, време и interrupt лимити, secure DLL откриване, recovery след отхвърлени скриптове и възпроизводими cross-platform runtime build-ове
Version 2.631.0
Changed
- Factur-X и ZUGFeRD business-rule валидацията вече изпълнява пълната прегледана XPath 2 Schematron повърхнина с външни code бази данни, sequential bindings, quantifiers, FLWOR суми, стабилни fallback rule идентификатори, secure ограничен XML parsing, изрични evaluation-error находки, нула мълчаливи прескачания и fail-closed комбинирана валидация
Version 2.630.0
Added
- Добавено е вградено TrueType variable-font instancing с мапнати оси, споделени и частни
gvartuple-и, IUP интерполация, simple и composite outline обновявания, phantom-point метрики,HVAR,VVARиMVARbaking, компактно static glyph възстановяване, checksum-коректен изход и callback-free Unicode font регистрация
Version 2.629.0
Added
- Добавено е side-effect-free CMS placeholder оценяване от изрични, provider или RSA certificate signature размери, точно static container shaping, консервативни dynamic payload резерви, pre-sign rebuild-и, capability-gated provider retry-та, строги single-invocation гаранции за external signer, ограничено оразмеряване и детайлна диагностика на опитите
Version 2.628.0
Added
- Добавен е reachability-based subsetting на шрифтове, вградени в заредени PDF-и, включително page съдържание, nested Form XObjects, annotation appearance състояния, споделени font програми, TrueType и CFF формати, encoded-size избор, стабилни CID и ToUnicode mapping-и, детайлни резултати и default отказ при наличие на подписи
Version 2.627.0
Added
- Добавено е автоматично PDF/UA структуриране за декларативни layout дървета, включително заглавия, списъци, таблици, фигури, language и alternate-text metadata, pagination артефакти, continuation-safe marked-content reference-и, запазване на реда на четене, semantic валидация и structure статистика
Version 2.626.0
Added
- Добавен е декларативен document DOM с наследяеми стилове, reusable component factories, текст, spacer-и, stack-ове, контейнери, секции, повтарящи се headers и footers, претеглени таблици с повтарящи се заглавни редове, ограничена continuation дълбочина, pagination статистика, non-copying текстови и таблични фрагменти, линейно top-level обхождане, непосредствено page flushing и съответстващи Delphi и C++Builder повърхнини
Version 2.625.0
Added
- Добавена е повторяема Win32 и Win64 статистическа performance gate, която изолира load, save, render и text extraction, записва warmup-и и 30 raw sample-а с p50, p95, sample variance, RSS, process I/O, среда и детерминистична fixture идентичност, после оценява стабилни JSON прагове и връща failing exit код при regression
Version 2.624.0
Changed
- Преработено е парсването на прости dictionary и array около immutable source span-ове, директна numeric конверсия, еднопроходни nested контейнери и indexed dictionary вмъкване, с публична materialization телеметрия; 30,000-двойков Win32 fixture намали байтовете, алокирани в петте прохода, с 64.7 процента, а времето падна от 3,656 ms на 46 ms
Version 2.623.0
Added
- Добавени са конфигурируеми парсер лимити за отделни token байтове, общо token броене, array или dictionary записи и malformed token-и, плюс строг untrusted-input preset, typed limit изключения и per-load телеметрия; regression gate-овете отхвърлят 2 MiB token и контейнер от един милион token-а под 250 ms и под 37 MiB process връх
Version 2.622.0
Added
- Добавени са изрични API-та за освобождаване на object graph на заредени страници и телеметрия, които изхвърлят clean page-owned корени и render кешове, като запазват indirect споделени ресурси и reload metadata; последователната обработка на 100,000 страници остава на стабилен връх от 69.3 MiB, а освободените обикновени или компресирани страници се материализират отново с оригиналната си object идентичност
Version 2.621.0
Changed
- Декодираните object-stream контейнери вече ползват конфигурируем byte-ограничен LRU кеш с непосредствено per-container eviction, source-backed reload след eviction, zero-retention режим и peak-byte, eviction и reload телеметрия
Version 2.620.0
Changed
- Големите обикновени page дървета вече се отварят в компактни placeholder-и, разрешават произволни страници чрез
/Count-водено обхождане и indirect-object hash индекс, кешират разрешените страници, излагат materialization телеметрия и контроли и се разгръщат автоматично преди структурна мутация или save операции
Version 2.619.0
Changed
- Заредените AcroForm полета, qualified имена, widget-и, анотации и страници вече споделят lazy двупосочен relationship кеш с reverse annotation lookup, per-widget page lookup, activity телеметрия, изрична инвалидация за raw object-graph редакции и mutation-safe автоматична поддръжка
Version 2.618.0
Changed
- Page-object lookup-ът вече ползва лениво преизграждан, mutation-aware reverse индекс за object номера и resolved page указатели, заменяйки повтарящите се page-table сканирования при page копиране, outlines, named destinations, actions, forms, accessibility и page-tree reconciliation, като излага validity и activity телеметрия
Version 2.617.0
Changed
- Сравняването на рендерирани документи вече поддържа caller-избран DPI, RGB или luminance цветов толеранс, changed-pixel съотношение и SSIM-подобни similarity gate-ове, детерминистични свързани changed региони, опционални PNG difference overlay-и и fail-closed page и агрегатни pixel бюджети с изрична rendering диагностика
Version 2.616.0
Changed
- Сравняването на документи вече обхожда indirect object графи през детерминистични catalog-based пътеки, hash-ва стойности и потоци в изрични ресурсни лимити, подравнява страниците преди класифициране на insertions, deletions, moves и промени, разграничава преместени обекти от добавяния и премахвания и докладва непълни сравнения вместо да третира бюджет-ограничени резултати като идентични
Version 2.615.0
Changed
- Декодирането на заредени изображения вече ползва 16 cache metadata shard-а и точна per-key singleflight координация, изпълнява независимите скъпи декодирания конкурентно, като пази един owner decode за дублирани заявки, налага конфигурираните byte и entry бюджети във всички shard-ове и излага cached decode entry точки плюс concurrency телеметрия; четири независими 12,000-пиксел JPEG заявки скалират 3.72 пъти на четири Win64 worker-а, докато осем заявки със същия ключ декодират веднъж
Version 2.614.0
Changed
- Рендерингът на low-resolution grayscale и RGB JPEG вече избира ограничен 1/2, 1/4 или 1/8 inverse-DCT scale, стриймва мащабирани scanline-и през fixed-point resampler директно в точния target bitmap, запазва decode бюджетите, отмяната и codec-worker изолацията и излага source, scaled, target, scanline и memory телеметрия чрез
GetLastJPEGReducedDecodeInfo; regression fixture-ът от 12,000 на 12,000 към 300 на 300 върви 24.05 пъти по-бързо от пълния decode, без да алоцира своя 432 MB source raster
Version 2.613.0
Changed
/Contentsмасивите на заредени страници вече излагат lazy seekable конкатениран поток, задържат нефилтрирани сегменти в source-backed съхранение, декодират най-много един филтриран сегмент наведнъж, ползват amortised-linear натрупване на token-и и байтове, запазват оригиналните потоци при редакция чрез добавяне на нов сегмент и държат последователност от 1 GiB с 10,000 сегмента под 64 MiB допълнителна работна памет
Version 2.612.0
Changed
- Incremental update-ите вече държат source файла заключен за писане и на файлова основа, вместо да задържат пълните source байтове, обхождат и излъчват само променени, нови и изтрити обекти в sparse xref подсекции, стриймват оригиналния prefix към нова цел и append-ват директно с rollback за saves към същата цел; 4 GiB ревизия с един обект остава в рамките на 128 MiB допълнителна работна памет
Version 2.611.0
Added
- Добавен е ограничен document-scoped кеш за заредени font decoder-и с LRU лимит от 32 MiB и 128 записа, singleflight reuse на парсване между страници и заредено text extraction, SVG export и text replacement, независими deep-copy резултати от
GetLoadedFontDecoder, конфигурируем memory бюджет и telemetry API-та и автоматична инвалидация при промяна на graph, страница, reload, JSON Patch и CMap конфигурация; повторната употреба на един споделен indirect шрифт вече парсва encoding-а, ширините,ToUnicode,CIDToGIDMapи descendant mapping-ите само веднъж, докато се задържа
Version 2.610.0
Changed
- Ускорени са page import-ът и object grafting-ът чрез замяна на линейния, прецизно преоразмеряван foreign-object lookup масив с operation-scoped power-of-two open-addressed карта, ключована по source документ, object номер и поколение; споделените indirect обекти и цикличните графи запазват съществуващата си identity семантика през batch import-ите, докато големите object графи вече ползват amortised constant-time регистрация и expected constant-time lookup
Version 2.609.0
Changed
- Подобрена е точността на SVG page export: директните
w,J,j,Mиdgraphics-state оператори вече запазват ширината на линията, именуваните cap и join стилове, miter лимитите, dash масивите и dash фазата;q/Qвъзстановява тези атрибути през nested съдържание и Form XObjects; even-oddf*,B*иb*paint операторите излъчватfill-rule="evenodd"; zero-width PDF hairline-ите остават видими чрез non-scaling SVG strokes
Version 2.608.0
Added
- Добавена е QuickJS static-linking инфраструктура:
Lib/HPDFQuickJSStatic.pasлинква петте QuickJS OMF обекта (build-нати с bcc32c от кръпени source-ове) чрез{'$L'}директиви — без DLL зависимост — и декларира пълната C runtime повърхнина (47 символа: msvcrt C99 math, Borland 64-bit аритметика, size-neutral atomic stub-ове, pthread stub-ове);thirdparty/QuickJS/build-static.batавтоматизира patch-and-compile pipeline-а. Известно ограничение:JS_NewRuntimeуспява, ноJS_NewContextудря access violation, защото премахването на_Atomicпроменя реда на struct инициализация; DLL build-ът от v2.607.0 остава работещият evaluation път
Version 2.607.0
Added
- Добавено е генериране на DataMatrix 2D barcode (
Lib/HPDFDataMatrix.pas): ASCII-mode кодиране с digit-pair компресия, Reed-Solomon ECC върху GF(256) с примитивния полином на DataMatrix $12D, квадратни размери от 10x10 до 144x144, codeword поставяне с променлива посока и L-образния finder pattern;THPDFPage.DrawDataMatrixрендерира кодираната матрица като мрежа от запълнени module квадрати - Добавено е генериране на PDF417 stacked 2D barcode (
Lib/HPDFPDF417.pas): text-mode кодиране с base-30 свързване на знаци, Reed-Solomon ECC върху GF(929) с примитив 3, symbol descriptor кодиране и ред/колона подредба със start/stop pattern-и;THPDFPage.DrawPDF417рендерира codeword матрицата - Добавено е обвързване на QuickJS JavaScript engine (
Lib/HPDFQuickJS.pasплюс предварително build-нати Win32/Win64quickjs.dllподthirdparty/QuickJS/bin/): dynamic DLL зареждане, runtime+context lifecycle и evaluation API повърхнината (Eval/EvalInt/EvalFloat);Evalcode path-ът има известен Win32 startup crash при линкване в приложение и е документиран за последващо проучване - Добавена е архитектурната extraction цел
THPDFWriter(Lib/HPDFWriter.pas): xref entry регистър (free/used/compressed), classic xref table сериализатор и trailer dictionary builder, към които THotPDF save пътят делегира incrementally
Version 2.606.0
Added
- Добавени са две HotPDFCLI команди:
decryptзарежда криптиран PDF с подадената парола, декриптира го чрезDecryptLoadedDocumentи записва некриптирано копие (-oизходен път, по подразбиране<input>-decrypted.pdf), аoptimizeрекомпресира всеки поток с FlateDecode чрезCompressLoadedDocument(-oизходен път, по подразбиране<input>-optimized.pdf, отказва криптиран вход)
Version 2.605.0
Added
- Добавено е генериране на QR Code 2D barcode: новият
Lib/HPDFQRCode.pasимплементира пълен QR енкодер (numeric, alphanumeric и byte encoding режими; Reed-Solomon error correction върху GF(256); версии 1-40 и с четирите EC нива L/M/Q/H; всичките осем mask pattern-а с penalty оценка; коректно поставяне на модулите, включително finder, timing, alignment, format info и version info pattern-и). МетодътTHPDFPage.DrawQRCodeрендерира кодираната матрица като мрежа от запълнени module квадрати върху всяка страница в писане (ModuleSizeв точки, конфигурируемо EC ниво и цвят)
Version 2.604.0
Added
- Добавена е пълна MacExpertEncoding decode таблица: горната 128-байтова половина вече мапва expert glyph-ове (small capitals, old-style фигури, superior/inferior цифри, fraction-и, типографски символи) към най-близката Unicode кодова точка или Private Use Area surrogate, заменяйки предишния raw-byte identity fallback, който даваше накъсан изход за документи с expert-кодирани Type 1 шрифтове
Version 2.603.0
Fixed
- Поправен е дълго време флакъващ fail в
ConcurrentObjStmDecryptionMatchesSerial: глобалнатаFRevisionоставаше остаряла след катоaes256се понижаваше доaes128под default PDF 1.6 версията, насочвайкиCreateKeysпогрешно към V5 клона, който никога не запълва legacy/Oи/Upassword hash-овете — серилизираният encryption речник носеше празни или остаряли password string-ове и файлът не се отваряше. Fix-ът преизвеждаFRevisionот пониженияFCryptKeyTypeи в setter-а, и на двете места за version договаряне, а legacy речник клонът вече хвърля ясна диагностика, когато password string-овете не са точно 32 байта
Added
- Добавена е HotPDFCLI командата
html: рендерира ограничен HTML файл (h1-h6, p, ul, ol, hr, inline markup) в PDF чрезHPDFRenderHTMLDocument
Version 2.602.0
Added
- Добавен е block-level HTML import:
THPDFHTMLImporter(и convenience wrapper-ътHPDFRenderHTMLDocument) рендерира ограничено HTML подмножество върху документ в писане —h1-h6заглавия с размери per ниво,pабзаци (гол текст в тялото става имплицитни абзаци),ul/olсписъци с отместениliелементи (bullet или1.номерация),hrлинии, автоматични page break-и при долния margin и browser-style recovery за незатворениp/liблокове;head/script/styleрегиони се прескачат, а container таговете минават прозрачно. Inline markup (b/i/u/font/a/sub/sup, entity-та, word wrap) се делегира на съществуващияTextOutHTMLrenderer, така че блоковете се държат заедно в рамките на страница; таблици, изображения, CSS и nested списъци са извън обхвата
Version 2.601.0
Added
- Добавени са три HotPDFCLI команди:
mergeдобавя всяка страница на допълнителните входове към първия документ и записва комбирания файл (-oизходен път, поне два входа, с пазене от колизия изход/вход),splitзаписва всяка избрана страница на документ в собствен едностраничен файл (<prefix>-page<N>.pdf,--pagesдиапазон от 1, prefix по подразбиране от входния път), аexport-svgзаписва SVG export на всяка избрана страница (<prefix>-page<N>.svg, страница 1 по подразбиране)
Version 2.600.0
Added
- Добавен е SVG page export:
BuildLoadedPageSVGвръща standalone SVG 1.1 документ за всяка заредена страница, аSaveLoadedPageAsSVGго записва на диск; export-ват се paths (fill/stroke/fill-and-stroke paint оператори с DeviceRGB цветове), text runs (<text>елементи, позиционирани per character, ползващи същата font-decode fallback верига като text extraction, съобразяващи Tf/Tc/Tw/Tz/Ts и text матрицата вкл. ротация и мащабиране), image XObjects (декодирани и вградени като base64 PNG data URI, мапнати през CTM единичния квадрат) и Form XObjects (рекурсивна интерпретация с form матрицата и собствени /Resources), а /Rotate 90/180/270 страници се export-ват в завъртяната canvas геометрия - Известни ограничения, наследени от споделения content-stream device dispatcher: без W/W* clipping, без
shshadings, без Type 3 шрифтове, inline изображенията докладват само metadata, а stroke параметрите, поддържани от ExtGState (LW/LC/LJ/ca/CA), се спазват, докато plainw/J/j/dоператорите не се диспетчеризират
Version 2.599.0
Added
- Добавен е command-line инструментът HotPDFCLI (
tools/HotPDFCLI): console front end с три команди —info(PDF версия, брой страници и размер на първата страница, encryption метод, linearization и xref структура, броячи за анотации/шрифтове/изображения/формуляри/подписи, Info metadata),extract-text(--pagesдиапазони от 1,--outфайл изход,--layoutmonospaced grid режим, съвпадащ с визуалния ред на четене) иverify(статус per signature поле, signer, причина, hash, време на подписване, покритие на целия документ и състояние на сертификата, ненулев exit код при неуспех на произволен подпис);Build-HotPDFCLI.batпроизвежда Win32 и Win64 бинарни файлове
Version 2.598.0
Added
- Добавен е
SetRenditionMediaPlayParameters: прикачва или обновява/Pmedia play parameters речника на media rendition с must-honour/MHили best-effort/BEцели, носещи процента на звука, видимост на контролера, autoplay флаг, fit режим (meet/slice/fill/scroll/hidden), брой повторения и продължителност като intrinsic, infinity или изричен timespan - Добавен е
SetRenditionMediaScreenParameters: прикачва или обновява/SPmedia screen parameters речника на media rendition (тип на прозореца floating/full-screen/hidden/screen-annotation правоъгълник, DeviceRGB цвят на фона, непрозрачност на фона, monitor индекс) - Добавен е
SetSoundAnnotationParameters: презаписва sample формата на/Soundпотока на Sound анотация (rate, канали, битове на sample, Raw/Signed/muLaw/ALaw кодиране) отвъд вградените 22050 Hz stereo 16-bit Signed default-и и задава/Nameикона като Speaker или Mic
Version 2.597.0
Added
- Добавен е
SetMovieAnnotationParameters: презаписва/Movieречника на movie анотация (aspect двойка, ротация 0/90/180/270, продължителност в секунди, видимост на poster-а), койтоAddMovieAnnotationбе създал с вградените си default-и - Добавен е
SetRichMediaPresentation: попълва/RichMediaSettingsactivation, deactivation и presentation речниците на RichMedia анотация (condition имена катоPOpage-open, toolbar / navigation UI / context click / transparency флагове); празно condition име пропуска съответния речник - Добавен е
ResolveIndirectObjectвърхуTHotPDF: разрешава indirect reference-ите, които authoring страната съхранява в записаните речници, така че повикващите могат да навигират пресни изградени object дървета;AddRichMediaAnnotationвече също регистрира своята анотация вLastAnnotation
Version 2.596.0
Added
- Добавено е live откриване на revocation evidence: certificate парсерът вече чете AIA OCSP responder и CRLDistributionPoints URI разширения,
HPDFExtractCertificateRevocationURLsги излага per сертификат, аHPDFCollectCMSRevocationRequestsги превръща в evidence заявки (GET pkix-crl per distribution point, POST ocsp-request с минимално RFC 6960 SHA-256 CertID тяло, изградено от сертификата и неговия issuer, като self-signed сертификатите се резолват като собствен issuer) - Добавен е
HPDFValidateCMSCertificatePathOnline: събира тези заявки, изпълнява ги през transport, подаден от повикващия, върху съществуващата retry/worker механика (библиотеката никога не отваря socket-и) и подава всеки извлечен OCSP отговор и CRL към offline validator-а; неуспешните fetch-ове се деградират до offline evidence семантиката
Version 2.595.0
Added
- Добавено е JBIG2 halftone region декодиране (segment types 22/23): pattern речници (type 16) с MMR или arithmetic collective bitmap-и, gray-scale bit-plane стекове както в MMR (byte-aligned верижни plane-ове), така и в arithmetic форма (един споделен MQ декодер), grid поставяне с 8.8 fixed-point вектори и опционалната HSKIP празна карта
- Добавени са JBIG2 standalone generic-refinement региони (types 42/43, GRTEMPLATE 0/1 с TPGRON), уточняващи архивирания bitmap на референциран region сегмент или page буфера
- Добавени са
AddPubSecKeyMaterial/ClearPubSecKeyMaterials: допълнителни recipient частни ключове, пробвани срещу всеки/Recipientsплик, когато първичниятPubSecKeyMaterialне съвпадне - Добавени са test-stream builder-ите
HPDFJBIG2Codec_EncodeHalftoneRegionTestStreamиHPDFJBIG2Codec_EncodeStandaloneRefinementTestStream, покриващи новите segment types от край до край
Fixed
- Поправено е public-key AES-128 зареждането на документи: legacy object проходът оставяше
FileKey,StringKeyTypeиStreamKeyTypeнеинициализирани след pubsec разделянето, така че всеки обект се декриптираше с боклук ключ (Win64 зареждане се проваляше направо; Win32 зареждане мълчаливо даваше грешен plaintext) - Поправено е round-trip-ването на криптирани string-ове: ciphertext-ът вече винаги се сериализира като hex string, защото literal string-овете нормализират CR, LF и CRLF към единичен LF, а escape обработката можеше да обърне произволни cipher байтове
Version 2.594.0
Added
- Добавено е вградено identity приближение за предефинираните CJK UCS2/UTF16 CMap-и (
UniJIS-UCS2-H,UniGB-UTF16-Vи още 15):HPDFLoadStandardCMapFileотговаря от вградена таблица, когато на диска няма CMap ресурси, така че Type0 text extraction вече не декодира 2-байтови кодове по един байт наведнъж - Добавена е поддръжка на потребителски JBIG2 Huffman таблици (segment type 53, Annex B.2 descriptor форма): нативният декодер парсва table сегментите, а selector стойност 3 за symbol-dictionary SDHUFFDH/SDHUFFDW/SDHUFFBMSIZE/SDHUFFAGGINST и text-region SBHUFFFS/DS/DT/RDW/RDH/RDX/RDY/RDSIZE ги разрешава от референцираните сегменти
- Добавен е
SetStructureClassMapEntry, регистриращ споделения attribute речник на class име в StructTreeRoot/ClassMap, довършващSetStructureElementClass/C API
Fixed
- Поправено е multi-recipient key възстановяването при public-key:
/Recipientsпликовете се съхраняваха в непреброен списък, alias-вал един буфер между записите, така че документи с двама или повече получатели извеждаха грешен file ключ за всеки шифър; пликовете вече са owned копия, а legacy SHA-1 пътят hash-ва pristine envelope байтове като AES-256 пътя
Version 2.593.0
Added
- Добавен е Shading Type 1 (function-based) рендеринг: видимата част на domain правоъгълника се дели от quadtree, воден от цветова грешка, и всеки лист cell се рисува като два gradient триъгълника с vertex цветове, семплирани от 2-входовата функция, заменяйки предишната "not sampled" fallback диагностика
- Добавено е снисходително оценяване на 2-входови функции: функция, декларираща само един вход, се деградира до
f(x)(константа по втората domain координата) вместо да се проваля, така че sampled и exponential функции зад Type 1 shading продължават да се рисуват
Version 2.592.0
Added
- Добавен е object-stream quarantine: повреден
/Type /ObjStmконтейнер се записва с причина (THPDFObjStmQuarantineReason: not a stream, bad dictionary, bad header, bad stream size, decrypt failed, decompress failed,/Firstout of range, header unparsable или container exception), диагностичен ред и member object номерата, които е оставил неразрешени, докато независимите контейнери продължават да се зареждат - Добавен е member-level quarantine (
osqrMemberUnparsable): member тяло, което не успее да се парсне от успешно декодиран контейнер, се записва веднъж, без да засяга sibling-ите си, аGetLoadedQuarantinedObjStmCount/GetLoadedQuarantinedObjStmInfoизлагат всеки запис; quarantine записите оцеляват през recovery retry-тата на едно зареждане, дедупликират се per контейнер и се изчистват при следващото зареждане
Version 2.591.0
Added
- Добавен е paging на кръстосаната reference карта: когато гъстата карта надхвърли
THotPDF.XRefMapPagingThresholdзаписа (по подразбиране 250000, 0 изключва), load-complete проходът я опакова вTHPDFXRefMapPager-- сортиран snapshot от пакетирани 24-байтови слотове, обслужван с binary search през LRU-материализирана страница от 64 записа -- и освобождава гъстия масив - Добавен е
GetLoadedXRefMapPaged, докладващ paged състоянието с брой записи, snapshot байтове и брояч hit/miss на прозореца; rebuild-ът на free set при incremental save и резолюцията на indirect/Lengthна лениво материализирани stream членове отговарят през pager-а, така че paged документите запазват пълна функционалност
Version 2.590.0
Added
- Добавени са изрични object lifecycle състояния:
THPDFObjectLifecycleStateполучаваolsRaw(индексирани, но нематериализирани компресирани членове),olsParsed(материализирани от source байтове, немодифицирани) иolsFlushed(сериализирани към изходния документ); заредените обекти вече носятolsParsedвместо generic clean състоянието - Добавени са
MarkRaw,MarkParsedиMarkFlushedвърхуTHPDFObject;GetLoadedObjectLifecycleStateвръщаolsRawза компресирани членове, чието тяло все още не е материализирано - Добавени са
RawCount,ParsedCountиFlushedCountкъмTHPDFObjectLifecycleStatistics; всеки full-save път (plain, packed, linearized) мести излъчените обекти вolsFlushed, докатоIsDirtyпродължава да значиolsDirtyилиolsMustWrite
Version 2.589.0
Added
- Добавена е zero-copy materialization на object-stream членове: компресираните членове вече се парсват през read-only slice изглед върху споделения декомпресиран container буфер вместо дублиран substring плюс второ копие на потока, като се пази точната byte подредба, включително крайния line feed
- Добавен е
THPDFObjectStreamSliceStream— public read-only view поток, излагащ (source, offset, length) slice-ове с виртуален краен LF, плюс две нови полета вTHPDFObjectStreamCacheInfo,SliceViewCountиSliceViewBytes, докладващи колко членове преминават през zero-copy изгледи при materialization
Version 2.588.0
Added
- Добавена е конкурентна декриптация на object-stream контейнери чрез новия
HPDFObjStmDecodeunit:THotPDF.ObjStmDecryptWorkers(по подразбиране 1) ограничава worker нишките, които предварително декриптират всеки различен AES-256 криптиран/Type /ObjStmконтейнер преди serial decode-and-index прохода; key материалът per контейнер се копира и изчиства per заявка, резултатите запазват queue реда, а legacy RC4 / AES-128 контейнерите остават на повикващата нишка
Version 2.587.0
Added
- Добавено е повторно зареждане на public-key криптирани документи: документи, криптирани с
/Adobe.PPKLite//Adobe.PubSec, вече се зареждат, когато повикващият зададеPubSecKeyMaterial(отHPDFParsePFX); prescan-ът разгъва/RecipientsRSA-OAEP плика, възстановява seed-а и преизвежда file ключа, така че container и string декриптирането върви непроменено - Добавен е callback-ът
PubSecRecipientQuery, който избира кой recipient плик да разгъне подаденият ключ, сPubSecRecipientQueryContextза състояние на повикващия - Добавен е
HPDFUnwrapRSAOAEPRecipientEnvelope, възстановяващ seed-а и permission битовете от CMS EnvelopedData recipient плик
Fixed
- Поправени са дефекти в public-key writer-а, разкрити от reload round-trip-а: recipient пликовете се разваляха от binary-through-Unicode string обръщане (сега се съхраняват hex-кодирани), digest-ът на file ключа hash-ваше байтовете на плика с отместване от един байт, а
/Recipientsstring-овете се криптираха като обикновени низове — сега те се изключват чрез изричния флагSkipEncryption
Version 2.586.0
Added
- Добавено е XFA overflow target продължение:
<overflow target="..."/>вече насочва прелелите flowed елементи в правоъгълника на именувания target subform, нареждайки continuation редове, докато target-ът се напълни, с fallback към нормалната content-area верига и warning, когато target-ът липсва, е по-малък от един елемент или е пълен
Version 2.585.0
Added
- Добавен е XFA barcode рендеринг:
<draw><value><barcode type="...">вече излъчва device-independent черти вместо да се деградира до read-only текстово поле, като мапва XFA symbology имена (code3Of9,code128,ean13,upcA,codabarи други) върху barcode engine-а - Добавена е XFA transformation графика:
rotate,<tran><scale>и<tran><translate>увиват всеки вид графика (line, arc, правоъгълник, изображение, текст, barcode) в center-rotationq ... cm ... Qtransform
Version 2.584.0
Added
- Разширен е FormCalc със string функции:
Concat,Len,Left,Right,Substr,Replace,Lower,Upper,TrimиSpace, включително quoted string литерали и смесени text/numeric изрази - Добавена е FormCalc date конверсия:
Date2Num/Num2Dateобръщат ISO дати през serial day броенето с епоха 1900, плюсDate() - Добавена е FormCalc finance библиотеката:
Pmt,FV,PV,RateиNPerс конвенцията за знаци на cash-flow, композируема с numeric функции катоRound
Version 2.583.0
Added
- Довършена е XFA SOM резолюцията с междинни голи
*wildcard сегменти, които слизат във всеки child branch, и с истински class token-и:#subform/#dataGroupизбират container-class възли,#fieldизбира field-подобни възли, а другите#nametoken-и съвпадат с custom data възли - Class token-ите вече се комбинират с индексиране (
#subform[2]брои всеки възел от класа в document order) и участват в descendant..търсения
Version 2.582.0
Added
- Добавено е съгласуване на appearance състояния за radio-button и checkbox: записването на button стойност през
SetFormFieldValueилиSetLoadedFormFieldValueByNameвече избира съответстващото/ASсъстояние във всеки widget, а flattening-ът се съгласува преди генериране на appearance-ите, така че остарялоOffсъстояние никога не надделява над импортирана стойност - Добавена е стабилност при регенерация на button appearance-и:
EnsureLoadedFieldAppearanceStreamзапазва съществуващото on-state име на state речник и извежда on-state имената на radio децата от собствената им/Texport стойност
Version 2.581.0
Added
- Добавени са завъртяни field appearance-и: widget-ите с
/MK /Rвече носят ротацията като/Matrixвърху генерирания appearance, като запазват незавъртяното form пространство, така че comb, multiline и listbox рендерингът остава непроменен, а flattening-ът картира трансформирания правоъгълник върху/Rect - Добавена е поддръжка на rich-text appearance: полетата без plain
/V, но с/RVтяло, рендерират символното съдържание с премахнат inline XHTML markup - Добавено е whole-word пренасяне за multiline текстови полета: прекалено дългите редове се чупят на word граници чрез per-character оценката на ширината, като думите остават цели вместо да се режат
Version 2.580.0
Added
- Добавени са CID-font field appearance-и:
EnsureLoadedFieldAppearanceStreamнамира/DAшрифта през AcroForm речника/DRи прикача наново document font обекта към appearance ресурсите, така че Type0 шрифтове рендерират CJK стойности като UTF-16BE hex текст вместо Helvetica заместване - Добавено е appearance покритие за всеки AcroForm field клас: checkbox и radio widget-ите вече получават
Offплюс on-state appearance-и (векторна отметка и запълнен кръг, без зависимост от ZapfDingbats), push бутоните рендерират captions, а listbox-ите рисуват по един ред/Optс маркирания ред подчертан - Добавена е оценка на ширината per character, мерища CJK и full-width диапазони на пълен em, която подобрява quadding и comb подравняването за multi-byte стойности
Version 2.579.0
Added
- Добавени са строги form-script бюджети чрез свойството
THotPDF.FormScriptBudgets: wall-clock CPU cutoff, кумулативен memory бюджет и таван за генерирания изход вече ограничават всяко изпълнение наEvaluateLoadedFieldJavaScriptи всеки recalculation проход - Добавен е record-ът
THPDFScriptBudgets, покриващ дължина на скрипта, statements, recursion дълбочина, операции, CPU време, памет per value и кумулативна и изходни байтове; нула в което и да е поле вдига съответния лимит - Добавена е evaluation телеметрия:
THPDFJavaScriptEvaluationResultвече докладваElapsedMillisecondsиValueBytesредом до броя операции
Version 2.578.0
Added
- Добавен е dependency graph за form-field изчисления чрез
THotPDF.BuildLoadedFormCalculationGraph: всеки Calculate скрипт, регистриран в/CO, се анализира статично и се свързва в topological ред на оценяване - Добавен е
THotPDF.RecalculateLoadedFormFieldsIncremental, който преизчислява само изчисленията, transitively чели променено поле, така че вериги като subtotal към total се разпространяват в един проход, без да пипат несвързани изчисления - Добавено е dirty-field tracking: записите през
SetFormFieldValueиSetLoadedFormFieldValueByNameнатрупват dirty set, консумиран от incremental overload-а без параметри, overload-а с изрично изброени променени полета и пълния recalculation проход - Добавен е
HPDFFormCalcGraphunit, излагащ affected-closure заявки, пълната target последователност, cycle броене и неразрешени source имена за tooling preview-и - Добавен е
HPDFExtractSafeJavaScriptFieldReferences, извличащ имената на полетата, които safe-subset скрипт чете отAFSimple_Calculateаргументи иgetFieldдостъпи, като прескача string литерали
Changed
- Dependency циклите вече запазват
/COреда на документа и променено поле никога не преизчислява собствения си скрипт, така че цикличните документи се държат като еднопроходен recalculation, а потребителските стойности винаги оцеляват
Version 2.577.0
Added
- Добавена е batch валидация на подписи чрез новия метод
THotPDF.ValidateLoadedSignatureBatch: всеки зареден подпис минава byte проверка и certificate валидация в един проход със структурирани резултати за всеки подпис - Добавен е
HPDFSignatureBatchunit със споделен certificate-path кеш: подписите с повтаряща се signer верига преизползват предишната path присъда вместо да я преизчисляват - Добавено е споделено timestamp кеширане в рамките на batch: еднаквите RFC 3161 document timestamps и вградените signature timestamp token-и прескачат повторна верификация чрез
THPDFCMSVerifyOptions.SkipSignatureTimestampVerification - Добавено е споделяне на revocation evidence между подписите: OCSP отговорите и CRL-ите, видяни при една валидация, се съхраняват в
THPDFRevocationEvidenceCacheи се инжектират в по-късните подписи под новияvesCacheevidence source - Добавен е
THPDFSignatureValidationBatchза standalone batch изпълнения сFailFast, worker паралелизъм, cancellation token-и и споделен външен revocation кеш - Добавен е
HPDFSignatureBatchResultToJSON, който представя целия batch изход със cache статистика като machine-readable JSON
Version 2.576.0
Fixed
- Поправен е crash с access violation при стартиране на Showcase демото:
THPDFViewerизстрелваOnPageChangeпо време на конструкция и rebinding, така че първата генерация на галерията вече се изпълнява отOnShow(след като window handle-ите съществуват), а всеки event handler се пази от контроли, които все още саnil - Поправено е Showcase галерията да вгражда пълни TrueType шрифтове за своите Unicode примери: font subsetting вече е включен и десетстраничният документ се смалява от около 3.9 MB на около 336 KB
Version 2.575.0
Added
- Добавено е algorithm-agile създаване и валидиране на PDF MAC за SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-384 и SHA3-512, включително streaming range hashing и проверки за консистентност на CMS algorithm protection
- Добавени са изрични
THPDFPDFMACOptionsпрофили compatibility, modern, high-assurance и custom с алгоритми за генериране, validation allowlist-и, опционално налагане на AES-256-GCM, policy диагностика и source-съвместими default overload-и
Security
- Валидацията на PDF MAC вече открива кодирания digest преди hashing на големи byte range-ове и отхвърля забранени алгоритми или encryption режими преди автентикация, докато HMAC-SHA-256, HKDF-SHA-256 и AES-256 key wrap остават фиксирани от формата на документа
Version 2.574.0
Added
- Добавен е
SaveIncrementalUpdateAuthenticatedс режими за cryptographic integrity и trusted certificate: методът записва candidate в същата директория, автентикира всеки подпис с политика, налага решенията DocMDP, FieldMDP, UR или UR3, Identity и unknown-transform през по-късните ревизии и атомарно замества целта само след като всяка политика успее
Security
- Анализът на ревизии вече възстановява transform политиките от точния подписан snapshot и ги свързва с оригиналния signature обект, byte range и CMS стойност, вместо да се доверява на по-късни предефиниции в активния object graph, а отхвърлените candidate-и се изтриват, без да пипат съществуваща цел
Version 2.573.0
Added
- Добавена е флагманската
Showcaseдемо програма подDemo\Delphi: тя генерира десетстраничен feature-gallery PDF при стартиране (gradient корица, типография с inline rich text, векторни gradient-и / pattern-и / прозрачност, фактура сTHPDFTable, barcode symbologies, изображения, рисувани по време на изпълнение, анотации и линкове, optional-content слоеве и PAdES signature appearance) и го рендерира във вграденияTHPDFViewerсъс синхронизиран списък с теми - Добавено е действие
Encrypt AES-256с един клик към Showcase демото, което преизгражда галерията с AESV3 (R6) криптиране, user парола и само-print разрешения вHotPDF-Showcase-Encrypted.pdf - Добавена е bookmark навигация за всяка Showcase галерийна страница чрез
BeginDoc(True)иOutlineRoot.AddChild, така че генерираният документ се отваря с попълнен outline панел
Version 2.572.0
Changed
- Разширени са инспекцията на signature transform-и и класификацията на incremental промени за всички стандартни методи:
GetLoadedSignaturePermissionsвече докладваDocMDP,UR,FieldMDP,Identity, неизвестни методи, връзката между Catalog/URи/UR3, всеки стандартен usage-right бит и ограничения transitiveIdentity /Dataobject обхват; анализът на ревизии разграничава form fills, подписи, операции create/delete/modify върху анотации и вградени файлове и излага независимитеURCompliant,IdentityCompliantи агрегатнотоTransformCompliantрешение
Fixed
- Прилага се стандартното default
DocMDP /P 2разрешение при липса на опционалния запис и се отхвърлят malformed, дублирани, несъответстващи или неизвестни transform структури вместо да се игнорират мълчаливо
Version 2.571.0
Added
- Добавена е поддръжка на MacExpertEncoding: таблицата с glyph имена, транскрибирана от PDF 1.7 Appendix D.3, вече захранва
HPDFBaseEncToUnicode, така че expert-set Type 1 шрифтове се декодират до истински Unicode при извличане на текст вместо raw byte идентичност; Adobe Glyph List получи тринадесетте accentsmallварианта (Acutesmall до Tildesmall) с кодовите им точки за spacing-accent - Добавени са единадесетте separable blend режима (ISO 32000-1 11.3.5):
HPDFBlendComponentимплементира Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference и Exclusion; renderer-ът парсва/BMот ExtGState в graphics-state snapshot-а и композира рисуваните пиксели спрямо фона преди alpha претеглянето - Разрешени са nested GSUB contextual lookup-и: SequenceLookupRecord вече може да сочи contextual (Type 5), chained-contextual (Type 6) и reverse-chained (Type 8) lookup-и с диспетчиризация през споделените per-format applier-и под съществуващия таван за recursion дълбочина
Version 2.570.0
Added
THPDFRevocationEvidenceCache— thread-safe LRU кеш за timestamp / OCSP / CRL evidence с ключове по issuer, serial и responder идентификатори (case-insensitive). Записите носят интервал на валидност, lookup-ите избират най-късно започващия интервал, съдържащ времето на оценяване, попаденията обновяват recency, а бюджетите по брой записи и байтове задействат FIFO eviction с пълни броячи за hit / miss / eviction / replacement чрезGetInfo- Добавени са page-level
SaveState/RestoreStateвърхуTHPDFPage, излъчващи graphics-state операторитеq/Q, така че повикващите могат да ограждат clip, ExtGState и text-outline секции, без да пипат content builder-а
Fixed
- Поправено е изпускането на free записите от традиционни таблици от слетата кръстосана reference карта при зареждане: type-0 записите от classic таблици вече се записват като техните xref-stream двойници, така че втори проход на
SaveIncrementalUpdateвижда запазената free верига вместоSourceFreeObjectCount=0и изгубени поколения - Поправено е
THPDFSignatureEvidenceTaskда хвърля "Cannot call Start on a running or suspended thread" при конструиране: задачата вече стартира вAfterConstruction, след като обектът е изцяло изграден, вместо да надпреварва RTL проверката на thread състоянието отвътре в конструктора
Version 2.569.0
Added
THPDFCertificateValidationOptions.TrustPurposeизбира unrestricted, document-signing, code-signing, email-protection, timestamping, OCSP-signing или custom EKU политика, докато path валидацията запазва пълното налагане на permitted и excluded name-subtree, certificate-policy mapping и inhibition, а избраният purpose OID се докладва вTHPDFCertificateValidationInfo
Version 2.568.0
Added
THPDFSignatureEvidenceTaskдобива timestamp, OCSP и CRL evidence чрез ограничени background worker-и със стабилна подредба на резултатите, exponential retry и ограничени server закъснения, cooperative отмяна, лимити за размера на отговора, изолация на transport изключения, live snapshot-и и разграничени изходи за permanent, exhausted, cancelled и oversized
Version 2.567.0
Added
THPDFWindowsKeyStorageSignatureProviderподписва през smart-card, TPM и vendor CNG key-storage provider-и без експортиране на частни ключове, поддържа lookup на запазени ключове или borrowed и ownedNCRYPT_KEY_HANDLEстойности, опционално hardware налагане, silent достъп, RSA PKCS#1 v1.5, RSA-PSS, ограничен изход и класификация на provider статуса, редом до съществуващия PKCS#11 адаптер
Version 2.566.0
Added
HPDFNormalizeContentStreamGraphicsStateиHPDFCompareContentStreamsSemanticсравняват декодирани content streams чрез ограничени канонични събития, елиминирайки разликите в изписването на числа и низове, излишните graphics и text-state setter-и, празнитеq/Qобласти и еквивалентните конкатенирани матрици, като запазват ефективното състояние, операндите на операторите и SHA-256 идентичностите на inline изображенията
Version 2.565.0
Changed
SaveIncrementalUpdateвече преизгражда пълната активна free-object верига след разрушителни редакции, запазва предишните free поколения, увеличава новосвободените поколения с насищане при 65535, задържа ненулевите поколения за пренаписаните обекти, излъчва записите в детерминистичен ред по object номер, а резултатът е достъпен чрезGetLastIncrementalXRefRebuildInfo
Version 2.564.0
Added
THPDFPage.TextOutOutlineshape-ва избран от повикващия Unicode текст през текущия TrueType face, конвертира GDI записите за move, line, кубичен Bézier и close-path в нативни PDF пътеки с размер на шрифта, хоризонтално мащабиране, позиция на baseline и ротация, а после ги запълва при съществуващите clipping, цвят, blend-mode, alpha и soft-mask graphics state, без да вгражда текстови оператори
Version 2.563.0
Added
FlattenLoadedPageComplexGraphicsразпознава mesh shading и сложни Pattern ресурси, оценява нарастващи raster резолюции спрямо ограничена high-resolution референция от 16 региона с luma-претеглена перцептивна метрика за грешка, запазва страниците със spot цветове и излъчва избрания резултат през безшевния ограничен CalRGB tile writer
Version 2.562.0
Changed
FlattenLoadedPageTransparencyвече обработва source ICC, CIE, device, soft-mask, blend-space, rendering-intent и black-point-compensation цветове през споделения renderer, след което излъчва безшевни Flate-компресирани D65 CalRGB плочки под caller-контролирани бюджети за общ raster и пиксели на плочка, с peak-memory телеметрия
Version 2.561.0
Added
ScrubLoadedRedactionRemnantsпремахва Redact и file-attachment анотации, информация за документа, XMP и частни metadata, свързани и вградени файлове и всеки indirect шрифт, изображение, payload или друг обект, останал недостижим след redaction, след което уплътнява object номерата и налага пълно пренаписване, което не може да задържи байтове от incremental ревизии
Version 2.560.0
Changed
ApplyLoadedRedactionsвече поставя even-odd clipping граница около цялото съдържание на страницата, така че пресичащите се текст, пътеки, изображения, pattern-и, inline изображения и Form XObjects се изрязват прецизно, докато директните текстови операнди и отделнитеTJелементи се зануляват чрез glyph четириъгълници, а застъпващите се redaction правоъгълници се сливат консервативно
Version 2.559.0
Changed
- Импортирането на страници вече преизползва еквивалентни indirect изображения, Form XObjects, Pattern-и, вградени шрифтови програми, Font речници и ExtGState речници между страници и source документи чрез канонични dependency-aware SHA-256 fingerprint-и, със статистика за hit, miss и записи в обхват на целия целеви документ
Version 2.558.0
Added
AnalyzeLoadedPageSemanticTextиExtractLoadedPageSemanticTextизграждат стабилен ред на четене от glyph четириъгълници с повтарящи се колонови ивици, подравнени таблици с редове и клетки, нива на списъци, заглавия, captions на фигури и таблици и вертикални зони с пълна ширина, като ползват ограничено O(n log n) групиране вместо реда на потока
Version 2.557.0
Added
- Извличането от заредени страници вече запазва multi-scalar
/ToUnicodeцели и връща записи за знаци с трансформирани четириъгълници, baselines, source клъстери и изрично членство в лигатурни компоненти, като съобщава дали шрифтовите ширини и вертикалните метрики правят геометрията точна
Version 2.556.0
Changed
- Извличането на текст от заредени страници вече възстановява липсващи или непълни
/ToUnicodemapping-и от вградени sfnt cmap формати 0, 4, 6 и 12, glyph имена от AGL-базирани/Encoding /Differences, коректно декодирани бинарни/CIDToGIDMapпотоци и Adobe CID collection таблици, като същите fallback-и са налични и за reverse text replacement
Version 2.555.0
Changed
- Повторното използване на shaping от страната на producer-а вече ползва hashed lookup, стабилни идентичности на шрифтовото съдържание, точна 64-битова feature mask, ключове по вертикалност, скрипт, език и посока, плюс context-bound word-slice записи, които могат да сглобят повтарящи се преобразования с еднаква дължина през променящи се text runs, като запазват ограничена LRU памет и подробна slice телеметрия
Version 2.554.0
Changed
- Смесеният текст отдясно наляво вече разрешава сдвоените скоби от обхванатия и предхождащия strong скрипт, отразява скобите и често срещаните directional оператори само в RTL runs, запазва supplementary-plane surrogate двойки и клъстери от combining знаци при обръщането на LTR подреди и държи raw glyph-ID runs отделно от обработката на Unicode пунктуация
Version 2.553.0
Changed
- Вертикалното писане вече извежда TrueType glyph началата от
vmtxtop side bearings иglyfграници, дава приоритет наvrt2предvertпо цялото запазващ дължината GSUB run и ползва съпоставените Unicode vertical presentation glyph-и за пунктуация, докато запазва извлечения source текст
Version 2.552.0
Added
- Регистрираните OpenType цветни шрифтове вече избират най-близкия ограничен
sbixили CBDT/CBLC bitmap strike, безопасно разрешаватsbixдублирани glyph записи, разпознават PNG, JPEG и TIFF ресурси, декодират PNG и JPEG нативно и позиционират всеки bitmap от strike ppem и baseline origin метриките му
Version 2.551.0
Changed
- Регистрираните OpenType SVG цветни glyph-и вече рисуват базови пътеки, фигури, наследени плътни запълвания и щрихи, афинни трансформации и gzip-компресирани документи директно като PDF вектори, с ограничен parsing и fail-closed отхвърляне на скриптове, entities, външни ресурси, активни връзки, неподдържана opacity и прекален вход
Version 2.550.0
Changed
- Регистрираните OpenType шрифтове вече парсват ограничени COLR v1 paint DAG-ове и рисуват наслоени плътни, линейни, радиални и sweep запълвания чрез glyph clips, афинни paint трансформации, преизползваеми цветни glyph-и, source-over подредба и PDF blend композити, докато циклични, прекалено обемни и out-of-range графики се отхвърлят fail-closed преди извеждането на страницата
Version 2.549.0
Added
BeginLoadedPageProgressiveRegionRenderвече рендерира ограничен прозорец в user space чрез подновяеми operator slices, преизползва кеширани display lists, консервативно отхвърля несвързани paint обекти, докато запазва напредването на графиката и текста, размерува запазванията на паметта спрямо ROI-а и докладва броя видимите и отхвърлените paint обекти
Version 2.548.0
Changed
- Overprint proofing-ът вече запазва целевите плаки, липсващи от DeviceGray, Separation и DeviceN боите, прилага точна DeviceCMYK
/OPM 1защита на нулевите компоненти, заменя изрично назованите process плаки и комбинира spot мастилата през техните tint трансформации и alternate цветови пространства
Version 2.547.0
Changed
- Рендерингът на заредени страници вече обработва isolated и knockout transparency групи в ограничени плочки от 768 пиксела, запазва абсолютните device координати през вложени групи и tile-локални soft masks, декодира и токенизира всеки Form веднъж и излага броя групи, броя плочки, peak tile съхранението и приблизителното съхранение без плочки чрез
GetLastTransparencyGroupTileStats
Version 2.546.0
Fixed
- Luminosity soft masks вече разрешават и валидират цветовото пространство за blending на своята transparency група, извеждат колориметричното CIE Y за ICCBased и Lab съдържание, конвертират Separation и DeviceN paint през пълните alternate-space трансформации, прилагат точни backdrop-и по брой компоненти през vector, shading, mesh и image пътеки и преизползват компилираните маски само за съвпадащи трансформации и rendering intents
Version 2.545.0
Added
- Рендерингът на заредени страници вече изпълнява Type 6, Type 10 и Type 16 threshold halftones с компактна периодична геометрия, точно 8-битово или big-endian 16-битово сравнение, независими Type 5 RGB screens и transfer overrides, ограничен 64 MiB кеш от компилирани screens и атомарен continuous-tone fallback за повредени или прекалено големи данни
Version 2.544.0
Added
- Рендерингът на заредени страници вече изпълнява пълните
/TRи/TR2масиви с независими identity канали и оценява кешираните Type 0 sampled функции в едно до четири входни и изходни измерения, всички стандартни packed дълбочини на семпли, изрични encode и decode mapping-и, линейна интерполация, многомерна кубична интерполация и едномерни естествени кубични сплайни под бюджет от 64 MiB за кеша на функции
Version 2.543.0
Added
- Рендерингът на заредени страници вече кешира декодирани и токенизирани Type 3 CharProc display lists по шрифт, glyph, линейна матрица и цветово състояние през 256-записов, 131,072-токенов LRU, запазва транслацията и пълната
d0/d1изпълнителна семантика и излага hit, miss, eviction, size и oversize-bypass телеметрия чрезGetLastType3GlyphCacheStats
Version 2.542.0
Added
- Цветните и нецветните tiling pattern-и вече се рендерират с pattern матрици в координатите по подразбиране на родителя, всичките три ISO tiling типа, стъпки със знак, изолирани cell пътеки, консистентни базови оцветения за fill и stroke, трансформации на вложени ресурси, ограничени recursion и tile изпълнение, докато
RegisterTilingPatternиTHPDFTilingPatternBuilderизлагат валидиран избор на матрица и tiling тип
Version 2.541.0
Added
- Заредените JPEG и JPEG 2000 изображения вече могат да избират детерминистично качество на рекомпресия от ограничени encoding проби, като комбинират семплирана luma-претеглена перцептивна грешка с относителната цена в кодирани байтове чрез
OptimizeLoadedImagesByVisualCost, включително изрични лимити за грешка и спестяване, проверки за отмяна, стабилен tie-breaking и подробна телеметрия на избора
Version 2.540.0
Added
- Декодирането на JPEG 2000 региони вече може да възстановява независими пресичащи се codestream плочки конкурентно с per-worker codec състояние, детерминистична row-major композиция, проверки за отмяна, автоматични лимити за CPU и потребителски worker-и, fallback на бюджета за peak memory и decode телеметрия, изложена чрез
JPEG2000ParallelTileDecoding,JPEG2000TileWorkerLimitиGetLastJPEG2000ParallelDecodeStats
Version 2.539.0
Added
- Декодирането на JPEG 2000 вече поддържа валидиран директен достъп до codestream плочки, комбинирана реконструкция на source регион и resolution-of-interest със степен на двойката, бюджети за декодирания изход, заявки за резолюция през crash-isolated codec worker-и и автоматичен избор на renderer за заредени страници по видимите целеви пиксели чрез
DecodeLoadedImageRegionAtResolution
Version 2.538.0
Added
- Прогресивният рендеринг на заредени страници вече декодира подходящите
DCTDecodeизображения по един JPEG scan на ограничено продължение, публикува броячи за scan и изображение плюс отменяеми scan callbacks, прилага бюджети за изход и брой scan-ове и се връща към пълния път на изображението при несъвместимо paint състояние, изключено декодиране, codec изолация или повреден вход
Version 2.537.0
Added
- Заредените
CCITTFaxDecodeизображения вече декодират T.4 и T.6 uncompressed extension режими, различават EOFB от неподдържани разширения, спазватEndOfLine,EndOfBlockиDamagedRowsBeforeErrorи възстановяват повредените Group 3 редове с ограничена EOL ресинхронизация и замяна на редове по спецификацията
Version 2.536.0
Added
- Заявките за JBIG2 image региони вече изграждат ограничено dependency closure и декодират само регионите на страницата, пресичащи заявената плочка, композират изрязаните пиксели с декларираните оператори, прескачат независими off-window региони, запазват верижните global речници и излагат decode статистика чрез
THPDFJBIG2Decoder.LoadRegionFromByteArray
Version 2.535.0
Added
- Нативният Pascal JBIG2 път вече приема ограничени long-form referred-segment таблици с едно-, дву- и четирибайтови идентификатори, разрешава многонивови вериги от global речници, отхвърля невалидни зависимости и излага
HPDFJBIG2SplitSymbolDictionaryGlobalsза разделяне на потоци с запазени зависимости
Version 2.534.0
Added
- Нативният Pascal JBIG2 декодер вече запазва и преизползва generic и refinement аритметичните probability контексти през зависимите symbol речници, включително верижни и fan-out препратки, с template-aware оразмеряване на контекста, deep-copy изолация и защити от повреден source
Version 2.533.0
Added
- Нативният Pascal JBIG2 декодер вече обработва аритметичните и standard-Huffman refinement и aggregate символи в symbol речниците, плюс refinement инстанциите в текстови региони, със споделени refinement контексти, ограничени аритметични substream-и, адаптивни refinement шаблони и защити от повредени препратки
Version 2.532.0
Added
- Зареждането на документи с голям отпечатък, рендерингът на страници, оптимизацията на потоци и паралелната оптимизация на изображения вече споделят fair process-wide scheduler за peak memory с конфигурируем байтов бюджет, FIFO и oversized admission, изчаквания с отчитане на отмяната, fast path без алокации при неконфликтен достъп, кумулативна статистика за натиск и per-operation телеметрия за резервации и изчаквания
Version 2.531.0
Changed
- Временното spill съхранение вече ползва независимо компресирани блокове от 256 KiB, задържа некомпресируемите блокове без разширяване, групира записите през ограничена асинхронна опашка, поддържа произволно презаписване и resize и докладва логическа, физическа, блокова, batch и backpressure статистика
Version 2.530.0
Changed
- Raw компресираните диапазони, декодираните изображения, компилираните display lists и рендерираните raster страници вече комбинират least-recently-used подредба с ограничен frequency sketch, като не позволяват еднопроходните сканирания да изместват утвърдените hot записи
AdaptiveAdmissionможе да възстанови чисто recency admission за всеки слой, а frequency admission-ите, отхвърлянията и aging циклите се излагат през cache статистиката
Version 2.529.0
Added
THPDFCacheAdmissionPolicyиSetCacheAdmissionPolicyпредоставят независими граници по брой записи, общи байтове и на запис за raw компресирани диапазони, декодирани изображения, компилирани display lists и рендерирани raster странициGetCacheAdmissionStatisticsдокладва occupancy, hits, misses, admissions, rejections и evictions за всеки слой, докато прекалено големите display lists и raster страници заобикалят задържането, без да провалят текущата операция
Version 2.528.0
Changed
- Заредените документи вече intern-ват повтарящи се PDF имена, content-stream оператори и immutable низове до 64 байта в пул с обхват на документа, намалявайки дублираното string съхранение през парснатите обекти и content операциите
GetDocumentStringInternStatisticsдокладва заявки по категория, hits, misses, bypass-и, задържано съхранение и преизползвани байтове, докато твърдите тавани от 65,536 записа и 4 MiB държат враждебните документи ограничени
Version 2.527.0
Changed
- Зареждането на PDF вече ползва задържан block arena за краткотрайни parser токени и буфери, намалявайки трафика към алокатора, докато постоянните документни обекти остават независимо притежавани
- Ключовете на речниците се парсват директно, без конструиране на временни name обекти, а
GetLastParserArenaStatisticsдокладва задържано съхранение, peak употреба, преизползване на алокации, token трафик и елиминиране на временни обекти
Version 2.526.0
Changed
HPDFTransferStreamвече записва memory, mapped-file, lazy-file, adaptive-cache и range-cache source-и през storage-aware пътеки, без да алокира междинен буфер за целия поток- Сериализацията на нешифровани PDF потоци, декодираният изход без филтри, raw export на заредени изображения, материализацията на lazy потоци и разливането на временни потоци ползват директен transfer автоматично, с броячи в байтове за mapped-file и range-cache, налични за диагностика
Version 2.525.0
Changed
- Prefetch-ът на random-access парсера вече расте адаптивно през 1, 2, 4 и 8 блока при устойчиво четене напред, остава ограничен от конфигурирания капацитет на кеша и се подтиска веднага след random или обратни seek-ове
AdaptiveReadAheadEnabled,MaxReadAheadBlocksиSequentialReadToleranceBytesизлагат контрол на политиката, а range-cache статистиката докладва класификация на достъпа и текущи или peak read-ahead прозорци
Version 2.524.0
Added
THPDFCoalescingRandomAccessSourceобединява съседни parser четения в конфигурируеми кеширани диапазони, налага ограничен least-recently-used байтов бюджет и излага статистика за source, cache и prefetchLoadFromRandomAccessSourceвече прилага range coalescing и асинхронен prefetch на следващия диапазон автоматично, докато foreground seek-овете отменят несвързана работа, аReadAtCancellableпозволява на remote транспортите да прекъсват in-flight заявки кооперативно
Version 2.523.0
Changed
- Type 3 радиалните shadings вече се рендерират чрез error-bounded адаптивна Gouraud теселация вместо фиксирани плътно оцветени дискове с 48 страни
- Границите на кръгове при High-DPI и трансформации ползват толеранс по хордата от 0.35 device пиксела, нелинейните цветови функции се делят адаптивно, а неиздължените вътрешности на start кръга остават неоцветени
Version 2.522.0
Fixed
- Зареждането с парола при V=4 вече разрешава независимите
StrFиStmFdefault-и заедно с директните или array-formCryptoverride-и на ниво поток - Stream crypt параметрите могат да избират
Identity,V2илиAESV2, а изразходваните filter записи се премахват, преди останалият stream decoder pipeline да се изпълни
Version 2.521.0
Added
- Заредените
DCTDecode,JPXDecodeиJBIG2Decodeизображения вече могат да се декодират в crash-isolated Win32 или Win64 worker процеси през ограничена споделена памет CodecIsolationModeи контролите за worker път, timeout и лимит на паметта поддържат съвместимо автоматично разполагане или fail-closed обработка за недоверени документи, със структурирана телеметрия за статус, процес, exit code и време
Version 2.520.0
Added
THPDFDeterministicReplayLogзаписва ограничени подредени решения за cancellation checkpoint-и, наличност на random-access диапазони и boolean или integer callback резултати, със стабилен JSON export и import- Стриктният replay валидира идентичност, аргументи и последователност на събитията, докато възпроизвежда решенията за progressive зареждане, филтриране на анотации и отмяна на tile callbacks независимо от текущото външно състояние
Version 2.519.0
Added
BuildLoadedObjectDependencyGraphвече излага ограничени indirect-object възли и reference-slot ребра с точни object идентичности, пътеки, състояние на разрешаване, lifecycle състояние и Catalog достижимость- Object възлите докладват преносими оценки за shallow памет и dominator-базирани задържани байтове, така че споделените ресурси се приписват на най-близкия обект, който ги задържа изключително
Version 2.518.0
Added
- Ограниченото cross-reference възстановяване вече излага структуриран поток от събития, обхващащ приемане и отхвърляне на кандидати, избрани xref секции, възстановени offset-и, провалени лимити и финални изходи
- Всяко recovery събитие носи inclusive-exclusive source байтов диапазон, indirect-object идентичност, когато е приложимо, изрично ниво на увереност и ограничена диагностичка на английски, с конфигурируемо задържане и отчитане на изпуснати събития
Version 2.517.0
Added
- Унифицираната operation телеметрия вече докладва CPU време на текущия thread, peak допълнителни живи Delphi алокации, семплиран process working set, process I/O байтови делти, cache misses и разширение на декодирани потоци редом до съществуващите метрики за изминало време и памет на компоненти
- Decode отчетността вече разграничава кодиран вход, агрегатна filter работа и финални изходни байтове, с разширение, публикувано в промил, където
1000означава1x
Version 2.516.0
Added
- Regression случаите с повредени PDF вече могат непрекъснато да се превалидират и минимизират отново под конфигурируеми лимити за опити и байтове, като най-малкият signature-еквивалентен вход се задържа чрез process-safe заключване и атомарна подмяна
- Corpus PDF-ите ползват стабилни case ID-та по failure signature и детерминистични
hotpdf.corpus.case.v1sidecar-и, съдържащи content SHA-256 и броя байтове
Version 2.515.0
Added
- Cross-engine regression пробите вече обхващат parse, render, text и save домейни с ограничени вградени HotPDF SHA-256 fingerprints, проверки за стабилност при повторни изпълнения, изолирани exception резултати, именувани engine-и, входни лимити и детерминистични versioned JSON отчети
Version 2.514.0
Added
- Versioned flat C ABI вече зарежда PDF-и през 64-битови random-access callbacks директно в parser буфери и записва през retryable sequential write callbacks, без Delphi-управлявани типове да пресичат границата
HotPDFABI.dllдоставя стабилниcdeclexports, opaque валидирани handle-и, фиксирани status кодове, изрични дължини в байтове, отмяна, прогрес, диагностика, Win32 и Win64 build автоматизация, import библиотеки и layout-проверенияhotpdf_abi.hheader
Version 2.513.0
Added
- Валидаторите за PDF/UA-2, PDF/A-4 и PDF/X-6 вече могат да връщат един споделен machine-readable finding модел с profile, severity, стабилен rule ID, clause от стандарта, object път, object номер и zero-based позиция на страница
- Подробните PDF/UA-2 repair findings разграничават приложени, неразрешени, върнати назад и провалени действия с броячи за repairs, докато
ComplianceFindingsToJSONизлъчва детерминистичен versioned JSON за CI и audit pipelines
Version 2.512.0
Added
- Transactional repair за PDF/UA-2 вече възстановява липсващия alternate текст от съществуващ семантичен текст или tagged page съдържание, издига валидния език на документа за наследяване, затваря пропуски в heading нивата и съгласува Artifact structure ролите с marked-content таговете за producer и заредени документи
- Repair опциите излагат изрични default-и и ограничени fallback политики, докато repair отчетът разграничава успешните alternate-text, езикови, heading и artifact промени от неразрешената семантика, изискваща преглед от автора
Version 2.511.0
Changed
- Рекомпресията на заредени изображения и effective-DPI downsampling-ът вече конвертират цветовете на поддържаните ICCBased, CalGray и CalRGB входове към изричен калибриран RGB, докато неподдържаните калибрирани, Separation и DeviceN изображения остават непроменени и докладват решението си за запазване
- Transparency flattening-ът вече излъчва калибриран RGB, рекурсивно открива spot оцветители през страницата и вложените ресурси и запазва страниците със Separation или DeviceN paint като vector съдържание със структурирана status диагностика
- CalRGB рендерингът вече спазва реда на елементите на PDF матрицата и прилага правилната обратна XYZ-to-sRGB трансформация за vector и raster цветове
Version 2.510.0
Changed
- ICC цветовите трансформации вече се преизползват през thread-safe ограничен LRU кеш от 64 MiB, ключован по пълното съдържание на source, proof и output профилите, ефективния rendering intent и настройката за black-point compensation, избягвайки повторен profile parsing и конструиране на трансформации през vector, image, page и паралелни рендеринг пътеки
Version 2.509.0
Changed
- ICC рендерингът на заредени страници вече прилага и четирите PDF rendering intents и истинска black-point compensation през source, proof, output и sRGB трансформациите както за vector цветове, така и за image семпли, като platform цветовата услуга се запазва като compatibility fallback
Version 2.508.0
Changed
- LZW енкодерът (
TPDFLZWCompressor) получиCompress(Input, Parms)overload, който прилага forward PNG/TIFF predictor преди компресията, което го прави симетричен наDecompress(Input, Parms)пътя на декодера, така че LZW+Predictor потоци могат да се създават и в двете посоки - Content-stream интерпретаторът вече следи graphics оператора
cmи snapshot-ва активния CTM върху всеки излъчен glyph (THPDFGlyphRecord.CTMA..CTMF), така че повикващите могат да пресметнат истинския user-space произход чрезCTM * Tm, когато трансформационни матрици предхождат текста. Glyph X/Y остават в text space (identity CTM е честият случай), така че съществуващото поведение не се променя ReplaceLoadedPageText/ReplaceLoadedDocumentTextвече обработват съвпадения, обхващащи два или повече последователни simple-string операнда (например(Hel) Tj (lo) Tj): start операндът получава пълния заместващ текст (кодиран през своя шрифт, запазвайки всяка несъвпаднала префиксна част), а всеки следващ операнд в обхвата на съвпадението се занулява. Дотогава такива cross-operand съвпадения се пропускаха мълчаливо като документирано ограничение; цялото single-operand replace поведение е непроменено
Version 2.507.0
Added
- Добавена е селективна stream encryption: новият флаг
THPDFStreamObject.SkipEncryption, спазван от encryption gateway-а на writer-а, държи отделен поток в plaintext дори когато шифроването в целия документ е активно (ISO 32000-1 7.6.4 selective crypt filter /Identity). Това е основата за смесени encrypted/plaintext потоци в един документ
Version 2.506.0
Added
- Добавено е legacy RC2 PFX декриптиране:
DecryptPKCS12EncryptedBytesвече диспетчиризираpbeWithSHA1And40BitRC2-CBC(OID 1.2.840.113549.1.12.1.6) иpbeWithSHA1And128BitRC2-CBC(1.2.840.113549.1.12.1.5), клонирайки 3DES CryptoAPI пътя с параметъраKP_EFFECTIVE_KEYLEN, зададен на 40 / 128, така че импортираният RC2 key material се чете с правилната ефективна сила вместо с пълната дължина - Добавено е burn-in redaction:
ApplyLoadedRedactionsминава през всяка/Subtype /Redactанотация, занулява текстовите string операнди под нея, чиито glyph-и попадат в/Rectна анотацията (байтовете стават интервали, така че текстът наистина изчезва от извличането, а не е просто покрит), прерисува непрозрачен правоъгълник върху всеки регион и връща броя занулявани операнди. Поддържа аргумент за диапазон от страници (''= всички страници). Добавя иAddLoadedRedactAnnotationза създаване на/Redactанотации на заредена страница. Зануляването на TJ-array елементи и crop-ването на vector/image са извън обхвата за този кръг (single-string Tj /'/"операнди се зануляват; засегнатите TJ низове се прескачат с fill-rectangle fallback)
Version 2.505.0
Changed
- Текстовият интерпретатор вече извежда хоризонталното отместване на всеки glyph от истинската
/Widthsтаблица на шрифта (PDF 1.7 9.6.3) чрез новия методIHPDFFontResolver.Advance, вместо предишното плоско приближение0.5 * fontSize.HPDFBuildFontDecoderчете/FirstChar,/LastCharи числовия масив/Widthsза прости (non-CID) шрифтове; когато няма налична ширина, resolver-ът връща 0 и интерпретаторът запазва half-em fallback-а, така че поведението за шрифтове без ширини е непроменено. Това подобрява точността на X позициониране на glyph-ите за извличане на текст, откриване на колони и анализ на реда на четене
Version 2.504.0
Added
- Добавен е
SetLoadedAcroFormCalculationOrderза преизграждане на AcroForm/COмасива с ред на изчисленията в подредба от имена на полета, подадена от повикващия (полетата, които не се разрешават, се прескачат), така че веригата от изчисления може да се създаде изрично, а не само да се надгражда - Добавен е
RegisterNChannelColorSpace— помощник за цветови пространства, вариант на DeviceN, който излъчва маркера/NChannel(PDF/X-6 / PDF 2.0) за цветови пространства, които може да включват process мастила сред оцветителите си - Добавен е
SetStructureElementClassза запис на масива с имена на класове/Cна structure елемента (PDF 1.7 14.9.2.2), сочещ към споделени attribute класове - Добавен е
AddLoadedPagePieceInfoза запис на page-piece речник (PDF 1.7 14.5) под/PieceInfo/<Application>с/LastModifiedдата-печат и key/value двойки, подадени от повикващия
Version 2.503.0
Added
- Търсенето на текст без значение на регистъра вече сгъва Unicode, а не само ASCII: споделеният glyph matcher (
HPDFMatchGlyphs) заменя A-Z намаляването до малки букви сTCharacter.ToLower(Unicode Simple_Lowercase_Mapping), така че ударените латински (À-ý), гръцките (Α-Ω) и кирилските (А-Я) главни букви съвпадат с малкия си вариант вSearchLoadedPageText/SearchLoadedDocumentText. Build-овете преди XE2 запазват ASCII fallback-а - Добавен е inline-image callback към content-device абстракцията:
IHPDFContentDevice.ProcessInlineImageсе стреля за всекиBI/ID/EIблок, когато device-ът декларираcdcNeedImages, носейки нормализираното резюме за ширина / височина / цветово пространство / image mask, което flat tokenizer-ът вече е уловил на BI токена. Device-ите за извличане на текст, изброяване на пътеки и одит вече могат да отчитат inline изображенията, вместо да ги пропускат мълчаливо; page renderer-ът насочва callback-а към no-op, защото рисува inline изображенията през собствения си производствен цикъл
Fixed
- Поправено е
SaveLoadedDocumentмълчаливо да изпуска PDF/A OutputIntent, добавен към зареден документ:AddPDFAOutputIntentпълнеше in-memory списъка с intent-и, но пътят за запис на зареден документ никога не го закачаше към каталога, така че изходът проваляше veraPDF заради липсващи/OutputIntents. Нова стъпкаEnsureLoadedPDFAOutputIntentsвече закачаFOutputIntentsвърху/OutputIntentsмасива на заредения каталог и го маркира dirty преди записа, принуждавайки повторна сериализация с наличен intent
Version 2.502.1
Fixed
- Поправено е изгладените стойности на AcroForm полета да се рендерираха като дебел stroke контур вместо като нормален плътен текст:
EnsureLoadedFieldAppearanceStreamвече излъчва изричен0 Tr(fill) веднага следBTвъв всеки генериран widget appearance stream, така че text-rendering режимът е детерминистичен независимо от заобикалящото състояние на съдържанието на страницата. Преди това изтекъл1 Tr(stroke) по graphics state се наследяваше от Form XObject-а, консумиран чрезDo, и рисуваше стойността на полето с червен 2-точков контур, изглеждащ bold и с изкривен цвят - Премахнат е legacy блок за reset на default състоянието в края на
THPDFPage.CloseCanvas, който записваше1 0 0 RG/rg+1 Tr+2 wдиректно в content stream на страницата следGStateRestore(т.е. извън всяка q/Q двойка) без path оператор, който да ги консумира. Този остатъчен graphics state се изтичаше във всичко, рисувано след това на страници, произведени при authoring, и беше източникът по веригата на симптома с дебелия контур по-горе; затварянето на canvas вече оставя content stream чист, защото q/Q около metafile replay-я вече изолира replay състоянието
Version 2.502.0
Added
- Добавен е LZW енкодер (
TPDFLZWCompressor), симетричен на съществуващияTPDFLZWDecompressor, така че потоци могат да се записват с LZW и PDF filter наборът вече е пълен в двете посоки; енкодерът отразява поставянето на Clear / EOI при декодера, растежа на кодове с променлива широчина и конвенцията EarlyChange, и преминава през декодера назад-напред, включително през 12-битовото насищане при пълен речник - Добавена е пълна поддръжка на CSS / X11 named-color в HTML парсера за цвят на текст, разширявайки разпознаваната палитра от legacy 16-те VGA цвята до пълния набор на CSS Color Module Level 4 (от aliceblue до yellowgreen, включително alias-ите gray/grey, aqua/cyan и fuchsia/magenta) чрез таблица с binary search
- Добавено е създаване на Optional Content Membership Dictionary с
AddLoadedOptionalContentMembership, изграждащо/Type /OCMDобект, чийто/OCGsсписък и/Pполитика (AnyOn / AllOn / AnyOff / AllOff) захранват съществуващия evaluatorEvaluateLoadedOCVisibility, така че сложни изрази за видимост на слоеве вече могат да се създават, а не само да се консумират - Добавена е entry точка за rich-text FreeText анотация
AddLoadedFreeTextAnnotationRichText, която закача/RCXML фрагмента с rich content и опционалния/DSdefault стил към FreeText анотация (PDF 1.5 12.5.6.16), допълвайки field-level пътя/RV - Добавен е writer за catalog
/Requirements—AddLoadedDocumentRequirement(ISO 32000-1 7.7.4), който добавя requirement речници с/Sплюс key/value двойки от повикващия към/Requirementsмасива на каталога - Добавено е разпознаване на Type 16 halftone (threshold mask) в page renderer-а:
/Widthна маската управлява еквивалентна screening честота, така че страницата запазва halftone ритъм вместо операторът да се изпуска мълчаливо, с диагностична бележка за приближението
Changed
- Разширен е ASN.1 BER/DER декодерът да приема high-tag-number long form (tag >= 31), BER indefinite-length формата за constructed възли (терминирани от маркера 00 00 End-of-Contents, с recursion-safe сканиране) и long-form дължини до 8-байтовия таван на X.690, така че third-party CMS пакети, ползващи тези форми, се парсват вместо да хвърлят; новите record полета
IsIndefiniteиExtendedTagNumberзаписват коя форма е ползвал парснат възел - Изострени са fallback диагностиките на renderer-а: Type 1 function-based shading вече докладва конкретно съобщение вместо генеричното "unsupported shading type", а неподдържаните halftone типове назовават реалния номер на типа в диагностиката
Version 2.501.0
Added
- Добавени са PDF 2.0 structure destinations и page-content връзки, генерирани от marked-content данни, включващи constant-time обратен lookup
FindStructureElementForMCID, който разрешава двойката (page, MCID) обратно към притежаващия я StructElem през ParentTree на документа, локаленAddStructureDestinationLink, който излъчва GoTo действие, носещо както задължителния page-coordinate/Dfallback, така и PDF 2.0 масива/SD, назоваващ целевия StructElem по indirect reference, и remoteAddGoToRStructureDestinationLink, чийто първи елемент на/SDе byte-string/IDна целевия елемент във външния файл, така че PDF 2.0 viewer-и скачат към structure съдържание, докато legacy viewer-ите се връщат към именуваната страница
Version 2.500.0
Added
- Добавени са ограничена PDF/UA-2 валидация и transactional repair за пълни PDF 2.0 вериги от номерация и продължение на списъци, регулярни таблицни решетки и row групи, table-локални header асоциации и цикли, точни Ruby и Warichu child последователности, pronunciation подсказки за всеки елемент и подредени вградени PLS pronunciation речници, с нови authoring помощници, стабилни диагностики, semantic repair броячи и rollback за двусмислени structure дефекти
Version 2.499.0
Added
- Добавени са генериране на PDF/X-6, PDF/X-6p и PDF/X-6n и ограничена валидация за PDF 2.0 документи, включително embedded, external, Catalog-level и page-level output intents; checksums на външни профили, ICC версии, подписи на цветови пространства и таблици с N оцветители; валидация на наследени page box-ове; ограничения за exchange-action, annotation-appearance, шрифт, form, graphics-state и ресурси; стабилни clause-aware диагностики и fail-closed валидация на генерирането
Version 2.498.0
Added
- Добавени са ограничена, немутираща PDF/UA-2 валидация и transactional repair на namespace-и и structure атрибути за producer и заредени документи, включително канонична namespace регистрация, почистване на дублирани и невалидни namespace-и, откриване на role-map конфликти, repair на standard structure namespace, изрични custom attribute namespace-и, нормализация на ревизии, структурирани отчети, независими лимити за обекти и мутации и автоматичен rollback, когато валидацията все пак се проваля
Version 2.497.0
Added
- Добавени са ограничено генериране на PDF/A-4, PDF/A-4e и PDF/A-4f и валидация на заредени документи с profile-специфични правила за анотации, действия, вградени файлове, metadata, output intent, шрифт, form и optional content; структурирани диагностики със стабилни кодове, clauses и object или page местоположения; fail-closed валидация на
EndDoc; пропускане на trailerInfo; задължителноEmbeddedFilesname дърво за PDF/A-4f и пълни attachment графики
Version 2.496.0
Added
- Разширен е ограниченият AcroForm JavaScript evaluator с типизирани boolean, number, string, null, undefined и array стойности; short-circuit логически, сравнителни, равностни, унарни и условни изрази; детерминистични date функции; string и array методи; запазена съвместимост на числови полета и изрични лимити за скрипт, statement, дълбочина, операция, аргумент, колекция, string и памет за стойности
Version 2.495.0
Added
- Добавени са нативно CFF2 variable-font instancing и glyph subsetting с fvar и avar 1.0/2.0 разрешаване на координати, VariationStore blend оценка, рекурсивно изглаждане на subroutine-и, запазени multi-FD речници и hint данни, HVAR/VVAR/MVAR metric baking, ограничен fail-closed parsing и автоматична интеграция с RegisterUnicodeTTF
Version 2.494.0
Added
- Добавени са вложени copy-on-write транзакции върху object графики с first-write indirect-root snapshot-и, in-place rollback, възстановяване на добавени обекти и object номера, ограничен temporary-file spill за големи потоци, автоматично следене на container мутации, изрична подготовка за raw запис и live статистика за паметта
Version 2.493.0
Added
- Добавено е ограничено content-stream AST, запазващо токените, с all-byte lexemes, свързани operation и container възли, непресичащи се edit overlay-и, byte-exact no-op обръщания назад-напред, streamed сериализация и беззагубна целенасочена подмяна на текст
Version 2.492.0
Added
- Добавено е ограничено windowed memory mapping за зареждане на големи локални PDF-и със споделен lazy-stream достъп, конфигурируеми threshold и LRU window геометрия, автоматичен stream fallback, cross-window четения, споделяне с атомарна подмяна и mapping диагностика
Version 2.491.0
Security
- Паролите, извлечените file и object ключове, кешираните AES разписания, PKCS#12 plaintext на частните ключове, authenticated-decryption scratch и plaintext буферите за streaming от директни файлове вече се презаписват изрично на всеки път на успех и изключение
Version 2.490.0
Changed
- Променено е отложеното Standard-security декриптиране да улавя ограничения raw encryption обект и trailer ID през авторитетния xref offset по време на зареждане, запазвайки точните бинарни key записи и елиминирайки по-късни четения на целия source за валидни документи
Version 2.489.0
Changed
- Променено е зареждането с парола да възстановява RC4 и AES file ключовете от ограничени trailer, xref, document-ID и авторитетни encryption-dictionary диапазони, избягвайки заявки към целия source за валидни random-access документи, докато запазва compatibility fallback-а
Version 2.488.0
Added
- Добавен е рендеринг на заредени страници за Shading Types 4 до 7 с byte-aligned mesh декодиране, преизползване на continuation ръбове, function-aware Gouraud цветове, ограничена адаптивна Coons и tensor-product теселация, batched триъгълни запълвания, clipping, фонове и бюджети за повреден вход
Version 2.487.0
Changed
- Променени са PFX, external-signer и signature-provider работните процеси да копират с ограничени буфери от 256 KB, да stream-хешират кърпените байтови диапазони и да seek-патчат фиксирани по ширина
/ByteRangeи/Contentsполета, включително подписване в същия поток без задържане на втори пълен PDF
Version 2.486.0
Added
- Добавено е нативно standard-Huffman JBIG2 декодиране за
SDHUFFsymbol речници иSBHUFFтекстови региони, включително всичките 15 таблици от Annex B, raw или MMR колективни bitmap-и, per-region symbol-ID таблици и ограничени защити от повреден вход
Version 2.485.0
Added
- Добавени са RC4-128 и AES-128 шифрован запис на object streams и презареждане с парола с ограничено pre-parse възстановяване на ключове, правилно извеждане на ключа по object номер, lazy обработка на компресирани членове и без повторно четене на целия файл след успешно възстановяване на ключа
Version 2.484.0
Added
- Добавени са transactional form-edit сесии и ограничени event действия, пълен field, annotation и status FDF обмен, детерминистични XFA specialised-widget fallbacks и разширено странициране, streaming валидация на вградени файлове, разширени Portfolio изгледи, сортиране, папки, навигация и schema редактиране, петмерни JSON operation бюджети, callback-базиран integration ABI и corpus минимизация, запазваща провалите, с differential regression проби
Version 2.483.0
Added
- Добавени са стабилен пълен object-graph JSON export и валидиран patching, object-stream инспекция без материализация, ограничена linearisation валидация, канонични document идентификатори, извеждани от съдържанието, за възпроизводим изход, изрични политики за недостижими обекти, ограничен collated multi-source page assembly, независимо циклиращи overlay и underlay композиции, geometry-пълно изглаждане на ротация на страници и поддръжка за четене, запис и инвалидиране на page thumbnails
Version 2.482.0
Added
- Добавени са content-aware externalisation на inline изображения, понаследено и appearance-safe почистване на ресурси, coalescing на content streams, канонична дедупликация на Form XObjects и вградени шрифтове, policy-контролирана JPEG и JPEG 2000 рекомпресия, exact-match споделяне на JBIG2 globals, colour-managed effective-DPI downsampling с soft-mask координация и адаптивен locality-aware object-stream packing
Version 2.481.0
Added
- Добавени са преизползваеми page display lists и spatial индекси, ограничен tile и band рендеринг, детерминистичен паралелен page рендеринг, transparency flattening, диагностика за мастила и trapping, process и spot separation плаки, изпълними halftone и transfer функции и intent-aware source, proof и output ICC pipelines с black-point compensation
Version 2.480.0
Added
- Добавен е standards-aware текстов и документен layout с Unicode line breaking и сричкопренасяне, оптимална композиция на абзаци, балансирани колони, странициране на бележки под и над линия, оразмеряване и странициране на таблици, изключване на float-ове, структурирани вложени списъци, keep групи и ограничен caching на shaped runs
Version 2.479.0
Added
- Добавени са namespace-aware PDF/UA-2 structure авторинг и ограничена еднопроходна валидация за йерархия, атрибути, притежание на анотации, свързани файлове, заглавия, списъци, таблици, формули и MathML
Version 2.478.0
Added
- Добавена е standards-based offline trust валидация с delta и indirect CRL-и, стриктна OCSP политика, X.509 ограничения за имена и certificate политики, algorithm политика по време на оценяване, детерминистична multi-signer и вложена countersignature проверка и структурирани JSON validation отчети
Version 2.477.0
Added
- Добавено е AES-256 public-key шифроване с изрични RSA-OAEP hash политики, ECDH и X25519 или X448 key agreement, CMS countersignatures и incremental PAdES-LTA подновяване на timestamps, запазващо всяка по-ранна ревизия
Version 2.476.0
Added
- Добавени са bounded-memory AESV4 шифроване на директни файлове и authenticated декриптиране плюс ISO/TS 32004:2024 standalone PDF MAC производство, проверка, диагностика, атомарен изход и preflight валидация
Version 2.475.0
Added
- Добавени са ISO/TS 32003:2023 AESV4 password encryption и authenticated зареждане с AES-256-GCM, уникални 12-байтови IV-и, 16-байтови authentication tags, PDF 2.0 developer extensions, покритие на вложени низове, object-stream поддръжка и отхвърляне на подправяне
Version 2.474.1
Fixed
- CMS подписването вече не се проваля при компилация, когато anonymous-method signer callback улавя record-а със sign опциите на Delphi Win32
- Подписването със system сертификати вече не се проваля при компилация, когато digest callback-ът улавя record-а със sign опциите на Delphi Win32
- E-Invoice демото вече се компилира, след като enumeration-ът с validation проблеми беше разширен с допълнителни PDF/A-3 attachment и XMP проверки
Version 2.474.0
Added
- JSON processor за job конфигурация, поддържащ merge, split, optimise, encrypt и validate операции със структурирани резултати за всяка операция
- C ABI с opaque handle-и за високостойностни документни операции, включително create, load, брой страници, save и изпълнение на jobs, за вграждане от други езици
- Сравнение на документи с режими page-count, page-text, object-count и rendered-image, връщащо структуриран JSON отчет за разликите
Version 2.473.0
Added
- Преизползваемите validation политики вече покриват WTPDF reuse, accessibility и валидирано приемане на декларации, излагат declaration claim metadata и source-aware грешки, изпълняват подредени партиди през ограничени worker и queue лимити и предоставят независими inspect, add-missing и synchronize режими за repair на XMP metadata
Version 2.472.0
Added
- CMS верификацията вече поддържа Ed25519 и Ed448 чрез динамично избиран platform provider плюс ML-DSA-44, ML-DSA-65 и ML-DSA-87 зад изрично PDF 2.0 developer extension, а общ ограничен provider contract позволява callback, remote и PKCS#11 RSA подписване с retry, отмяна, key идентификатори и специфични за алгоритъма параметри
Version 2.471.0
Added
- Рендерингът на заредени страници вече цели обща device абстракция за собствени bitmap-и, външни device контексти като принтери и enhanced metafiles, докато опционалният CMYK overprint proofing интерпретира
/OP,/opи/OPM 1, за да визуализира комбинирани process мастила редом до съществуващия transparency-group knockout рендеринг
Version 2.470.0
Added
- Variable OpenType шрифтовете вече излагат axis и named-instance metadata с валидиран per-axis избор и интеграция със static-instance provider, докато COLR и CPAL слоеве, SVG glyph документи и CBDT bitmap strikes могат да се инспектират и рендерират през нативни или подадени от повикващия rasterisation пътеки
Version 2.469.0
Added
- TrueType и OpenType font subsetting вече може да преизползва валидирани content-addressed резултати от постоянен disk кеш с атомарни записи, възстановяване при повреди, access-based eviction по байтов бюджет, компактно запазване на CID mapping и наблюдаема статистика за hit, miss, write, rejection и eviction
Version 2.468.0
Added
- Преизползваемите layout елементи вече излагат measurement без странични ефекти, собствени placed и overflow фрагменти за paragraph, row, container и custom странициране, плюс декларативни background, header, footer и foreground слоеве, прилагани в стабилна page-composition подредба
Version 2.467.0
Added
- Linearized random-access source-ите вече докладват ограничена наличност на first page и main xref, заредените потоци могат да ползват детерминистична Flate рекомпресия с четири стратегии и висок коефициент, а независимите image потоци могат да се оптимизират конкурентно с caller-контролирани worker-и и commits в source ред
Version 2.466.0
Added
- Заредените документи вече излагат clean, dirty, released и must-write object състояния, безопасно post-save освобождаване на object-stream кеша, xref free-list и generation валидация с ограничени детайли за засенчващи дефиниции, детерминистичен dictionary изход и запазващи съдържанието диагностични записвания в QDF стил
Version 2.465.0
Added
- ASCII85 и ASCIIHex филтрите вече излагат ограничени stream декодери със стриктни end маркери, odd-nibble диагностика и запазен trailing вход; заредените документи могат да отварят zero-copy read-only source изрезки и да докладват per-filter pipeline статистика през preflight и stream оптимизация
Version 2.464.0
Added
- Заредените форми могат безопасно да оценяват ограничени calculation и validation скриптове без активен JavaScript engine; RichMedia анотациите излагат named-asset metadata, byte извличане и целенасочена sanitisation; XFA flattening поддържа indexed, wildcard, class и descendant SOM binding-и плюс ограничени числови FormCalc функции; а XFDF annotation обръщанията назад-напред покриват всеки поддържан annotation subtype през едно симетрично mapping
Version 2.463.0
Added
- RSA-PSS CMS подписването вече поддържа конфигурируем salt и internal, external или Windows CNG signer-и; PDF/X изходът валидира production условия, ICC компоненти и overprint контроли; заредените tagged страници излагат геометрична reading-order диагностика; а PDF Portfolio-ите могат да създават и инспектират collection schemas плюс per-file metadata
Version 2.462.0
Added
- Заредените AcroForms вече оценяват
/COред на изчисленията, регенерират multiline, quadded, auto-sized и comb appearances, разрешават normal, rollover и down annotation appearance състояния и изглаждат избраните полета само в страниците, които ги притежават; signature-aware изглаждането отказва нарушения на DocMDP или FieldMDP политики
Version 2.461.0
Added
- Рендерингът на заредени страници вече прилага isolated и knockout transparency групи, alpha и luminosity soft masks с фонови цветове и transfer функции, пълни Type 3 CharProcs в текущия им resource scope, Form матрици с пълно възстановяване на graphics state и visible-region декодиране за изрязани изображения, включително нативно JPEG 2000 region разширяване;
DecodeLoadedImageRegionизлага точно правоъгълно raster декодиране на повикващите
Version 2.460.0
Added
- Рендерингът на заредени страници вече кешира отделни optional-content и ICC цветово-intent състояния, предоставя ignore, bounded-report и strict fallback политики за прескачани оператори или обекти и публикува унифицирана телеметрия за изминало време, peak memory, декодирани байтове, cache hits, cache misses, брой обекти, успех и отмяна за зареждане, рендеринг, progressive slices и stream оптимизация
Version 2.459.0
Added
BeginLoadedPageProgressiveRenderдобавя подновяем page рендеринг с бюджети за изминало време и content оператори, частичен bitmap достъп, progress callbacks и изрични paused, completed и cancelled състояния; caller-ownedTHPDFCancellationTokenинстанции вече кооперативно отменят зареждане на документи, синхронен и progressive рендеринг, stream оптимизация, preflight валидация, PFX подписване и Windows certificate-store подписване
Version 2.458.0
Added
ImmediateFlushLayoutпремества завършените потоци от съдържание на страници в съхранение на файлова основа за ограничена генерация на отчети; подредбата на абзаци вече поддържа ограничения keep-with-next, orphan и widow, първосилна bidi посока с явни отмяни, ограничена координатна диагностика, наследени размери на страница, семантични помощници/Pи типизирани артефакти на страниране за колонтитули, долни колонтитули, водни знаци и номера на страници
Version 2.457.0
Added
SetFontFallbackChainиTextOutWithFallbackдобавят подреден, съобразен със скрипт избор на шрифт с проверки за Unicode скаларно покритие и постоянна диагностика на неразрешени знаци; вертикалният текст вече излъчва цели поредициIdentity-Vс метрики/DW2и/W2, производни от OpenType таблицитеvhea,vmtxиVORG, когато са налични
Version 2.456.0
Added
HPDFEncodePredictorдобавя строго TIFF и фиксирано или адаптивно PNG предикторно кодиране за опаковани, 8-битови и 16-битови растерни редове;ExtractLoadedImageToStreamизбягва масиви от байтове с пълен размер за нативни или общо декодирани полезни товари на изображения;OptimizeLoadedStreamsселективно рекомпресира поддържани филтърни семейства през буфери за изливане от памет към диск и заменя само потоци, които отговарят на положителен праг на спестяване
Version 2.455.0
Added
DecodeLoadedStreamToStreamвече композира заредените PDF филтри в ограничен конвейер, чийто краен етап пише директно в поток на извикващия;DocumentDecodeBudgetBytesдобавя таванна стойност по подразбиране от 1 GiB между независими вериги, докато защитите за брой филтри, дълбочина на влагане, циклични препратки и рекурсивни потоци разкриват структурирана диагностика на конвейера
Version 2.454.0
Added
- Големите заредени потоци вече остават върху диапазони на изходния файл до промяна и изливат прекалено големи изменения във властвани временни файлове чрез
LoadedStreamMemoryThreshold; компресираните членове на обектни потоци се индексират и материализират по номер на обект при първо използване;LoadFromRandomAccessSourceдобавя интеграция с HTTP диапазони и потребителско съхранение, с диагностика на потоци и кеш на обекти
Version 2.453.0
Changed
- Инкременталните записи вече запазват постоянния ID на прикачен файл във всяка ревизия, завъртат само ID-а на модификация, не излъчват добавена ревизия, когато зареденият обектен граф е непроменен, и разкриват решения за сливане на хибридни препратки чрез
GetLoadedXRefMergeInfoс явни броячи за предимство на xref потоци, припокриване на таблици и най-нова ревизия
Version 2.452.0
Added
- Добавени са нативен изход PDF 2.0 плюс създаване на PDF/A-4, PDF/A-4e, PDF/A-4f и PDF/UA-2, с XMP идентификация, съобразена с ревизии, структурни роли за PDF 2.0, регистрация на пространства от имена чрез
RegisterStructureNamespaceиAddStructureElementNS, строга структурна валидация на PDF/UA-2 и неутрални към профила свързани файлове чрезAddPDFAssociatedFile
Version 2.451.0
Added
DetectFacturXInvoiceвече разкрива декодирания MIME тип на основния прикачен файл и свързания URI на XMP пространство от имена, докатоValidateFacturXInvoiceкръстосано проверява точния FileSpec, споделен от Catalog/AFи дървото от имена EmbeddedFiles, имената/Fи/UF, XML MIME типа, XMPDocumentTypeи специфичното за профила пространство от имена Factur-X или ZUGFeRD чрез четири специализирани флага за проблеми
Version 2.450.0
Added
- Резултатите от Preflight JSON, HTML и veraPDF вече носят стабилни именарени стойности
ruleIdплюс машинночетими локации с логичен обхват, път, PDF ключ и точен номер на обект, индекс на страница или байтово отместване, когато са налични; JSON отчетите също излъчват документираните ISO съпоставянияspecи остават валидни, когато масивите съдържат множество констатации
Version 2.449.0
Added
SanitiseLoadedDocumentвече прилага политики само за JavaScript, за активно съдържание или за строги недоверени документи към зареден PDF, отчита премахнати действия и полезни товари, проваля се затворено за неизвестни типове действия, премахва недостижими обекти чрез ограничено безопасно спрямо цикли почти линейно обхождане, уплътнява номерата на живите обекти и атомарно заменя източника при запис на място
Version 2.448.0
Added
- Рендиращият модул за заредени страници вече изпълнява цветни и безцветни повтарящи се шарки плюс аксиални и радиални шарки за засенчване за запълвания и щрихи, включително матрици на шарки, наследяване на нюанси, изрязване на пътеки, кеширано токенизиране на съдържание, вложено възстановяване на графичното състояние и ограничени броя recursion и плочки за враждебни ресурси
Version 2.447.0
Added
- Добавена е конфигурируема таванна стойност
DecodeBudgetBytesот 256 MiB за верига, която агрегира изхода от вложени етапи Flate, LZW, ASCIIHex, ASCII85, RunLength и предиктори на изображения, преди да достигнат паметта, с диагностикаGetLastDecodeBudgetInfoи нула като изричен режим без ограничения
Version 2.446.0
Added
- Добавено е
LinearizeOutputпо избор за бърз уеб преглед, което излъчва речника с параметри за линеаризация в първите 1024 байта, hint таблици за първа страница и споделени обекти, секции за страници, подредени по зависимости, и две таблици с кръстосани препратки за съвместимост, запазвайки директен файлов и поточен изход и надеждно откриване при презареждане
Version 2.445.0
Added
- Заредените PDF файлове вече използват ограничено възстановяване на кръстосани препратки след повредени декларации
startxrefили неизползваеми xref данни, като първо преместват валидна таблица или поток и след това пресъздават валидираните отмествания на директни обекти с предимство на най-новото определение, филтриране на вложенообектни фалшиво положителни, конфигурируеми бюджети за сканиране и обекти, ограничени опити за xref котва, структурирана диагностика и записване с пълно пренаписване
Version 2.444.0
Added
AnalyzeLoadedSignatureRevisionsвече класифицира всяка инкрементална ревизия след избран подпис като валидация с дълъг срок, попълване и подписване на формуляр, анотации или други промени, отчита променени и освободени обекти и имена на полета и оценява съответствието с DocMDP и FieldMDP независимо между традиционни, потокови, хибридни и компресиранообектни xref истории
Version 2.443.0
Added
VerifyLoadedSignatureWithTrustиHPDFValidateCMSCertificatePathвече изграждат пътища на сертификати на подписващия до потребителски предоставени доверени котви и проверяват подписи на сертификати, периоди на валидност, Basic Constraints, ограничения за дължина на пътя и Key Usage- Офлайн валидирането на отзоваване вече проверява OCSP и CRL подписи, авторитет на отговарящия, идентичност на сертификата, свежест на статуса и времена на отзоваване, като предпочита доказателства VRI за конкретен подпис пред DSS на ниво документ, доказателства от извикващия и CRL от CMS
THPDFSignatureInfo.CertificateValidationотчита доверие, дължина на пътя, доверена котва, време на оценка, статус и източник на отзоваване, време на отзоваване и проблеми с валидацията независимо от криптографскотоsvValid
Version 2.442.0
Added
- Проверката на заредени подписи вече криптографски валидира RFC 3161 клейма за време на документа спрямо
/ByteRangeна PDF и клейма за време на подписа спрямо родителската CMS стойност на подписа, докатоTHPDFSignatureInfo.Timestampразкрива вида на клеймото, статуса, политиката, отпечатъка на съобщението, сериен номер, време на генериране, точност, подредба, nonce, TSA идентичност и детайли за сертификата на подписващия клеймото
Version 2.441.0
Added
- Проверката на заредени подписи вече поддържа CMS RSA-PSS подписи със SHA-1, SHA-256, SHA-384 или SHA-512 и валидира явни параметри за хеш, MGF1 хеш, дължина на salt и trailer-field
THPDFSignatureInfoвече отчитаSignedRevisionLengthиUnsignedTrailingBytes, аsvInvalidByteRangeидентифицира структурно опасни диапазони на PDF подписи
Changed
- Проверката на подписи вече възстановява позицията на потока на извикващия, сравнява чувствителни към сигурността байтови последователности без ранни изходи и отчита пълните параметри на алгоритъма RSA-PSS
Fixed
- CMS проверката вече отхвърля припокриващи се, извънгранични, отрязани или двусмислени байтови диапазони и валидира пълния идентификатор на алгоритъм RSA PKCS#1
DigestInfo, вместо да приема всеки осембайтов низ с размер на дайджест
Version 2.440.0
Fixed
- Регистрацията на Unicode шрифтове вече заделя пълния буфер за движение на глифове преди четенето на метриките на шрифта, което предотвратява нарушения на достъпа в работните процеси за OpenType формиране и подмножество на шрифтове
GetWideTextWidthвече интерпретира кешираните Unicode движения в em единици и прибягва до платформено измерване, когато метрика на глиф не е налична, възстановявайки правилно мащабирани ширини за пренасяне на думи и подредбаBeginIncrementalUpdateвече маркира заредените обекти като чисти преди проследяването на промените от извикващия, така че непроменените обекти не се пренаписват, а осиротелите речници за шифроване се освобождават правилно в добавената секция за кръстосани препратки
Version 2.439.0
Added
HPDFDecodePredictorиHPDFTryDecodePredictorпредоставят ограничено декодиране за TIFF предвиждане от 1, 2, 4, 8 и 16 бита и за всичките пет PNG филтъра за редове, със строга валидация на редовете и приложими диагностични съобщенияTPDFLZWDecompressorдобавя директен изход на поток, методи за многократно използване за декодиране без генериране на изключения, конфигурируеми ограничения за изхода и изисквания за терминатор на потока, както и статистика за ширина на код, речник, нулиране, разширяване и изход при всяко декодиране
Changed
- LZW декодирането вече използва непрекъсната арена за фрази, поддържа и двата режима на PDF
EarlyChangeи двата реда на запълване на битове, обработва строго нулирания за изчистване и разширениятаKwKwKи нараства геометрично в изхода на низове - Извличането на заредени изображения Flate и LZW вече зачита геометрията на предвиждането от
DecodeParmsиEarlyChange, използва безопасно при препълване оразмеряване на растера и споделя същата реализация на предвиждане като декодирането на xref потоци
Fixed
- Декодирането на Flate с параметри за предвиждане вече чете от потока за декомпресиране вместо да копира компресираните входни байтове в етапа на предвиждане
- Повредени LZW кодове, отрязани редове, невалидни тагове за PNG редове, невъзможна геометрия на предвиждане и прекомерно разширяване вече се провалят детерминистично, вместо да връщат частични или все още компресирани данни за изображения
Version 2.438.0
Fixed
THPDFViewerвече се компилира под Delphi XE2 до XE8, къдетоWM_DPICHANGEDотсъства отWinapi.Messages; константата за DPI съобщение за монитор вече е дефинирана локално за вериги от инструменти, по-стари от Delphi 10 Seattle, възстановявайки компилациите на TRIAL DCU библиотеките за RAD Studio XE2..XE8, които се прекъсваха сE2003 Undeclared identifier
Version 2.437.0
Changed
GetWideTextWidthвече измерва Unicode текст от кеш за ширини на движение по кодова точка, попълван веднъж от hmtx таблицата на шрифта, вместо обажданеCreateCompatibleDC+GetTextExtentPoint32Wпри всяко извикване -- 10-100 пъти по-бързо за пренасяне на думи, подравняване и измерване на клетки в таблици при дълги Unicode документи, с прозрачен резервен път към наследствения GDI път, когато няма регистриран Unicode шрифт
Version 2.436.0
Fixed
- Вграденият шрифт
/FontDescriptor /CapHeightвече използва реалната метрикаotmsCapEmHeightна шрифта вместо хардкодирана константа, като прибягва до ~70% от изкачването за шрифтове, които отчитат нула
Version 2.435.0
Fixed
- Вградените Unicode шрифтове вече запазват глифовете, които OpenType формирането произвежда (арабски презентационни форми, лигатури, контекстни алтернативи) при подмножество -- множеството
FUnicodeExtraUsedGlyphs, записано отMarkUnicodeGlyphUsed/EnableShapingFeatureForSubset, се записваше, но никога не се консултираше от подмножеството, така че тези глифове попадаха в.notdefв изхода
Version 2.434.0
Added
THPDFWeightedCacheдобавя инспекция без промотиране, булево търсене, изрично премахване и прехвърляне на собственост, незабавно подрязване до бюджета, статистика за честота на попадения и жизнен цикъл, както и стрийминг SHA-256 ключове за съдържание
Changed
- Големи подредени ToUnicode и CID CMaps вече използват логаритмично търсене на знаци и диапазони, запазват точно еднобайтови до четирибайтови кодови пространства, изолират споделени анализирани карти по корен на ресурса и нарастват геометрично в съхранението на парсъра
- Постоянният кеш за рендерирани страници вече записва PNG и индексни данни атомарно, проследява давност на ниво страница, прилага намалени ограничения незабавно и възстановява остарели индекси, изоставени временни файлове, липсващи папки и неиндексирани папки на документи
Fixed
- Анализът на CMap вече обработва правилно нечетни шестнадесетични полубайтове и отхвърля повредени шестнадесетични данни, невалидни или препълващи диапазони, отрицателни CID цели и неограничени изрични съпоставяния, докато детерминистично замества невалидни UTF-16 сурогатни последователности
- Замяната в претегления кеш вече не освобождава обект, когато същата инстанция бъде повторно вмъкната под съществуващия си ключ, а повредените PNG записи в дисковия кеш се премахват след неуспешно декодиране вместо да провалят всяко по-късно търсене
Version 2.433.0
Added
- Верификацията на заредените подписи вече поддържа ECDSA P-256, P-384 и P-521 CMS подписи със SHA-1, SHA-256, SHA-384 или SHA-512, включително избор на подписващ по issuer-and-serial и SubjectKeyIdentifier, строга DER валидация на подписа и разширена диагностика за алгоритъм и крива
- Управлението на ICC цветове вече валидира ICC v2/v4 профили, извлича и проверява броя на компонентите, дедупликира регистрираните профили, преобразува ICCBased векторни цветове и сурови изображения проби в sRGB с поддръжка на rendering-intent и запазва цветовото пространство Alternate на PDF като контролиран резервен вариант
Version 2.432.0
Added
THPDFTableCellвече поддържа клетки с изображения (ImageIndex+ImageAspectмащабират регистрирано изображение до ширината на колоната с H/V подравняване) и HTML клетки (IsHTMLрендира текста на клетката чрезTextOutHTMLза вградено удебеляване/цветове/връзки/sub-sup маркиране), съответстващо на разнообразието от съдържание на клетки, което се очаква да носи експортът на мрежа
Version 2.431.0
Added
- Нов механизъм за подредба и рендиране на
THPDFTable(модулHPDFTable) подрежда таблици от декларирани ширини на колони и редове, с текст, подравняване, цвят и замествания на шрифт на ниво клетка, сливане чрезColSpan/RowSpan, автоматично пренасяне на думи с измерени височини на редове, фонове за заглавна лента и райе, както и автоматично продължаване при прекъсване на страница, което повтаря заглавната лента на всяка страница -- всичко това използвайки съществуващите примитиви за изчертаване наTHPDFPage, така че създателите вече не се налага да изчертават клетки ръчно сRectangleиTextOut
Version 2.430.0
Changed
- Обработката на потоци от съдържание и редактирането на заредени страници вече се мащабират по-ефективно при големи натоварвания с текст и пътища, запазват семантиката за Unicode от допълнителната равнина и PDF пътищата, инвалидират кешовете на страниците след мутации и завършват записите към потоци, които приемат частични буфери
Version 2.428.0
Added
THPDFPage.TextOutHTMLполучава претоварване за пренасяне на думи, което приемаMaxWidthи пречупва дългите редове на границите на думите, плюс тагове на вградени хиперлинкове (<a href>) и долен/горен индекс (<sub>/<sup>); хиперлинковете се изчертават в синьо и подчертани и регистрират кликваема URI анотация
Version 2.427.0
Changed
- Последователни текстови поредици, които споделят едни и същи шрифт и размер, вече не преизлъчват оператора
Tfпри всяко извикване, свивайки потоците от съдържание в документи, богати на шрифтове (таблици, абзаци), като все още ги преизлъчват след възстановяване на графичното състояние (Q), където PDF го изисква - Апроксимацията на елипса в
THPDFPageвече използва стандартната константа капа на кубична Безие0.5522847498, съответстваща на всяка друга реализация на елипса и кръг в модула и премахваща малкото зависимо от радиуса отклонение, което предишната апроксимация11/20произвеждаше
Version 2.426.0
Added
- Визуализаторът вече предварително затопля кеша с рендерирани страници за страниците, съседни на току-що показаната, използвайки нишка на заден план при същия DPI, така че следващото прелистване да уцели кеша вместо да рендира синхронно отново; новото свойство
PrefetchRadiusконтролира колко страници от всяка страна се предварително затоплят (0 го изключва)
Version 2.425.0
Added
- Рендерерът на заредените страници вече декодира и изчертава вградените изображения (
BI/ID/EI) вместо да ги прескача, разширявайки съкратените двойки ключ/стойност на вградено изображение и суровите байтове по време на токенизация и поставяйки резултата през същото CTM-отображение на единичен квадрат, използвано за XObject-и на изображения
Version 2.424.2
Changed
- Дисковият кеш на рендираните страници вече събира всички файлове на страници в едно сканиране на директория и изваждапрепълващата се опашка в един проход, замествайки предишния цикъл на пресканиране-при-изваждане, който работеше в квадратично време спрямо броя страници на документ
- Дедупликацията на изображения вече мемоизира SHA-256 на всеки съхранен поток от изображение и сравнява хешовете преди да обходи байтовете, така че добавянето на едно и също голямо изображение към много страници вече не преразчита всеки предишносте съхранен поток при всяко вмъкване
Version 2.424.1
Changed
- Претегленият кеш на декодираните изображения и подмножество шрифтове вече разрешава търсенията чрез хеш-индекс и поддържа реда на последно използваните чрез базиран на индекси двойно свързан списък, превръщайки всяко
Get,Putи повишение на актуалността от O(n) изместване на масив в O(1) работа, така че рендирането на големи многоизображения документи вече не се деградира, докато кешът се запълва
Version 2.424.0
Changed
CompressLoadedDocumentвече зачитаCompressionLevel, обработва изходните потоци в ограничени парчета, запазва оригиналния товар, когато компресията не го свива, безопасно освобождава заменените потоци и маркира трансформираните потокови обекти като мръсни, така чеSaveLoadedDocumentда персистира резултата, вместо да поеме пътя на копиране на непроменения файл.DecompressLoadedDocumentизползва същия потоков път, безопасен за собственост, премахва идентичностни/DecodeParmsи оставя потоците на предиктор TIFF или PNG компресирани, докато етапът на предиктор може да бъде безопасно декодиран
Version 2.423.0
Added
THPDFPage.AddCertificationSignatureFieldиConfigureCertificationSignatureвече създават единствената сертификатна подпис DocMDP с всичките три нива на разрешение и съответстващата връзка Catalog/Perms /DocMDP, докатоAttachSignatureFieldLockизлъчва индиректни политики SigFieldLock и съответстващи референции FieldMDP за обхватите на полета All, Include или Exclude.THotPDF.GetLoadedSignaturePermissionsизвършва ограничена структурна инспекция на същия граф на разрешенията, включително изисквана прякота, коренова връзка, съгласуваност на политиките и диагностика, без да смесва структурата на политиката с криптографската валидност или съответствието с по-късни ревизии
Version 2.422.0
Added
- Маркерите-заместители (placeholder tokens) за воден знак / горен колонтитул / долен колонтитул вече разрешават метаданни на документа:
<%Author%>/<%Title%>/<%Subject%>/<%Keywords%>/<%Producer%>се заместват редом със съществуващите<%PageNo%>/<%TotPage%>/<%FileName%>/ маркери за дата и час, когато на новата претоварена версия (overload) наHPDFReplaceWatermarkPlaceholdersсе подаде записTHPDFPlaceholderDocInfo. Старата 4-параметърна сигнатура остава за извикващи, които се нуждаят само от подмножеството страница / файл / дата и час
Version 2.421.0
Added
THPDFActionBuilder.GoToEmbeddedNamedDestinationиGoToEmbeddedPageсъздават PDF 1.6GoToEдействия с валиден според стандарта родител, EmbeddedFiles name-tree, attachment-annotation и вложени/Tцелеви пътища, запазвайки именувани или изрични дестинации, незадължителни root file спецификации,NewWindow, верижно свързване на действия и ограничения за PDF/A/PDF/X- Инспекцията на заредени действия вече разпознава всички 18 подтипа действия от ISO 32000-1 и връща подредени, неизпълняващи се
THPDFLoadedActionInfoснимки (snapshots) от източници catalog/OpenActionи/AA, page/AA, annotation/Aи/AA, AcroForm field/AAи outline/A. Формите dictionary и array/Nextзапазват реда на изпълнение, докато malformed entries, shared nodes, cycles, excessive depth и excessive node counts спират безопасно с диагностика - Enums-те за annotation action и JavaScript trigger вече включват събития page-open
/PO, page-close/PC, page-visible/PVи page-invisible/PIс необходимото договаряне на версия PDF 1.5
Version 2.420.0
Added
- Етап 3 на content-stream device затваря цикъла на абстракцията:
IHPDFContentDeviceполучаваDrawXObject/DrawShading/ApplyExtGStateза операторитеDo/sh/gs, а споделеният интерпретатор вече ги диспечерица.Doе ограничен (gated) наcdcNeedImages, така че text/enum устройства прескачат тежкото декодиране на изображения;shиgsсе диспечерират безусловно. ПътятExecuteViaDeviceна renderer-а вече може да изрисува пълния набор от оператори (paths + colours + text + images + shading + ExtGState), наблюдаемо еквивалентен на наследения пътHandleOperator. Вложената процедураApplyExtGStateбеше повишена до метод на клас (DoApplyExtGState), за да я споделя пътят на устройството без дублиране; method-resolution клаузите насочват трите нови интерфейсни записа къмDev*помощници без сблъсък със съществуващите private помощници - Observer модел за document-content: събитието
THotPDF.OnLoadedDocumentModifiedсе задейства отInvalidateRenderedPageCache(PageIndex = -1, целия документ) иInvalidateRenderedPageCachePage(конкретна страница), така че прикачените viewers да се опресняват автоматично.THPDFViewerсе абонира вSetDocumentи се развързва при detach /opRemove, извиквайкиRefreshDocument, когато е засегната текущата страница (или целия документ). Multi-view sync (няколко viewers върху един и същTHotPDF) вече работи без всяко извикващо лице да стартираRefreshDocumentръчно
Version 2.419.0
Added
- Етап 1 на абстракцията на content-stream device:
IHPDFContentDeviceполучава повърхност от text callbacks (BeginText/EndText/UpdateFont/UpdateCharSpace/UpdateWordSpace/UpdateHorizScale/UpdateLeading/UpdateRenderMode/UpdateRise/TextMove/TextSetMatrix/TextNewLine/ShowText/ShowTextArray), отразяваща машината за състояние на текста в PDF; споделеният диспечерHPDFInterpretContentStreamDeviceвече препраща BT/ET/Tf/Tc/Tw/Tz/TL/Tr/Ts/Td/TD/Tm/T*/Tj/TJ/'/" към устройството, когато то декларираcdcNeedText THPDFTextExtractDeviceе конкретно устройство, което поддържа текстовите матрици и излъчва по единTHPDFGlyphRecordна код на символ (декодиран чрез инжектиранIHPDFFontResolver) — наблюдаемо еквивалентен на изхода наHPDFInterpretTokens, но произведен през интерфейса на устройството, така че една и съща интерпретаторна примка управлява извличането на текст, изброяването на пътища и рендирането- Помощната функция
HPDFExtractGlyphsViaDeviceобвива text-extract устройството + споделения интерпретатор в едно извикване; съществуващитеHPDFInterpretContentStream/HPDFInterpretTokensостават недокоснати за текущите извикващи - Етап 2 на абстракцията на content-stream device:
THPDFPageRendererвече имплементираIHPDFContentDevice, така че споделеният диспечер може да го управлява през същия абстрактен интерфейс.ExecuteViaDeviceе опционалният (opt-in) вход за рендиране, управлявано от устройство; производственият пътExecuteзапазва своя вграденExecuteStream/HandleOperatordispatch, така че съществуващото поведение остава непроменено. Renderer-ът носи всяко парче състояние, от което callbacks се нуждаят (стек за graphics-state, кеш за шрифтове, GDI handles, четири paint bridges), и всеки метод на устройството е тънко делегиране, така че пътят, управляван от устройство, е наблюдаемо еквивалентен на наследения път
Version 2.418.0
Added
DecompressLoadedDocumentе обратното наCompressLoadedDocument: обхожда всеки индиректен поток, носещ/Filter /FlateDecode(име или едноелементна форма на масив), инфлатира (inflates) payload-а обратно до сурови байтове, премахва записа/Filterи коригира/Length; потоците с други филтри (CCITT / DCT / JBIG2 / JPX / Crypt / RunLength) и вериги от множество филтри остават недокоснати, а повредените Flate payload-и се прескачат, вместо да се отхвърлятEnumLoadedPageElementsвече връща пълната геометрия на пътя за всеки елементekPath, а не само ограничителната кутия (bounding box): две нови полетаPathPoints: array of THPDFPathPointиPathIsCurve: array of Booleanса успоредни по индекс и носят контролните точки на всеки сегмент в потребителското пространство с флаг, различаващ кубичните bezier сегменти от линейните (ръбове m / l / re). Извикващите, които четат само bbox, са незасегнати; извличането на CAD чертежи, засичането на линии на таблици и потребителите на vector-replay вече могат да възстановят точните криви, които страницата е нарисувала- Новата единица
HPDFContentDeviceвъвежда абстракцията на content-stream device (етап 0): интерфейсIHPDFContentDeviceс базова имплементацияTInterfacedObject(отразяваща доказания моделIHPDFFontResolver), споделен диспечерHPDFInterpretContentStreamDevice, който днес покрива подмножеството от оператори path / colour / state, и конкретноTHPDFPathEnumDevice, което събира по един запис на всеки нарисуван път с пълна геометрия на точките. Това разрушава трипосочното дублиране междуHPDFContentStream,HPDFPageRenderer.HandleOperatorиHPDFCollectPathElements; етап 1 ще добави callbacks за text/image, а етап 2 ще мигрира renderer-а върху устройството
Changed
- Обновен коментар в заглавката (header) на
HPDFPageRenderer: бележката “TrueType/CFF glyph-outline rendering out of scope” беше остаряла — встроените glyph outlines са активни от v2.342.0 (DrawTextRunизвикваTHPDFEmbeddedTTF.DrawGlyph/THPDFEmbeddedCFF.DrawGlyphс реални квадратни/кубични bezier пътища; GDITextOutWе само резерв (fallback) за непрожектирани символи). Покрити са също CID шрифтове чрез Identity-H + CIDToGIDMap
Version 2.417.0
Added
- Five named loaded-document annotation helpers close the discovery gap where the existing
ASubtype-parameterised helpers (AddLoadedHighlightAnnotation,AddLoadedSquareAnnotation,AddLoadedPolygonAnnotation) already produced these subtypes but callers had to know the secret:AddLoadedCircleAnnotation,AddLoadedUnderlineAnnotation,AddLoadedStrikeOutAnnotation,AddLoadedSquigglyAnnotationandAddLoadedPolylineAnnotation-- once landed, the XFDF interchange layer (which already recognises these subtype strings) picks them up for free AddLoadedFileAttachmentAnnotationembeds an arbitrary file payload (PDF, image, office doc) as a FileAttachment annotation with the full three-object graph the spec requires: annotation dict / Filespec dict / EmbeddedFile stream with/SubtypeMIME,/Params /Sizeand creation/modification dates; the newTHPDFFileAttachmentIconenum (faiPushPin/faiGraph/faiPaperclip/faiTag) selects the standard pin icon viewers renderTHPDFFieldValidationOptionsrecord +HPDFDefaultValidationOptionsexpose the full AdobeAF*parameter surface (Decimals / SeparatorStyle / NegativeStyle / CurrencySymbol / CurrencyBefore / RangeMin / RangeMax) that the Acrobat JS helpers accept; the existingApplyLoadedFieldValidation(FieldIndex, Kind, DateFormat, Mask)signature is retained as a backward-compatible overload that forwards into the new record overloadApplyFieldValidationandApplyFieldCalculationbring the same Format+Keystroke+Validate / Calculate template to producer-mode fields (looked up by name) so newly-created forms get the same AF* scripts as loaded ones, without writing JavaScript by handCopyLoadedAnnotationsFromDocumentdeep-copies annotations from another loaded document directly PDF→PDF (no XFDF intermediary): reusesCopyObjectto rebuild indirect references, streams and/APappearances, rewrites/Pto the destination page, optionally remaps/IRTreply chains via/NM, optionally clears/Tauthor, and accepts aTHPDFAnnotCopyFilterEventcallback for selective copy -- covers Widget/PrinterMark/TrapNet/Watermark/3D/Screen that the XFDF layer does not reach
Fixed
ApplyLoadedFieldValidationwrote the Format JavaScript under trigger key/X(annotation-exit), which Acrobat never fires for form fields -- the script was effectively dead. Corrected to/Fso the format actually runs on field commitApplyLoadedFieldValidationemittedAFSpecial_FormatExfor the ArbitraryMask kind, a function that does not exist in the AdobeAF*set; onlyAFSpecial_KeystrokeEx(mask)is real, so the Format pass is dropped and enforcement happens at keystroke time as the spec intendsApplyLoadedFieldValidationunconditionally appendedAFRange_Validate(true,true,0,9999999)for numeric kinds, imposing a hidden 0..9999999 range the caller never asked for; range validation now only fires when the caller explicitly setsRangeMinorRangeMaxin the options recordApplyLoadedFieldValidationwrapped the ArbitraryMask in a JavaScript regex literal and emitted a hand-rolled validate script, but the mask is a literal format pattern ("AAA-9999"), not a regex; the validate pass is now removed and the keystroke mask carries the enforcement aloneApplyLoadedFieldCalculationnow prepends a Format+Keystroke number-formatting pair before theAFSimple_Calculatescript so the aggregated result renders as a plain number, matching common PDF viewer behaviour (without it the Calculate value displays raw)
Version 2.416.0
Added
THPDFViewernow scrolls on hover-wheel without needing a click first: a thread-localWH_MOUSEhook (newHPDFMouseWheelHookunit, auto-installed from itsinitializationsection) routesWM_MOUSEWHEELto whicheverTHPDFViewerinstance sits under the cursor, matching the behaviour of every native Windows PDF readerTHPDFVieweris now Per-Monitor DPI v2 aware: newHPDFPerMonitorDPIunit resolvesuser32!SetProcessDpiAwarenessContext(Win10 1703+,DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2) at runtime and falls back throughshcore!SetProcessDpiAwareness(Win8.1+) anduser32!SetProcessDPIAware(Vista+); the legacyHPDFEnablePerMonitorDPIis retained as an alias that forwards to the new layered helperTHPDFViewer.RenderAtPhysicalDPIpublished property (defaultTrue) makes the rendering DPI baseline track the monitor’s physical DPI viaHPDFGetWindowDPI, so 100% zoom on a 144 DPI panel renders at native resolution; a newWMDpiChangedhandler re-renders on cross-monitor moves; setFalseto preserve the historical 96-DPI logical baseline- Optional persistent disk tier for the rendered-page cache: setting
THotPDF.RenderCacheFolderto a writable folder path persists every page rendered byRenderLoadedPageToBitmapCachedas a PNG under<folder>\<SHA256-prefix-16>\<page>@<dpi>.png, so re-opening the same document later is instant;RenderCacheMaxDocuments(default 20) andRenderCacheMaxBytes(default 500 MB) bound the footprint with a true LRU eviction; the lookup order becomes in-memory → disk → rasterise, with disk hits back-filling the in-memory tier THotPDFconstructor now activates the highest available per-monitor DPI tier at first instantiation in runtime mode (skipped incsDesigning), so hosts that never callHPDFEnablePerMonitorDPIexplicitly still get crisp rendering on high-DPI displays
Version 2.415.0
Added
HPDFParsePDFDatenow honours the timezone suffix (+HH’mm,-HH’mm, orZ) and returns a UTCTDateTime;HPDFFormatPDFDateis the inverse formatter producingD:YYYYMMDDHHmmSS+00’00GetLoadedExtGStateInforeadsLW/LC/LJ/ca/CAoff a named ExtGState entry on a loaded page;GetLoadedShadingCount/GetLoadedShadingNameandGetLoadedPatternCount/GetLoadedPatternNameenumerate the/Shadingand/Patternresource sub-dictionariesReplaceLoadedPageswaps a page’s contents from a source document,SwitchLoadedPagesexchanges two pages,ReverseLoadedPagesflips page order in a range,ExtractLoadedPagesToPDFsaves a page range as a standalone PDF, andGetLoadedPageInheritedBoxresolves inherited page boxes through the page-tree parent chainGetLoadedFileSpecInforeads embedded-file metadata (name / description / MIME / size),GetLoadedEmbeddedFileMIMEreturns the/Subtype,GetLoadedEmbeddedFileChecksumreturns the/Checksumdigest, andTHPDFNameTreeType+GetLoadedNameTreeRootCountprovide a typed enumeration of all nine name-tree categoriesHPDFEnablePerMonitorDPIdynamically enables per-monitor DPI awareness;THPDFBackgroundRendererrenders pages on a background thread with a request queue and cancellation;GetLoadedPageContentStreamCountreports whether/Contentsis a single stream or an array;GetLoadedXMPValueextracts a namespace-qualified XMP property; andGetLoadedDocumentReportaggregates all diagnostic info into a JSON string
Version 2.414.0
Added
THPDFActionBuilder.URIWithIsMapcreates a URI action with/IsMap truefor server-side image-map tracking, where the previousURIbuilder only set the bare/URIstringAddLoadedCaretAnnotationExadds an optional paragraph symbol (/Sy P) to caret annotations, the visual marker editors use for insert-trackingGetLoadedAnnotationDAparses a FreeText annotation’s/DAstring into font name, font size and RGB colour components, so a caller can inspect or clone the appearance without re-parsing the raw operator string
Version 2.413.2
Fixed
- The C++Builder package now links without requiring crypt32.lib: HPDFWinCertSigner loads the CryptoAPI entry points (CertOpenStore, CertEnumCertificatesInStore, CryptAcquireCertificatePrivateKey, and the Crypt hash helpers) dynamically via LoadLibrary/GetProcAddress, matching the pattern already used by HPDFDoc.EnumerateSystemCertificates
Version 2.413.1
Fixed
- Type1 and CFF font handling now preserves parser ownership across repeated stream checks and multi-font FontSets, returns stable glyph names and bounding boxes, keeps fractional font sizes and DPI scaling, and avoids composite-glyph and private-dictionary memory errors
- The C++Builder AddDelPages, HugeFileBenchmark, and Security demos now compile for Win64, while page-operation and preflight examples release partially constructed objects safely
Version 2.413.0
Changed
- The Delphi E-Invoice demo now validates required invoice fields, amount and VAT ranges, currency syntax, and embedded XML profile compatibility before writing output
- The attach workflow now rejects identical source and output paths, reports the detected XML guideline, and combines container, PDF/A, XML profile, signature, visual consistency, Schematron, and external-report checks into one verdict
Fixed
- E-Invoice generation and manual validation no longer report a successful result when an enabled validation layer finds issues
- Loaded electronic-invoice summaries now read the invoice number, seller, and buyer from their correct XML aggregates, preventing false visible-text consistency findings
Version 2.412.0
Changed
- All Delphi demos now resolve no-argument relative assets and outputs from their executable directory while preserving the caller working directory for command-line paths
- Delphi command-line demos now provide stricter argument validation, failure exit codes, deterministic comparison inputs, and generated-document verification across page copying, text extraction, preflight, optimisation, inspection, and in-memory workflows
Fixed
- Delphi demos no longer risk page-list overflow above 100 selected pages, create an extra blank page in the add-page workflow, close unrelated PDF viewer windows, or report failed preflight checks as successful
- The E-Invoice attach workflow now rebuilds its current page correctly when a single-page source is converted, signed, and stripped of the temporary initial blank page
Version 2.411.0
Added
- E-Invoice demo: new "Attach to existing PDF" mode converts an existing PDF to PDF/A-3, embeds a Factur-X/ZUGFeRD invoice XML as a document-level attachment, and optionally signs the result with a PFX certificate
Version 2.410.0
Added
- Loaded AcroForm fields can now update flags, maximum length, text justification, per-widget rectangles, rotation, border colour, and visible or printable state, with widget enumeration for radio groups and other multi-widget fields
Fixed
- Loaded field tooltip, border-width, and background-colour edits now mark the correct field or widget dictionaries dirty, apply visual properties to every widget, and invalidate only the affected page render cache
Version 2.409.0
Added
ActivateLoadedLinksturns bare HTTP, HTTPS, FTP,www.,mailto:, and email text into positioned borderless URI annotations across a selected page range
Changed
- Loaded link creation now persists reliably in incremental updates, while automatic activation snapshots existing links once per page, skips matching URI and rectangle pairs, and invalidates each changed page cache only once
Version 2.408.0
Added
- Loaded annotations can now update their title, unique name, modification date, normalised rectangle, and standard solid, dashed, bevelled, inset, or underlined border style
Fixed
- Loaded annotation edits now mark the annotation object dirty for incremental saves, while visual edits invalidate only the affected page's cached renders and retain other warm pages
Version 2.407.0
Added
THPDFViewerModelstores, clips, enumerates, removes, and clears persistent page-region highlights without modifying the PDFTHPDFVieweradds a highlight interaction mode with captured marquee dragging, rotation-aware PDF coordinate recovery, configurable colour, and anOnMarqueeSelectcallback
Fixed
- Viewer coordinate transforms now retain the actual render DPI below 12 and above 2400, keeping selections aligned at the 5% and 6400% zoom limits
Version 2.406.0
Added
THPDFViewerModelcreates rotation-aware page thumbnails directly at a DPI selected for caller-supplied pixel bounds, avoiding full-size intermediate page bitmaps- Viewer-model page prefetch warms a centred neighbourhood asynchronously while limiting the scheduled pages to the rendered-page cache capacity
Version 2.405.0
Added
THPDFPageLayoutnow supports PDF 1.5plTwoPageLeftandplTwoPageRightcover-spread layouts with automatic version negotiation and strict-version fallback
Fixed
BeginDocnow preserves the caller-selected page layout instead of always replacing it withplOneColumn
Version 2.404.0
Added
THPDFViewerModelcreates rotation-aware snapshots of bounded PDF page regions without allocating a full-page bitmap
Version 2.403.0
Added
THPDFViewerModelconverts points bidirectionally between PDF page space and rotation-aware Viewer coordinates at a caller-selected DPI
Version 2.402.0
Changed
- Viewer zoom commands now use stable standard levels from 5% through 6400%, including reversible navigation around arbitrary custom values
Version 2.401.0
Added
THPDFVieweradds Ctrl+wheel zoom, vertical wheel scrolling, and Shift+wheel horizontal scrolling without rerendering for scroll-only input
Version 2.400.0
Added
THPDFVieweradds keyboard page navigation, scrolling, zoom shortcuts, and Actual Size, Fit Width, or Fit Page mode selection
Version 2.399.0
Added
THPDFViewerdraws or prints the rotation-aware current view with deterministic aspect-preserving fit and centred placement
Version 2.398.0
Added
THPDFViewerModelcreates caller-owned vector EMF snapshots of any loaded page or the current view, including non-destructive 90-degree view rotation
Version 2.397.0
Added
THPDFViewerModelsaves rotation-aware page snapshots as BMP, JPEG, or PNG to files and caller-owned streams with configurable JPEG quality
Version 2.396.0
Added
THPDFViewer.ResetViewrestores Actual Size, clears view rotation and search highlights while preserving the current page, with matching reset and rotation actions and batched single-render updates
Version 2.395.0
Added
THPDFViewerandTHPDFViewerModeladd clockwise, counter-clockwise, and resettable view rotation that also applies to caller-owned page snapshots without changing the PDF page
Version 2.394.0
Added
THPDFViewerModelcan create caller-owned page snapshots and save the current page as BMP without constructing a Viewer control
Version 2.393.0
Added
THPDFLoadedFormFieldnow exposes field flags, MaxLen, page index, widget bounds, and common Required, NoExport, Multiline, and Password statesGetLoadedFormFieldMaxLengthprovides direct indexed access to loaded text-field length limits
Version 2.392.0
Added
SetDocumentAttachmentMetadatarenames document-level embedded attachments and updates their descriptions before serialization
Version 2.391.0
Added
ExtractLoadedPagesTextToStreamstreams selected loaded-page text as UTF-8 with custom separators and optional BOM outputTHPDFViewerModeladds form-field hit testing and deterministic keyboard navigation across page widgetsTHPDFSignatureInfo.CertificateTimeValidityreports certificate-bound and signed-time validity classifications
Fixed
- Loaded form fields without widget
/Pback-references can now be mapped through page annotation arrays
Version 2.390.0
Added
THPDFWatermarkTemplate.MakeCurveandTHPDFPage.AddCurveWatermarkadd cubic Bezier curves to loaded composites and new-document authoring
Fixed
- Loaded document metadata setters now mark the Info dictionary dirty so incremental saves persist title and author changes
Version 2.389.0
Added
InsertLoadedBlankPageinserts a blank page with caller-defined dimensions at an exact loaded-document positionExtractLoadedPagesTextaggregates text from a one-based page range with a caller-defined separatorGetLoadedFormFieldNameValuePairsandSetLoadedFormFieldNameValuePairsprovide batchname=valueform exchange throughTStringsCMapResourcePathsupports explicit standard CMap deployment paths for services, plug-ins, and custom application layouts
Changed
- The VCL viewer now draws search-hit rectangles and refreshes when the active hit changes on the current page, while linked outline controls follow viewer document changes
- Page rendering now resolves inherited media boxes, rotation, and resources and correctly maps non-zero page origins at every right-angle rotation
Fixed
- Form-name conflicts are rejected before page insertion or append begins when merge renaming is disabled, leaving the destination page count unchanged
- Deleting loaded pages now detaches their AcroForm widget fields and removes empty field-tree branches instead of leaving references to deleted pages
- Cursor-style search helpers and viewer-model misses no longer clear managed text-match records with raw memory operations
- Automatic CMap discovery now passes the actual collection root to the text decoder
Version 2.388.0
Added
- New
DeletePagesremoves one-based page ranges from loaded PDFs, de-duplicates overlapping selections, reports progress, and rebuilds a valid page tree for saving - Page insertion and append merging now accept
THPDFMergeOptionsto copy recursive outlines, register imported AcroForm fields, and deterministically rename conflicting field names - New
AddLoadedRadioButtoncreates a true parent radio field with child widgets, shared export values, and complete on/off appearance states - New
SearchLoadedNextprovides stateless page-local next-match search, whileGetLoadedOutlineEntriesreturns complete recursive outline snapshots with parent and level data - New Windows certificate-store signing overloads select a current-user or local-machine certificate by SHA-1 thumbprint and sign through either CNG or legacy CSP private keys
- New
THPDFLoadedDocumentFacadeexposes typed outline, form, annotation, font, and image collections with mutation and extraction helpers - New
THPDFViewer,THPDFSearchPanel,THPDFOutlineViewer, viewer model, and viewer action classes add reusable VCL page display, navigation, zoom, search, and bookmark controls - New advanced printing, signature validation, page-thumbnail, loaded-image export, and typed loaded-document inspection demos cover the end-to-end workflows
Changed
- Loaded-document printing now builds deterministic collated or uncollated physical page sequences, supports custom paper width and length, and reports printer paper codes, names, and sizes
- System certificate enumeration now includes SHA-1 thumbprints, private-key availability, validity dates, and key-usage metadata
Fixed
- Loaded text-search result growth no longer copies managed string records with raw memory moves, preventing invalid-pointer failures on Win64
- Deleting loaded pages no longer frees shared page resources or leaves stale page-tree counts that reappear after save and reload
Version 2.387.0
Added
- New
PrefetchLoadedPagesrenders a page range into the rendered-page cache on a background worker thread, so a viewer turning pages gets instant warm-cache hits instead of waiting for each render CancelLoadedPagePrefetchstops the worker andIsLoadedPagePrefetchActivereports its state; loading another document or destroying the component cancels an active prefetch automatically- Cached rendering and the prefetch worker are serialised internally, so
RenderLoadedPageToBitmapCachedstays safe to call while a prefetch is running
Version 2.386.0
Added
- New
FlattenLoadedAnnotationsdraws each annotation's normal appearance permanently into the page content at its rectangle and removes the annotation, so markup and form visuals survive in viewers that hide or cannot edit annotations - The pass follows appearance-state dictionaries through
/AS, honours the appearance bounding box and matrix when fitting the rectangle, and can be limited to one annotation subtype or a page range
Version 2.385.0
Added
- New
RenderLoadedPageRegionToBitmaprasterises only a chosen user-space window of a page at the requested DPI, so very large pages can be rendered tile by tile in bounded memory at high resolutions instead of as one oversized bitmap - Tiles align exactly: the bitmap covers precisely the requested region, so adjacent tiles reassemble into the full page without seams
Version 2.384.0
Added
- New
GenerateLoadedPageThumbnailsrenders the selected pages of a loaded document and embeds them as JPEG page thumbnails, the previews shown in viewer page panels; the longest edge size and JPEG quality are configurable, and existing thumbnails are replaced in place GetLoadedPageThumbnailSizereads back an embedded thumbnail's pixel dimensions, andClearLoadedPageThumbnailsremoves thumbnails from the selected pages
Version 2.383.0
Added
EnumLoadedPageElementsnow reports vector path elements alongside text runs and images: each painted path yields an element with its user-space bounding box, the painting operator (stroke, fill, or both), the fill and stroke colours in force, and the segment count- The path walker follows
q/Qnesting andcmtransformations, so shapes drawn inside scaled or translated blocks report their true page coordinates
Version 2.382.0
Added
THPDFPrintOptionsgainsDuplex(simplex, long-edge, short-edge),PaperBin, andPrintQualityfields that are pushed into the printer device mode before the job starts; an explicitOrientationvalue is now applied as well- New
HPDFGetInstalledPrinterslists the system printers, andHPDFGetPrinterCapabilitiesreports a printer's duplex and colour support, maximum copy count, paper bins (with the codes accepted byPaperBin), and supported resolutions
Version 2.381.0
Added
- New
CopyLoadedOutlinesFromDocumentmerges the complete bookmark tree of another loaded document into the current one, preserving titles, nesting, sibling order, and destination view parameters while remapping every destination page by a caller-supplied offset — the companion to page-append merges so combined documents keep both bookmark sets
Fixed
GetLoadedBookmarkPageIndexnow finds bookmarks beyond the first top-level entry and inside nested levels; the previous lookup only matched later bookmarks by coincidence
Version 2.380.0
Added
- New
ImposeLoadedPagesNUplays any page range onto grid sheets (any columns-by-rows arrangement, configurable sheet size and gutter) in reading order, scaling each page into its cell with optional aspect-ratio preservation - New
ImposeLoadedPagesBookletproduces saddle-stitch booklet sheets: pages are padded to a multiple of four and paired in booklet order so double-sided printing and folding yields a correctly ordered booklet - Both imposition calls wrap the source pages as Form XObjects and append the finished sheets after the existing pages, returning the sheet count
Fixed
- Loaded-page rendering now follows an indirect reference on the resources
/XObjectsub-dictionary; pages whose resources arrived as separate objects skipped their images and forms silently
Version 2.379.0
Added
SaveLoadedPagesAsImagesgains two TIFF formats:ifTIFFwrites one single-page TIFF file per page, andifTIFFMultiaggregates the whole page range into one multi-page TIFF, unifying TIFF output with the existing BMP, JPEG, PNG, EMF, and WMF choices- Both TIFF paths honour the requested rendering DPI in the image resolution tags and use lossless Deflate compression
Version 2.378.0
Added
- Loaded-page rendering now draws text rendering modes 1 (stroke) and 2 (fill then stroke) with real glyph outlines for both embedded fonts and system-font fallbacks, using the current stroke colour and line width; the clipping variants 4 to 7 paint like their base modes
Fixed
- Twelve single-operand content operators (
Tc,Tw,Tz,TL,Ts,Tr,w,J,j,M,ri,i) read their operand from the wrong token position and always applied zero; character and word spacing, horizontal scaling, leading, text rise, render mode, line width, caps, joins, and miter limit now take effect when rendering loaded pages
Version 2.377.0
Added
- Loaded-page rendering now honours optional-content (layer) visibility: content inside
BDC /OCmarked sections and XObjects carrying an/OCentry is hidden when its layer is off, following the document's default configuration (/BaseState,/ON,/OFF) - Optional-content membership dictionaries evaluate their
/Ppolicy (AnyOn,AllOn,AnyOff,AllOff) over the member groups - New layer APIs on loaded documents:
GetLoadedOptionalContentGroupCount,GetLoadedOptionalContentGroupName,GetLoadedOptionalContentGroupVisible, andSetLoadedOptionalContentGroupVisibleto inspect and override layer states for rendering; overrides invalidate the rendered-page cache automatically
Version 2.376.1
Fixed
- Loaded-page bitmap rendering now paints image XObjects: the
Do,gs, andshresource lookups previously missed their slash-prefixed operand names and skipped the object silently - The
cmoperator and Form XObject/Matrixvalues now concatenate in the correct order, so translate-plus-scale placement sequences (the standard image positioning idiom) land content at its intended page position
Version 2.376.0
Added
- New
RegisterExponentialFunction,RegisterStitchingFunction, andRegisterPostScriptFunctionAPIs create standalone Type 2, Type 3, and Type 4 function objects for use wherever a function reference is accepted (shadings, halftone spot and transfer functions, tint transforms) RegisterPostScriptFunctionvalidates the calculator program at registration time by trial evaluation, so malformed programs are rejected immediately instead of degrading silently in viewers- New
RegisterSeparationFunccreates a Separation colour space with a caller-supplied tint-transform function object
Fixed
- Rendering Type 2 (exponential) tint transforms with one- or three-component outputs no longer paints black; previously only four-component (CMYK) outputs decoded correctly
- Rendering Type 3 (stitching) tint transforms now supports any number of sub-functions, applies the
/Encoderemapping, and accepts single-entry/Boundsarrays
Version 2.375.0
Added
- Page rendering now evaluates Type 4 (PostScript calculator) tint-transform functions, so Separation and DeviceN colours and gradient shadings driven by calculator programs render their real colours instead of a grey placeholder
- The calculator evaluator covers the complete ISO 32000-1 7.10.5 operator set: arithmetic, comparison, boolean and bitwise, stack manipulation, and
if/ifelseconditionals
Fixed
- Named colour-space selection (
cs/CSoperators) in loaded-page rendering now resolves resource names correctly; previously the lookup missed and the content fell back to the default colour space - Loaded-page rendering now follows indirect references to array-valued colour spaces such as
/Separationand/DeviceNdefinitions stored as standalone objects
Version 2.374.0
Fixed
- XFDF annotation import/export now preserves caret annotation default appearance data through the
<defaultappearance>child and the PDF annotationDAentry
Version 2.373.0
Fixed
- XFDF annotation import/export now preserves caret annotation fringe geometry through the
fringeattribute and the PDF annotationRDentry
Version 2.372.0
Fixed
- XFDF annotation import/export now preserves rubber stamp annotation rotation through the
rotationattribute and the PDF annotationRotateentry
Version 2.371.0
Fixed
- XFDF annotation import/export now preserves text annotation reply relationships through
inreplyto,replyType, and the PDF annotationIRTandRTentries
Version 2.370.0
Added
- XFA numeric, date-time, and password fields with disabled horizontal scrolling now flatten to AcroForm text widgets with the PDF do-not-scroll flag
Version 2.369.0
Added
- XFA text fields with disabled scroll policies now flatten to AcroForm text widgets with the PDF do-not-scroll flag
Version 2.368.0
Added
- XFA text fields with
multiLine="1"now flatten to AcroForm text widgets with the PDF multiline flag
Version 2.367.0
Added
- XFA subform access restrictions now inherit into child widgets so generated AcroForm fields stay read-only when an ancestor is
readOnly,protected, ornonInteractive
Version 2.366.0
Added
- XFA choice-list flattening now maps
commitOn="select"to the AcroForm commit-on-selection-change flag for generated choice fields
Version 2.365.0
Added
- XFA choice-list flattening now maps
open="always"lists to single-select AcroForm list boxes instead of drop-down combo boxes
Version 2.364.0
Added
- XFA choice-list flattening now maps
textEntry="1"combo lists to editable AcroForm combo boxes while preserving typed values outside the option list
Version 2.363.0
Added
- XFA choice-list flattening now prefers
<items save="1">values when a field carries separate display and saved-value option lists
Version 2.362.0
Fixed
- XFDF annotation import/export now preserves FreeText
justificationandtailattributes through the PDF annotationQandITentries - JBIG2 document defaults now match the documented scan-friendly settings for lossy level, isolated black-pixel cleanup and black-dot size
Version 2.361.0
Fixed
- XFDF annotation import/export now preserves standard line leader and caption attributes, including
leaderLength,leaderExtended,caption,leader-offset,caption-style, caption offset values and the import-sideleaderExtendspelling used by compatible XFDF files
Version 2.360.0
Added
- XFA flattening now suppresses output for fields and static draws concealed by
presence="hidden",presence="invisible", orpresence="inactive", including descendants of concealed containers
Version 2.359.0
Added
- XFA flattening now maps field-level
access="readOnly",access="protected", andaccess="nonInteractive"restrictions to the generated AcroForm read-only flag
Version 2.358.0
Added
- XFA flattening now preserves
<choiceList open="multiSelect">semantics by setting the PDF multi-select flag on the generated AcroForm list box
Version 2.357.0
Added
- XFA flattening now maps
<ui><passwordEdit>fields to AcroForm text fields with the PDF password flag, preserving bound values while allowing readers to treat the field as password-style input
Version 2.356.0
Added
- XFA flattening now honours explicit
<bind match="none">field bindings, so fields marked as unbound remain blank instead of taking same-name values from the XFA form or datasets packets
Version 2.355.0
Added
- XFA flattening now honours simple explicit
<bind match="dataRef" ref="...">field bindings such as$record.customer.legalName, soApplyXFAAsAcroFormandFlattenLoadedXFApreserve values stored under a different data node name before automatic same-name matching
Version 2.354.0
Fixed
- XFDF annotation import/export now preserves link annotation
BorderStyleAltchildren through the PDF annotationBorderarray, including corner radii, width and dash pattern values
Version 2.353.0
Fixed
- XFDF annotation import/export now preserves standard
interior-colorattributes for line, square, circle, polygon, polyline and redaction annotations through the PDF annotationICcolor array
Version 2.352.0
Fixed
- XFDF annotation import/export now preserves standard annotation border style and cloudy border effect attributes, including
width,dashes,styleandintensity
Version 2.351.0
Fixed
- XFDF annotation import/export now preserves annotation rich text through
<contents-richtext>and imports popup child geometry and open state into annotationPopupdictionaries
Version 2.350.0
Fixed
- XFDF annotation import/export now preserves additional standard annotation attributes: text open and review state values, line endpoint styles, link and redaction
coords, FreeText default style, default appearance and rotation, and square or circle fringe geometry
Version 2.349.0
Fixed
- XFDF annotation import/export now follows ISO 19444-1 structures for lines, polygons, polylines and ink annotations: line exports include full
start/endcoordinate pairs, polygon and polyline data uses<vertices>child elements, ink data uses<inklist><gesture>, semicolon-separated coordinate pairs import correctly, and unsupported annotation subtypes no longer inflate the exported count
Version 2.348.0
Added
LoadedPageCountproperty,DuplicateLoadedPage,AddLoadedBlankPage,SetLoadedPageRotationValueandGetLoadedPageBoxRectround out the loaded-document page-operation API — duplicate pages, insert blank separators, set rotation and read any of the five page boxes in one callGetLoadedEncryptionMethodreturns the cipher name (RC4-40/RC4-128/AES-128/AES-256),GetLoadedFileStructureInfoaggregates linearization / object-stream / xref-type in one call,LoadedSourceFileSizeis a property, andSetLoadedPDFVersionupdates the versionStampLoadedPageImageandStampLoadedPageImageFromFileembed a JPEG Image XObject (logo / signature image / QR code) onto a loaded page at a given rectangle,InsertLoadedTextdraws a single-line text run, andGetLoadedPageContentLengthreturns the decoded byte countTHPDFPrintOptionsgainsIgnoreHardMargin(offset printer hard margins so content is not clipped) andAutoRotate(landscape pages print landscape automatically)SaveLoadedPagesAsImagesgainsBMPPixelFormat/BMPMonochrome(mono / 8-bit export) andJPEGScale(1 / 2 / 4 / 8 sub-sampled JPEG decode for fast thumbnails)CompressLoadedDocumentzlib-compresses every uncompressed stream in the loaded object graph and writes/Filter /FlateDecode, shrinking output size
Fixed
StampLoadedPageTextandStampLoadedPageImagenow transparently decompress FlateDecode content streams before appending operators — previously stamping onto a compressed/Contentssilently corrupted the zlib payload and the appended text/image disappeared
Version 2.347.0
Added
AddLoadedOutlinecreates a new bookmark on a loaded PDF at any nesting level (ParentIndex = -1for top-level), with a/Dest [page /XYZ x y zoom]target — the single highest-requested loaded-document feature, closing the gap that HotPDF could read/modify/delete bookmarks but never create themSetLoadedOutlineDestinationandSetLoadedOutlineURIrewrite an existing bookmark’s target page or switch it to a URI actionResolveLoadedNamedDestinationturns a named destination string into a zero-based page index, andAddLoadedNamedDestinationregisters a new anchor on the loaded document’s/Names /DeststreeGetLoadedBookmarkPageIndexis a convenience lookup: pass a bookmark title, get back the page it points to
Version 2.346.0
Fixed
- Image scaling quality now honours
/Interpolate: HALFTONE stretch mode is used by default (smooth downscale) and COLORONCOLOR when the image explicitly sets/Interpolate false, so small raster images keep their hard edges where the author intended instead of always blurring
Version 2.345.0
Fixed
- TJ array kerning adjustments are no longer discarded: the numeric elements between string runs advance the text matrix by
-value × FontSize / 1000, so tightly-spaced titles and logo lettering from Word / Illustrator place glyphs at the intended offsets - Tw (word spacing) now also fires on the CID ideographic space (U+3000, code
$3000), so justified Japanese / Chinese text gets its word spacing instead of only ASCII code 32 - Font weight / italic detection now consults
/FontDescriptor /Flags(bit 18 ForceBold) and/ItalicAnglein addition to the/BaseFontname, so subset-prefixed fonts whose name carries no-Boldsuffix still render at the right weight
Version 2.344.0
Added
GetLoadedTrappedreads the/Trappedkey from the Info dict (True/False/Unknown), where it was previously write-only — PDF/X preflight workflows can now round-trip the trap stateGetLoadedDocumentMetadataXMLreturns the raw XMP metadata stream bytes so PDF/A documents whose Info dict is absent can still exposedc:title/dc:creator/xmp:CreateDateGetLoadedCollectionInforeads the/CollectionName of a PDF Portfolio (EmbeddedFiles name tree still carries the file list)GetLoadedOutlineChilddescends one level into the bookmark tree, returning the/Firstchild of a top-level outline entry, so nested chapter / sub-chapter bookmarks are no longer invisibleRotateLoadedPagesrotates every page in a range by a given angle (accumulating onto existing/Rotate), the batch counterpart to per-page rotationSetLoadedPageBoxForRangesets a page box (Media/Crop/Bleed/Trim/Art) for every page in a range in one callGetLoadedViewerPreferencesnow also readsHideWindowUIandCenterWindow, matching the six keys the writer emits (previously only four came back)
Version 2.343.0
Fixed
- The
W n/W* nclip idiom now applies the clip: thenoperator builds the pending path and callsSelectClipPathinstead of discarding both the path and the pending clip, so rect / container clips written asre ... W nno longer leak their contents past the boundary SetMiterLimitis now pushed to GDI before building the stroke pen, so sharp joins honour the PDF miter limit (default 4) instead of GDI’s default 10 — eliminating the long spikes on acute-angle joins- Type 3 glyphs declared with
d0(colour-permitting) now explicitly clear the colour-suppress flag, so a precedingd1glyph no longer bleeds its colour suppression into ad0glyph
Added
ri(rendering intent) andi(flatness) operators are now consumed and stored on the graphics state (RenderingIntent/Flatnessfields), where they were previously silently skipped
Version 2.342.0
Added
- Text rendering mode operator
Tris now consumed; mode 3 (invisible) skips painting the text run entirely, so the OCR / form-background hidden text layer no longer paints as overlapping garbage glyphs — the most commonTrcase in real-world PDFs. Modes 1 / 2 (stroke) currently fall back to fill pending per-glyph outline support - Marked-content operators
BMC/BDC/EMCand theDP/MPproperty variants now maintain a depth counter on the renderer, the prerequisite for a later round’s OCG / OCMD visibility evaluation;BX/EXcompatibility operators maintain their own counter so the renderer knows it is inside a compatibility block
Version 2.341.0
Fixed
- Bezier shorthand operators
vandyare now handled by the page renderer, where they were previously silently skipped — rounded rectangles, circles and the curves produced by Illustrator / PowerPoint / InDesign render correctly instead of being truncated or dropped DrawTextRunnow honoursTz(horizontal text scaling),Tw(word spacing, applied to the space glyph) andTs(text rise) so justified Word exports place glyphs at the right width, headings that are horizontally stretched/squeezed keep their length, and super/subscript text lifts off the baseline — previously those three text-state values were stored but never consumed
Version 2.340.0
Added
SearchLoadedPageTextWholeWordfilters the substring matches produced bySearchLoadedPageTextdown to those that sit on word boundaries (the glyph before the match start and after the match end must not be a word character), providing whole-word matching without padding the search string with a trailing spaceGetLoadedSearchHitRectcollapses a match’s glyph range into a single bounding rectangle (user-space Left/Top/Right/Bottom, padded by a fraction of the font size), so a viewer can draw one highlight box per hit instead of walking the glyph array
Version 2.339.0
Added
ExtractLoadedPageTextColumnsreconstructs multi-column text: glyphs are clustered into baselines by a Y tolerance, each row is sorted by X, and a row splits into separate columns (tab-separated) wherever the gap between consecutive glyphs exceeds a configurable multiple of the median glyph advance — the column-aware counterpart toExtractLoadedPageTextLayoutthat previously declared column detection out of scopeTHPDFPageElementnow carries aBaselineRole(brNormal/brSuperscript/brSubscript) populated byEnumLoadedPageElements: a run whose font size is markedly smaller than the page median and whose Y origin sits above or below the dominant baseline is flagged
Version 2.338.0
Fixed
- Image XObjects are now placed by transforming the unit square through the current CTM, instead of being stretched across the whole page bitmap — the previous
StretchDraw(Rect(0,0,W,H))misplaced every image on the page; images now land in the rectangle the content stream actually specifies
Added
/ImageMaskstencil images are detected on the render side and painted with the current fill colour (PDF 8.9.6.1), where the renderer previously drew them as a plain greyscale bitmap
Version 2.337.0
Added
- Render-side stroke style: the page renderer now honours the
J(LineCap: butt/round/square),j(LineJoin: miter/round/bevel),M(MiterLimit) andd(LineDash array + phase) operators by building a geometric pen viaExtCreatePeninstead of the previous fixedCreatePen(PS_SOLID, ...), so rounded joins, dashed borders and square end caps render correctly - Render-side
gs(ExtGState) operator: the named ExtGState dictionary in/Resources/ExtGStateis now consumed forLW/LC/LJ/ML/ca/CAand applied to the graphics state, where the renderer previously dropped the operator entirely - Graphics state extended with
LineCap/LineJoin/MiterLimit/LineDash/DashPhase/FillOpacity/StrokeOpacityfields, all with PDF-default initial values
Fixed
- Clip (
W/W*) now sets the GDI polygon fill mode (ALTERNATEvsWINDING) beforeSelectClipPath, so even-odd and nonzero-winding clip intersections are no longer identical
Version 2.336.0
Security
- The render-side
/Indexedcolour-space parser now clampsHiValto the spec-mandated[0..255]range, closing a buffer-overread vector where a malformed HiVal letnComps × indexHighoverflow a 32-bit byte count and read past the lookup table
Added
AttachLoadedAnnotationMeasurewrites a/Measuredictionary (PDF 1.7 §12.5.6.13) onto a Line or Polygon annotation, carrying the/NumberFormatarray (unit label, decimal/fraction/round style, precision), the/Scaleratio and the/CYXisotropy factor — so a viewer can compute the real-world distance or area the shape spans
Version 2.335.0
Added
- Render-side
sh(shading) operator: axial (Type 2) and radial (Type 3) shadings are now painted instead of silently dropped, so PDFs whose backgrounds rely on Word/Excel-style gradients render their colour blend. The shading is discretised into bands along its axis and each band is filled with the colour the shading’s function evaluates to at that point
Version 2.334.0
Added
- Render-side function-object evaluator
HPDFEvalTintTransformnow resolves Type 2 Exponential (C0 + xN·(C1-C0)with Domain/Range clamping), Type 0 Sampled (8/16/32-bit, Encode mapping, nearest-sample) and Type 3 Stitching (Bounds-selected sub-function recursion) — soSeparation/DeviceNtint transforms and shading functions evaluate to real alternate-space colours instead of the v2.333.0 grey fallback. Type 4 PostScript calculators degrade gracefully - The page renderer now wires the colour-space unit’s indirect-ref resolver and decoded-stream reader to its document access at construction time, so tint-transform stream objects can be decoded through the same path as image XObjects
Version 2.333.0
Added
- Render-side CIE-based colour spaces:
CalGray,CalRGB(gamma + 3×3 matrix) andLab(Lab→XYZ→sRGB with the 6/29 breakpoint cube) now resolve to real colours instead of degrading to black; the Bradford-adapted sRGB matrix is cached per white point so per-pixel work stays a single 3×3 multiply - Render-side
ICCBasedcolour space resolves through its/Alternate(or an N-based DeviceRGB/Gray/CMYK guess when Alternate is absent), so pages carrying an ICC profile display correctly without an lcms dependency - Render-side
SeparationandDeviceNspot-colour spaces: the alternate space, tint-transform function reference and component count are parsed; the tint transform is wired through a pluggable evaluator so spot-colour pages are distinguishable from “colour not set” (full tint evaluation lands with the function engine) - Generic colour operators
cs/CS/sc/SC/scn/SCNnow handled by the page renderer, the prerequisite for every non-Device colour space to take effect on a loaded page - Unified colour resolution through
HPDFResolveColorwith the extendedTHPDFColorSpaceFamilyandTHPDFCIEParamsrecords, replacing the per-space ad-hoc logic
Version 2.332.0
Added
RenderSignatureFieldAppearancepaints a preset signature-field appearance template — border, light fill and up to four labelled text lines (“Digitally signed by <Name>”, “Reason: ”, “Location: ”, “Date: ”) — selected via aTHPDFSignatureDisplayOptionsset as a convenience wrapper aroundAttachSignatureFieldAppearanceEnumerateSystemCertificateswalks a Windows certificate store (typicalMY/ROOT/CA) via dynamically loadedCrypt32.dlland returns subject / issuer display names plus the raw DER for each certificate, the building block for a “pick a certificate / USB Key” signer UI
Security
- Signature hash algorithm is SHA-256 by default with PAdES Seed Value
DigestMethodsalready accepting SHA-256 / SHA-384 / SHA-512, so no SHA-1 signing path exists
Version 2.331.0
Added
RenderLoadedPageToDCdraws one page straight into a caller-supplied device context (printer canvas, off-screen surface, customTCanvas), removing the bitmap round-trip for print and high-DPI workflowsRenderLoadedPageToClipboardplaces a page on the clipboard either as a 24-bit bitmap or as an enhanced metafile (vector text), so paste-into-Word / paste-into-image-editor just worksPrintLoadedDocumentwith aTHPDFPrintOptionsrecord drives the VCLTPrinterthrough a page range, DPI, copies, collation, FitPage scaling and per-page render — the document library now ships its own print path instead of leaving every caller to wire one up
Version 2.330.0
Added
GetLoadedPageLabelreads back the/PageLabels /Numsrange that covers a given page index, returning the style code, prefix and start number — the read counterpart toSetLoadedPageLabel, so labels a caller did not create itself can now be inspected and round-trippedStitchLoadedPageSideBySideExperforms the side-by-side 2-up stitch with a configurable horizontal gutter and source-page scale factor, where the legacyStitchLoadedPageSideBySidewas fixed to half width with no gap
Version 2.329.0
Added
AddLoadedRubberStampAnnotationwith aTHPDFRubberStampIconenum covering all 14 standard stamp names (Approved, AsIs, Confidential, Departmental, Draft, Experimental, Expired, Final, ForComment, ForPublicRelease, NotApproved, NotForPublicRelease, Sold, TopSecret) so viewers render the familiar bitmaps without a custom appearance streamSetLoadedAnnotationCloudyBorderturns a Square / Circle / Polygon annotation into a cloudy (cloud-burst) border by writing/BE /S /C /Iplus the/ICinterior colour arraySetLoadedLineAnnotationCapssets the/LEline-end (arrowhead) styles for Line / Polyline annotations from the newTHPDFLineEndStyleenum (None / OpenArrow / ClosedArrow / Butt / ROpenArrow / RClosedArrow / Slash / Diamond)
Version 2.328.0
Added
EnsureLoadedFieldAppearanceStreamgenerates a/AP /NForm XObject for an existing AcroForm field from its/DA+/V+/Rect, so viewers that ignore/NeedAppearancesstill render the field value without a round-trip through AcrobatApplyLoadedFieldValidationattaches a Format / Keystroke / Validate script trio to a field using the AcrobatAF*helpers, covering Number, Percentage, Date, Time, Currency, ZipCode, SSN, Phone and ArbitraryMask input kinds — the caller no longer has to hand-writeAFNumber_Format/AFDate_FormatEx/AFRange_ValidateJavaScriptApplyLoadedFieldCalculationattaches anAFSimple_Calculatescript so a field aggregates the values of a named source field set via Sum / Average / Product / Minimum / Maximum
Version 2.327.0
Added
- Visual search-and-replace
SearchAndRedactReplaceLoaded: for every hit of the needle it masks the match rectangle with a chosen colour (or skips the mask withHPDF_NO_MASK) and stamps the replacement text on top, complementing the byte-levelReplaceLoadedPageTextwhen the original font lacks a reverse char-code table or the replacement needs a different font - Region text extraction
GetLoadedPageTextInRegionconcatenates every glyph whose origin falls inside a user-space rectangle, with newlines between baselines — the building block for “copy text from this box” UI flows - Cursor-style
SearchLoadedFirstreturns the first match as a singleTHPDFTextMatch, so callers can walk hits without managing a whole match array
Version 2.326.0
Added
- Document-wide
MeasurementUnitproperty (muPoints/muPixels/muInches/muMM/muCentimeters/muTwips) so every high-level authoring coordinate is converted to PDF points throughToPDFUnit/FromPDFUnit - Placeholder substitution in watermark text:
<%PageNo%>,<%TotPage%>,<%FileName%>,<%ShortDate%>,<%LongDate%>,<%ShortTime%>,<%LongTime%>are resolved per page when stamping, so “Page X of Y” and dated stamps are one call AddTextWatermarkExpage method that combines placeholder substitution, unit-aware coordinates and a unifiedTHPDFWatermarkBaserecord (angle, opacity, position presets)- Shape-watermark page helpers
AddRectangleWatermark,AddEllipseWatermark,AddLineWatermarkandAddPolygonWatermark, each wrapping the path primitives in aq/Qgraphics-state pair with registered fill/stroke alpha - Unified
THPDFWatermarkTemplaterecord withMakeText/MakeRectangle/MakeEllipse/MakeLine/MakePolygonfactories plus aTHPDFWatermarkTemplateArraycomposite type - Loaded-document watermarking:
StampLoadedPageTextandStampLoadedPagesTextappend a transparent, rotated text run to existing pages, honouring theMeasurementUnitand the same placeholder set;StampLoadedPagesCompositeapplies a whole template array (text + shapes) to a page range - Z-order control on loaded-document stamps:
Underlay = Trueprepends the watermark stream before the existing/Contentsvia the array form, so the watermark renders behind the page content EnumLoadedPageElementsreturns text runs (glyphs aggregated by baseline + font) and image XObject placements asTHPDFPageElementrecords with bounding boxesSaveLoadedPagesAsImagesmulti-format export: BMP / JPEG / PNG raster plus EMF / WMF vector, one file per page, with configurable DPI, file-name prefix and JPEG qualityGetLoadedPageMetafilevector render of one page to aTMetafilevia the newTHPDFPageRenderer.ExecuteToDCpath, keeping text and vector paths scalable for print, clipboard and merge workflows
Version 2.325.3
Fixed
- Aggregating batch preflight reports no longer overflows the total-bytes count when a single input file is over 2 GB
Version 2.325.2
Fixed
- Saving a document over 2 GB with object streams enabled (
UseObjectStreams) no longer writes a corrupted cross-reference stream; the object offsets and cross-reference stream position, previously narrowed to a 32-bit integer, are now carried as 64-bit values through the whole write
Version 2.325.1
Fixed
- Four recovery-only scans used when a damaged PDF cannot be parsed normally — object-stream decompression, object-stream discovery, and two reference-repair passes — no longer read a file over 2 GB into a truncated buffer; each now skips that fallback on such a file instead of scanning corrupted data
Version 2.325.0
Added
- EMF/WMF import now renders
EMR_GRADIENTFILLrectangle gradients (GRADIENT_FILL_RECT_H/GRADIENT_FILL_RECT_V) as PDF Type 2 axial shading patterns, mapping eachTRIVERTEXcolour pair to anRegisterAxialGradientcall and filling the rectangle with the resulting pattern; previously this record was a documented no-op, now Word/Excel/PowerPoint gradient rectangles in EMFs render with the correct left-to-right or top-to-bottom colour blend
Version 2.324.0
Added
- EMF/WMF import now parses
EMR_GDICOMMENTcomments, distinguishing Adobe PDF passthrough markers (0x416F4650= "AoFP", MS-EMF §2.3.3) from other comment types. When the Adobe marker is present the comment payload is scanned for thepdfmarkkeyword and surfaced via debug logging so users can identify which EMF producers emit PostScript pdfmark fragments; other comment types remain no-ops. Both HotPDF and llPDFLib previously carried only an empty stub for this record
Version 2.323.0
Added
- EMF/WMF import now explicitly recognises
EMR_GRADIENTFILLas a documented no-op (PDF Type 2/3 shading patterns could express gradient fills but viewer rendering is inconsistent and GDI's per-pixel Gouraud interpolation does not map cleanly); previously this record was silently dropped without a case-table entry
Version 2.322.0
Changed
- PFX-based signing now routes inputs of 64 MB or larger through a streaming chunked signer (
HPDFCMSSignPDFStreamChunked) that scans for the/ByteRange+/Contentsplaceholders in 256 KB rolling reads, digests the two byte-range windows viaHPDFCMSSHA256StreamRanges, then copies the input stream to the output stream while patching the placeholder bytes in flight, so peak memory stays bounded by the 256 KB buffer instead of the entire file size; smaller inputs keep the fast in-memoryPos()+Move()path unchanged
Version 2.321.0
Added
- Optional-content group usage dictionaries:
SetOptionalContentGroupUsageattaches a/Usageentry to a registered OCG (PDF 1.7 §8.11.4.4 Table 100) so viewers auto-show/hide layers by context. CategoriesView/Print/Exportwrite<Category>State=ON/OFF;Zoomwrites a real-pairMin;Language/Creatorwrite string values - Outline subtree copy:
THPDFDocOutlineObject.CopySubtreedeep-clones the entire child subtree of a node under a new parent, propagating Title / Color / Bold / Italic / Opened while minting fresh object numbers and new destinations - Outline topology helpers
IsDescendant(cycle-safe predicate used byMoveTo) andMoveTo(re-parent a node, detaching from its old sibling chain and re-attaching as the last child of the new parent, with full/Prev//Next//First//Last//Countmaintenance on every affected ancestor)
Version 2.320.0
Added
- Nested optional-content /Order tree:
BeginOptionalContentOrderGroup/AddLayerToOptionalContentOrder/EndOptionalContentOrderGroupbuild a labelled, arbitrarily nested presentation tree (PDF 1.7 §8.11.4.3/Order) so the layers panel can show hierarchical groupings like "Background [Lines Fills Images]" instead of the historical flat list. When none of the new helpers are called the previous flat /Order mirroring/OCGsis preserved byte-for-byte
Version 2.319.1
Fixed
- Loading a PDF whose embedded JBIG2 image uses the standard Huffman coding option (rather than the more common MQ arithmetic coding) no longer fails outright: the loader now retries with the alternate decoding engine before giving up, so such images load successfully regardless of which decoding engine is preferred
Version 2.319.0
Changed
- EMF/WMF import now applies a centralised InPath gate at the
ExecuteRecordentry: while a path bracket is open (BeginPathseen,EndPath/AbortPathnot yet reached) only path-construction records (line/curve/polygon/move/close/end/abort plus the coordinate-system and DC-state records) reach their handlers; text and bitmap records that previously leaked into the open path are now dropped centrally, mirroring llPDFLib's entry-point guard and eliminating a class of malformed-PDF bugs from stray records inside a path bracket
Version 2.318.0
Added
- Optional-content radio-button groups: new
RegisterOptionalContentRadioGroupdeclares mutually exclusive layer sets whose members turn each other off (PDF 1.7 §8.11.4.3/RBGroups); typical use is single-choice layer panels like "Draft / Review / Final"
Version 2.317.0
Added
THPDFDocOutlineObject.InsertBefore/InsertAftersplice a new sibling into the existing outline doubly-linked list at an arbitrary position, complementing the existingAddChild(append) andAddChildFirst(prepend) helpers so outline trees can be built in any order without detaching and re-attaching nodes- EMF/WMF import now explicitly recognises the ICM/palette family (
EMR_SETBRUSHORGEX,EMR_SELECTPALETTE,EMR_SETCOLORADJUSTMENT,EMR_SETICMMODE,EMR_CREATECOLORSPACE,EMR_SETCOLORSPACE,EMR_DELETECOLORSPACE,EMR_GDICOMMENT) and the no-PDF-mapping family (EMR_FRAMERGN,EMR_INVERTRGN,EMR_PAINTRGN,EMR_FLATTENPATH,EMR_WIDENPATH,EMR_SETMETARGN,EMR_OFFSETCLIPRGN,EMR_PLGBLT,EMR_POLYTEXTOUTA,EMR_POLYTEXTOUTW), forwarding to the GDI reference DC where applicable without emitting to the PDF content stream; previously these records were silently dropped, now they are documented and kept consistent with the GDI side
Version 2.316.0
Added
- New
JBIG2Benchmarkdemo generates four PDFs from the same three-page synthetic scan, one perTHPDFJBIG2Optionsconfiguration (per-image lossless, per-imageLossyLevel=5, cross-page accumulated globals, rectangle symbol extraction), printing each output size so the trade-offs between the v2.310.0 scan-friendly defaults, the v2.314.0 cross-page accumulator, and the extraction modes can be compared directly
Version 2.315.0
Changed
- The cross-page accumulated JBIG2 dictionary now auto-batches: once the running glyph-width total crosses 131071 pixels the current dictionary is frozen, emitted as one
/JBIG2Globalsstream, and the accumulator is reset, so the next batch starts a fresh globals stream. Mirrors llPDFLib'sTotalWidth-based spilling and keeps individual globals streams at a size readers handle efficiently on very large scan runs
Version 2.314.0
Added
- Cross-page accumulated JBIG2 symbol dictionary: opt in with
THPDFJBIG2Options.AccumulateGlobalsAcrossPages := True(alongside the existingUseSymbolDictionary+UseGlobalSegments+ native fallback switches) and consecutive 1-biticJBIG2images share one growing in-memory symbol dictionary and one/JBIG2Globalsindirect stream, instead of each image emitting its own dictionary. NewTHPDFJBIG2SymbolDictionaryholds the persistent glyph set with the same lossy / lossless matching the per-image encoder uses; newsmoke_jbig2_accum_decodeverifies two pages of different glyph layouts share a single globals object reference and decode back to the source pixels bit-for-bit
Version 2.313.0
Added
- JBIG2 global-segment streams produced by the native symbol-dictionary encoder are now content-addressed at the document level via
THPDFJBIG2GlobalsPool, so images that yield byte-identical globals share one/JBIG2Globalsindirect stream instead of each emitting their own; newsmoke_jbig2_globals_multismoke covers three pages of identical glyphs collapsing onto a single shared globals stream
Version 2.312.0
Added
- EMF/WMF import now covers
EMR_SCALEVIEWPORTEXTEX,EMR_SCALEWINDOWEXTEX,EMR_EXCLUDECLIPRECT,EMR_CREATEDIBPATTERNBRUSHPT,EMR_SETMITERLIMIT,EMR_SETTEXTJUSTIFICATION, andEMR_SETROP2, closing the seven-record gap with llPDFLib so EMF streams emitted by older GDI toolchains no longer silently drop those records;SETMITERLIMITandSETROP2take effect immediately, while the others store state for a later render-side hookup without perturbing current coordinate or clip output
Version 2.311.0
Added
HPDFCMSSHA256StreamRangesnow digests the two PDF/ByteRangewindows straight from aTStreamin 256 KB chunks, so multi-GB signed PDFs can be hashed without first copying the whole file into anAnsiString; closes the gap with llPDFLib's stream-basedCalcHash, which the existing in-memoryHPDFCMSSHA256ByteRangescould not match for very large inputs
Version 2.310.0
Changed
THPDFJBIG2Optionsnow defaults to scan-friendly settings (LossyLevel = 5,RemoveIsolatedBlackPixels = True,BlackDotSize = 3) so 1-bit scanned images compress much smaller out of the box; setLossyLevel = 0orLossless = Trueto restore strict lossless matching
Performance
- xref table growth is now geometric (small documents +N, larger documents +25%) instead of reallocating the dynamic array on every indirect object, removing the O(n²) cost that dominated loading and building large PDFs with many objects
Version 2.309.4
Added
- Added
THPDFDocOutlineObject.AddChildFirstso generated outline nodes can prepend a child item before existing siblings while preserving the saved outline order
Version 2.309.3
Added
- Added
pmUseOCtoTHPDFPageModeso generated documents can request the optional-content layers panel with catalog/PageMode /UseOC
Version 2.309.2
Added
- Added title-string overloads for
THPDFPage.AddTextAnnotationso generated text annotations can write the PDF/Ttitle or author entry while preserving the existing icon, color, and open-state arguments
Version 2.309.1
Fixed
- Clearing
THotPDF.OutputStreamby assigningnilnow restores normalFileNameoutput instead of leaving the document in stream-output mode
Version 2.309.0
Fixed
- EMF/WMF import now honors
EMR_EXTSELECTCLIPRGNregion modes for copy, intersect, and exclude clipping while keepingEMR_SETWORLDTRANSFORM,EMR_MODIFYWORLDTRANSFORM, andEMR_SETPIXELVcovered by non-GUI regression tests
Version 2.308.0
Added
- FastReport add-on design-time registration now ships as
frxHotPDFDesign, placingTfrxHotPDFExporton the FastReport VCL palette while keeping the existing runtime unit andRegisterentry point available for compatibility
Version 2.307.0
Added
SignPDFWithPFXnow parses legacy PKCS#12 PBE-SHA1-3DES encrypted PFX files in addition to PBES2 AES-256-CBC profiles
Version 2.306.0
Changed
- Repeated calls that add the same encoded image now reuse the existing PDF image XObject while preserving distinct output for different JPEG quality settings and mask relationships
Version 2.305.0
Added
TfrxHotPDFExport.PageRangenow lets FastReport exports opt in to one-based page filtering such as1,3-5while reusing HotPDF's shared page-range parser
Version 2.304.0
Fixed
- XFA-to-AcroForm table flattening now lets all-growable single auto columns inherit the table content width, so fields without their own
wstill receive a measurable width and preserve row spacing
Version 2.303.0
Fixed
- XFA-to-AcroForm table flattening now lets growable text cells inherit fixed
columnWidthsvalues when they omit their ownw, so row heights are measured and following rows stay separated
Version 2.302.0
Fixed
- XFA-to-AcroForm flattening now measures growable text fields inside nested
layout="tb"and wrappedlayout="lr-tb"flows, and table rows now keep growable text-cell height when positioning following fields
Version 2.301.0
Fixed
- XFA-to-AcroForm flattening now keeps text fields in
layout="tb"andlayout="lr-tb"flow containers when they omit an explicithheight, measuring their wrapped content height instead of skipping them as unsupported growable layout
Version 2.300.0
Fixed
THotPDF.ExtractObjectFromStreamnow returns the parsed dictionary for materialized object-stream members and no longer fabricates raw-data diagnostic keys when callers inspect loaded PDF 1.5+ object streams
Version 2.299.0
Added
THotPDF.DecompressAllObjectStreamsis now public and forces loaded PDFs that used object streams to save with compact objects materialized as normal indirect objects instead of copying the source object-stream layout
Version 2.298.0
Fixed
- AcroForm field creation now rejects duplicate root field names for both new documents and loaded-document editing while preserving the valid shared-parent workflow for radio button groups
Version 2.297.0
Added
TDBGridHotPDFExportOptionsand theTDBGridHotPDFExportcomponent now exposePDFAComplianceandPDFXComplianceso DBGrid table exports can opt in to the same HotPDF standards-conformance gates used by direct document generation
Version 2.296.0
Added
TQRHotPDFExportFilterandTdxHotPDFExportOptionsnow exposePDFAComplianceandPDFXComplianceso QuickReport and DevExpress exports can opt in to the same HotPDF standards-conformance gates used by direct document generation
Version 2.295.0
Added
TfrxHotPDFExportandTppHotPDFDevicenow exposePDFAComplianceandPDFXComplianceso report exports can opt in to the same HotPDF standards-conformance gates used by direct document generation
Version 2.294.0
Added
- Form XObject and tiling pattern canvas builders now let callers compose reusable resources through typed drawing helpers before registering them for page reuse
THPDFExtGStateOptionsnow lets one ExtGState combine transparency, blend mode, line width, line cap, line join, and miter limit settings
Version 2.293.0
Added
- Native JBIG2 encoding now supports symbol-dictionary compression with optional shared global dictionaries, rectangle and image-only extraction modes, lossy pixel-difference guards, and PDF/A fallback to CCITT where JBIG2 is not permitted
- EMF/WMF rendering now handles
TransparentBltandMaskBltbitmap records through PDF image mask and transparency paths - FastReport and ReportBuilder native export modes now cover more object-level output, including styled memo/rich text, barcode, picture, vector shape, line, clipping, frame, dash, and URL annotation paths
- The HugeFileBenchmark demos now report working-set and peak-working-set metrics, support an opt-in memory limit, and keep generated work files separate from report output
- The Delphi
PDFOptimizedemo now documents producer-side compression choices for content streams, object streams, JPEG quality, CCITT, and JBIG2 output
Fixed
- Demo coverage checks now include English-baseline demo READMEs, map consolidated C++Builder samples to their actual files, and keep GUI demos disabled by default in routine test runs
Version 2.292.32
Added
- EMF/WMF hatch brushes now map to PDF tiling patterns so imported CAD drawings and reports can preserve hatch texture instead of flattening those fills to solid color
Fixed
- Loaded-document dictionary edits now mark objects dirty so
SaveLoadedDocumentrewrites changed PDFs instead of copying the original source after outline and object-tree edits - Loaded outline removal now relinks sibling bookmarks, and non-rotated underline and strikeout text decorations now emit filled rectangle operators
Version 2.292.31
Added
THPDFEmfOptions.ShowNullBrushnow lets EMF/WMF rendering expose null-brush fills for diagnostic and CAD-style import workflows while preserving unfilled null brushes by default
Version 2.292.30
Added
THPDFEmfOptions.CanvasOvernow lets page Canvas replay place existing PDF content above the parsed Canvas metafile while the default keeps the current Canvas-on-top order
Version 2.292.29
Added
THPDFEmfOptions.Redrawnow lets EMF/WMF callers keep the default temporary redraw path or opt out and parse the original metafile directly
Version 2.292.28
Added
THPDFEmfOptions.UseFramenow lets EMF/WMF rendering clip imported output to the EMF header frame for metafiles that rely on declared frame bounds
Version 2.292.27
Added
THPDFEmfOptions.ShowNullPennow lets EMF/WMF rendering expose null-pen outlines for diagnostic and CAD-style import workflows while preserving invisible null pens by default
Version 2.292.26
Added
THotPDF.SetFormFieldTooltipnow lets applications assign AcroForm/TUfield hints by field name for widgets created through the existingAdd...field methods
Version 2.292.25
Fixed
TfrxHotPDFExportnative-object mode now preservesTfrxPictureViewclipping and frame rendering when picture views are written directly as HotPDF image XObjects
Version 2.292.24
Added
TfrxHotPDFExportnative-object mode now maps supported horizontal one-dimensional FastReport barcode views directly to HotPDF barcode operators, while keeping human-readable text, checksum generation, supplemental text, rotation, colored bars, and unsupported symbologies on the existing fallback path
Version 2.292.23
Added
TppHotPDFDevicenative draw-command mode now maps supported one-dimensional ReportBuilder barcode draw commands directly to HotPDF barcode operators, while preserving the enhanced-metafile fallback for commands that need human-readable text, add-on codes, check-digit calculation, colored bars, rotation, or unsupported postal symbologies
Version 2.292.22
Fixed
- Automatic PDF viewer launch can now be suppressed in non-interactive runs with
HOTPDF_SUPPRESS_AUTO_LAUNCH=1, and the bundled test and smoke runners enable that guard by default so non-GUI regression runs do not open viewer windows
Version 2.292.21
Added
THPDFPage.ShowMetafileExnow has a per-callTHPDFEmfOptionsoverload, letting callers override EMF/WMF rendering settings for one metafile draw while preserving document-level defaults