Mechanizm JPEG 2000
Od wersji 3.9.0 obsługa JPEG 2000 korzysta z OpenJPEG 2.5.4. Publiczny interfejs API TJpeg2000Bitmap pozostaje bez zmian, lecz wczytywanie i zapisywanie używa teraz cyklu życia kodeka OpenJPEG 2.x i interfejsu API strumieni opartego na procedurach zwrotnych
Kompilacje Win32 i Win64 statycznie łączą dołączone pliki obiektowe OpenJPEG. Lib\thirdparty\build-openjpeg-bcc32.bat i Lib\thirdparty\build-openjpeg-bcc64x.bat przebudowują przechowywane w repozytorium obiekty bezpośrednio w Lib\thirdparty\Win32 i Lib\thirdparty\Win64. Ścieżka Win64 używa bcc64x z wyłączonymi tablicami skoków, aby dcc64 mógł korzystać ze statycznych obiektów COFF64 bez biblioteki DLL środowiska wykonawczego OpenJPEG
Mechanizm obsługuje wykrywanie JP2 i surowych strumieni kodowych J2K przez istniejący moduł wczytywania strumieni. Kierowanie składników koloru jest ustalane na podstawie przestrzeni kolorów obrazu OpenJPEG 2.5, liczby składników i metadanych alfa, ponieważ starsze rozszerzenie comp_type biblioteki PDF Library for Delphi nie jest już obecne w projekcie nadrzędnym
Niezawodność danych wyjściowych JPEG w wersji 3.9.1
Wersja 3.9.1 poprawia dołączone powiązania libjpeg-turbo używane przez TPDFJPEGImage i renderowanie stron PDF. Eksport JPEG używa teraz zgodnych z ABI pól logicznych, deklaracji procedur zwrotnych, wyrównania struktur i buforów wyjściowych opartych na pamięci w Win32 i Win64
Ta sama wersja naprawia dekompresję FlateDecode w Win32 przy użyciu dołączonego mechanizmu zlib, dzięki czemu strumienie xref PDF w plikach linearyzowanych są prawidłowo wczytywane przed rozpoczęciem renderowania stron
Aplikacje wywołujące TPDFJPEGImage.SaveToStream, LoadFromFile lub renderujące strony PDF do plików JPG nie wymagają zmian w kodzie źródłowym. Przebuduj wyniki biblioteki Win32 i Win64, aby istniejące projekty korzystały z poprawionych mechanizmów obrazów i FlateDecode
Mechanizm AES w wersji 3.9.3
Wersja 3.9.3 odświeża dołączoną implementację AES z projektu Brian Gladman's, korzystającą ze źródeł C z 2018 roku, dla Win32 i Win64. Publiczny interfejs API szyfrowania PDF Library for Delphi pozostaje bez zmian, lecz pliki obiektowe AES można teraz przebudować z Lib\thirdparty\AES za pomocą skryptów kompilacji poszczególnych bibliotek
Lib\thirdparty\build-aes-bcc32.bat tworzy obiekty OMF Win32, a Lib\thirdparty\build-aes-bcc64x.bat tworzy obiekty COFF64 Win64. PDFlibAES.pas deklaruje punkty wejścia AES z konwencją wywołań C, dzięki czemu szyfrowanie i odszyfrowywanie AES-CBC odpowiada skompilowanemu ABI C na obu platformach
Obsługa DEVMODE drukarki w wersji 3.9.4
Wersja 3.9.4 zmienia konfigurację drukowania PDF, aby niestandardowe ustawienia podajnika papieru, typu nośnika, druku dwustronnego, jakości, liczby kopii, koloru i orientacji były stosowane za pośrednictwem uchwytu DEVMODE drukarki zwracanego przez TPrinter.GetPrinter. Kod nie traktuje już TPrinter.Handle jako uchwytu pamięci globalnej, ponieważ ta właściwość jest kontekstem HDC drukarki, a nie blokiem DEVMODE
Poprawia to drukowanie przez drukarki współdzielone z serwera i drukarki sieciowe, w tym scenariusze, w których aplikacja drukuje przez adres IP serwera albo wybiera przed drukowaniem podajnik inny niż domyślny. Istniejące wywołania API, takie jak SetPrinterDevModeFromString, oraz opcje konfiguracji drukowania zachowują to samo zachowanie publiczne