Optymalizacja zasobów i obrazów
HotPDF potrafi zmniejszyć rozmiar załadowanego dokumentu bez zmiany semantyki stanu grafiki stron i bez psucia dziedziczonych zasobów oraz appearance'ów adnotacji
Konsolidacja treści i zasobów
Powtarzane obrazy inline mogą stać się współdzielonymi image XObjects po spełnieniu progów wystąpień i ładunku
Nieużywane nazwy zasobów stron są usuwane ostrożnie po przeskanowaniu treści strony, zagnieżdżonych Form XObjects i strumieni appearance adnotacji
Zgodne strumienie treści stron są dekodowane, łączone z bezpiecznymi granicami tokenów i normalizowane do jednego strumienia Flate
Form XObjects i osadzone fonty są deduplikowane z kanonicznej zdekodowanej treści i rekurencyjnie kanonicznych grafów zasobów, przy czym zgodne prefiksy podzbiorów fontów są normalizowane podczas porównywania
Subsetting załadowanych fontów
SubsetLoadedFonts śledzi kody znaków przez treść strony, zagnieżdżone Form XObjects i strumienie appearance adnotacji, rozwiązuje każdy kod przez kodowanie fontu PDF i mapowanie CID, a potem zachowuje tylko osiągalne programy glifów
Słowniki fontów, mapy CID, szerokości i dane ToUnicode zachowują swoje istniejące identyfikatory, bo subsetting TrueType, CFF i Type 1 zachowuje ID lub nazwy glifów; współdzielone osadzone programy agregują użycie z każdego zgodnego słownika fontów przed jednym przepisaniem
Zależności konturów TrueType composite i COLR v0/v1 są domykane rekurencyjnie, a tablice koloru, bitmap, wariacji i shapingu pozostają nietknięte; programy Type 1 PFB, dzielone binarne i hex PFA zachowują używane CharStrings i zastępują nieużywane wpisy ważnymi programami endchar o równej długości
Operacja pomija cały program fontu, gdy żadnego użytego kodu nie da się zmapować, przyjmuje tylko mniejszego kandydata surowego lub Flate i domyślnie odmawia dokumentów podpisanych, więc wywołujący musi jawnie wyrazić zgodę na unieważnienie podpisów
Polityki obrazów
Rekompresja JPEG wybiera kwalifikujące się przestrzenie kolorów, jakość wyjścia i minimalne oszczędności bajtów
Optymalizacja JPEG 2000 obsługuje profile bezstratne i wizualnie bezstratne, opcjonalne kafle i wszystkie pięć kolejności progresji przez jawny, niewyłączony profil
Rekompresja po koszcie wizualnym ocenia ograniczone próby jakości JPEG lub JPEG 2000 względem zdekodowanego źródła, odrzuca kandydatów poza limitami błędu percepcyjnego lub minimalnych oszczędności i wybiera najniższy ważony wynik błędu wizualnego i kosztu bajtów z deterministycznym rozstrzyganiem remisów
Dane globalne JBIG2 są współdzielone tylko wtedy, gdy dokładne bajty zdekodowanego segmentu globalnego się zgadzają przy jbspExactGlobalsOnly
Downsampling po efektywnym DPI podąża za macierzami strony i zagnieżdżonych Form, dekoduje piksele źródła zarządzane kolorem i ponownie próbuje miękkie maski wraz z ich obrazami właścicielskimi
Przepisywanie koloru obrazów konwertuje obsługiwane wejścia ICCBased, CalGray i CalRGB do skalibrowanego RGB, a nieobsługiwane wejścia skalibrowane pozostają nietknięte zamiast być konwertowane do procesowego RGB
DownsampleLoadedImages zmienia rozmiar obsługiwanych obrazów 8-bit raw, Flate, LZW, ASCII i RunLength Separation lub DeviceN bezpośrednio w przestrzeni składników, zachowując dokładny graf przestrzeni kolorów, transformację tint, barwniki, zakresy /Decode i semantykę overprint
Obrazy spot DCT, JPX, JBIG2 i CCITT pozostają niezmienione, gdy ich kodek nie potrafi wystawić oryginalnych próbek płyt
Użyj przepisania kolorów strony, gdy wymagane wyjście to jednolita procesowa przestrzeń Gray, RGB lub CMYK dla malowań wektorowych, obrazów, wzorów, shadingów, przezroczystości i zasobów ICC
Adaptacyjne strumienie obiektów
Pakowanie strumieni obiektów może ograniczać rozmiar członka, docelowe bajty kontenera i liczbę członków, zachowując lokalność numerów obiektów i wykluczając obiekty dirty, które mogą się znowu zmienić
Włączenie pakowania adaptacyjnego żąda też wymaganej wersji PDF, strumienia xref i pełnego przepisania
Główne API
THotPDF.ExternalizeRepeatedInlineImagesTHotPDF.RemoveUnusedLoadedPageResourcesTHotPDF.CoalesceLoadedPageContentStreamsTHotPDF.DeduplicateLoadedFormXObjectsTHotPDF.DeduplicateLoadedEmbeddedFontsTHotPDF.SubsetLoadedFontsTHotPDF.RecompressLoadedJPEGImagesTHotPDF.OptimizeLoadedJPEG2000ImagesTHotPDF.OptimizeLoadedImagesByVisualCostTHotPDF.ShareLoadedJBIG2GlobalsTHotPDF.DownsampleLoadedImagesTHotPDF.RewriteLoadedPageColorsTHotPDF.ConfigureAdaptiveObjectStreamPacking