Zgodność strumieni i przesunięć PDF 1.7
Wersja 3.12.5 zwiększa zgodność ze słownikami strumieni PDF 1.7, filtrami kryptograficznymi standardowych zabezpieczeń, analizą składni obiektów, strumieniami xref i wyjściem z przesunięciami bajtowymi. Ogólne dekodowanie strumieni traktuje /DP jako standardowy alias /DecodeParms, rozstrzyga pośrednie wpisy tablic parametrów dekodowania, akceptuje standardowe skróty filtrów /AHx i /LZW oraz traktuje filtr Identity /Crypt jako brak operacji na zwykłym etapie dekodowania filtrów
Podczas wczytywania pliku PDF PDF Library for Delphi traktuje wpis Catalog /Version jako efektywną wersję dokumentu, gdy jest nowszy niż wersja nagłówka. Jest to zgodne z regułą nadpisania wersji katalogu PDF 1.7
Standardowo zaszyfrowane dokumenty zachowują teraz bardziej spójnie decyzje filtrów kryptograficznych StrF, StmF, EFF, Identity, None i nazwanych filtrów w stylu StdCF podczas wczytywania, odszyfrowywania, kopiowania i zapisywania. Strumienie metadanych respektują EncryptMetadata=false, strumienie osadzonych plików zawierają /Type /EmbeddedFile, aby filtr kryptograficzny osadzonych plików można było stosować oddzielnie od zwykłych strumieni, a nowo zapisywane wpisy Length filtru kryptograficznego AES używają długości bitowych
Wersja 3.56.38 zapewnia, że zwykłe szyfrowanie przez API tworzy lub zachowuje /ID trailera przed wygenerowaniem danych standardowych zabezpieczeń. Dane wyjściowe AES-256 zapisane ze źródłowych plików PDF bez /ID są teraz po ponownym wczytaniu rozpoznawane przez EncryptionStatus jako zaszyfrowane i można je jawnie odszyfrować za pomocą Decrypt
Analiza nazw PDF traktuje teraz zarówno lewy, jak i prawy nawias klamrowy jako ograniczniki. Nazwy takie jak /Name} są zatem tokenizowane przy prawym nawiasie zamiast włączać ogranicznik do tokenu nazwy
Analiza ciągów literałowych ignoruje teraz ukośnik odwrotny dla nieznanych sekwencji ucieczki i ogranicza analizę \ddd do cyfr ósemkowych. Sekwencja taka jak \128 jest zatem dekodowana jako LF, po którym następuje znak 8, zamiast traktować 8 jako część ósemkowej sekwencji ucieczki
Wpisy skompresowanych obiektów typu 2 strumienia xref zachowują numer strumienia obiektów nawet wtedy, gdy jest większy od długości pliku PDF w bajtach. Kontrola poprawności względem rozmiaru pliku pozostaje ograniczona do zwykłych wpisów xref, w których drugie pole jest przesunięciem bajtowym
Tabele xref pełnego zapisu, startxref, linearyzowane tabele xref, wartości Prev/XRefStm strumienia xref oraz wartości ByteRange podpisu cyfrowego używają funkcji pomocniczych formatowania i analizy 64-bitowej. Zapobiega to zawężaniu dużych pozycji bajtowych przez 32-bitowe ścieżki całkowite przed zapisaniem ich w składni PDF
Gdy strumień xref jest przepisywany jako klasyczny słownik trailera, klucze DecodeParms właściwe wyłącznie dla strumienia są usuwane z emitowanego trailera. Zewnętrzne strumienie osadzonych plików zachowują również FDecodeParms, gdy FFilter zostaje podniesiony do Filter
Walidacja wersji 3.12.5 obejmowała zestawy DUnitX Delphi Win32 i Win64; na każdej platformie przeszło 141 z 141 testów