Съвместимост на потоци и отмествания за PDF 1.7
Версия 3.12.5 затяга съвместимостта с речници на потоци за PDF 1.7, стандартни криптографски филтри за защита, парсиране на синтаксиса на обекти, xref потоци и изход с байтови отмествания. Общото декодиране на потоци третира /DP като стандартен синоним на /DecodeParms, разрешава индиректни записи в масивите с параметри за декодиране, приема стандартните съкращения на филтрите /AHx и /LZW и третира Identity /Crypt филтъра като операция без ефект на обичайния етап на декодиране на филтрите
При зареждане на PDF PDFlibPas третира записа Catalog /Version като ефективната версия на документа, когато тя е по-нова от версията в заглавката. Това съответства на правилото на PDF 1.7 за замяна на версията в каталога
Стандартно шифрованите документи вече запазват по-последователно изборите за криптографски филтри StrF, StmF, EFF, Identity, None и именувани филтри от типа StdCF по време на зареждане, декриптиране, копиране и записване. Потоците с метаданни спазват EncryptMetadata=false, потоците с вградени файлове носят /Type /EmbeddedFile, така че филтърът за вградени файлове може да се прилага отделно от обикновените потоци, а новозаписаните стойности Length за AES криптофилтри използват битови дължини
Версия 3.56.38 гарантира, че обикновеното API криптиране създава или запазва trailer /ID, преди да се генерират данните за стандартната защита. Изходът с AES-256, записан от изходни PDF файлове без /ID, вече се зарежда отново като шифрован чрез EncryptionStatus и може да бъде декриптиран изрично с Decrypt
Парсирането на PDF имена вече третира както лявата, така и дясната фигурна скоба като разделители. Имена като /Name} следователно се токенизират при дясната скоба, вместо да поглъщат разделителя в токена на името
Парсирането на литерални низове вече игнорира обратната наклонена черта при непознати escape последователности и ограничава \ddd парсирането до осмични цифри. Последователност като \128 следователно се декодира като LF, последван от символ 8, вместо 8 да се третира като част от осмичния escape
Записите от тип 2 в xref потоците за компресирани обекти запазват номера на своя object stream, дори когато той е по-голям от дължината на PDF байтовете. Проверка за разумност на размера на файла остава ограничена до обикновени xref записи, при които второто поле е байтово отместване
xref таблиците при пълен запис, startxref, линейни xref таблици, стойностите Prev/XRefStm в xref потоците и стойностите ByteRange на цифровите подписи използват помощни функции за форматиране и парсиране с 64-битова точност. Това предотвратява стесняване на големи байтови позиции през 32-битови цели числа, преди да бъдат записани в PDF синтаксиса
Когато xref поток се пренаписва като класически trailer речник, ключовете DecodeParms, които са само за потоци, се премахват от изходния trailer. Външните потоци на вградени файлове също запазват FDecodeParms, когато FFilter бъде повишен до Filter
Потвърждението за версия 3.12.5 обхвана Delphi Win32 и Win64 DUnitX пакетите, като 141 от 141 теста преминаха успешно и на двете платформи