Ottimizzazione di risorse e immagini
HotPDF può ridurre le dimensioni del documento caricato senza cambiare la semantica dello stato grafico delle pagine né rompere le risorse ereditate e le appearance delle annotazioni
Consolidamento di contenuti e risorse
Le immagini inline ripetute possono diventare image XObject condivise dopo che le soglie di occorrenza e payload sono raggiunte
I nomi di risorse di pagina inutilizzati vengono rimossi in modo conservativo dopo la scansione del contenuto di pagina, dei Form XObject annidati e degli stream di appearance delle annotazioni
I content stream di pagina compatibili vengono decodificati, uniti con confini di token sicuri e normalizzati in un unico stream Flate
Form XObject e font incorporati vengono deduplicati da contenuti decodificati canonici e grafi di risorse canonici ricorsivi, con i prefissi di subset dei font compatibili normalizzati durante il confronto
Subsetting dei font caricati
SubsetLoadedFonts traccia i codici carattere attraverso il contenuto di pagina, i Form XObject annidati e gli stream di appearance delle annotazioni, risolve ogni codice attraverso la codifica PDF dei font e la mappatura CID, poi conserva solo i programmi di glifi raggiungibili
I dizionari dei font, le mappe CID, le larghezze e i dati ToUnicode mantengono i loro identificatori esistenti perché il subsetting TrueType, CFF e Type 1 preserva i glyph ID o i nomi dei glifi; i programmi incorporati condivisi aggregano l'uso di ogni dizionario di font compatibile prima di un'unica riscrittura
Le dipendenze di outline composite TrueType e COLR v0/v1 vengono chiuse ricorsivamente mentre le tabelle di colore, bitmap, variazione e shaping restano intatte; i programmi Type 1 PFB, binari divisi ed esadecimali PFA preservano i CharStrings usati e sostituiscono le voci inutilizzate con programmi endchar validi di uguale lunghezza
L'operazione salta un intero programma di font quando un codice usato non può essere mappato, adotta solo un candidato raw o Flate più piccolo e rifiuta i documenti firmati per default, quindi i chiamanti devono esplicitamente acconsentire all'invalidazione della firma
Politiche per le immagini
La ricompressione JPEG seleziona spazi colore idonei, qualità di output e risparmi minimi di byte
L'ottimizzazione JPEG 2000 supporta profili lossless e visivamente lossless, tile opzionali e tutti e cinque i progression order attraverso un profilo esplicito non disabilitato
La ricompressione a costo visivo valuta prove di qualità JPEG o JPEG 2000 limitate contro la sorgente decodificata, scarta i candidati fuori dai limiti di errore percettivo o di risparmio minimo e seleziona il punteggio più basso di errore visivo e costo di byte pesati con tie-breaking deterministico
I dati globali JBIG2 vengono condivisi solo quando i byte esatti del segmento globale decodificato corrispondono sotto jbspExactGlobalsOnly
Il downsampling a DPI effettivo segue le matrici di pagina e dei Form annidati, decodifica i pixel delle sorgenti con color management e ricampiona le soft mask insieme alle immagini che le possiedono
La riscrittura del colore delle immagini converte gli input ICCBased, CalGray e CalRGB supportati in RGB calibrato, mentre gli input calibrati non supportati restano intatti invece di essere convertiti in RGB di process
DownsampleLoadedImages ridimensiona direttamente nello spazio delle componenti le immagini Separation o DeviceN supportate a 8 bit raw, Flate, LZW, ASCII e RunLength, preservando il grafo esatto dello spazio colore, la tint transform, i coloranti, gli intervalli /Decode e la semantica overprint
Le immagini spot DCT, JPX, JBIG2 e CCITT restano invariate quando il loro codec non può esporre i campioni originali delle lastre
Usa riscrittura del colore delle pagine caricate quando l'output richiesto è uno spazio di process uniforme Gray, RGB o CMYK su pittura vettoriale, immagini, pattern, shading, trasparenza e risorse ICC
Object stream adattivi
Il packing degli object stream può limitare la dimensione dei membri, i byte dei contenitori target e il conteggio dei membri preservando la località dei numeri di oggetto ed escludendo gli oggetti dirty che probabilmente cambieranno di nuovo
Abilitare il packing adattivo richiede anche la versione PDF necessaria, lo xref stream e la riscrittura completa
API principali
THotPDF.ExternalizeRepeatedInlineImagesTHotPDF.RemoveUnusedLoadedPageResourcesTHotPDF.CoalesceLoadedPageContentStreamsTHotPDF.DeduplicateLoadedFormXObjectsTHotPDF.DeduplicateLoadedEmbeddedFontsTHotPDF.SubsetLoadedFontsTHotPDF.RecompressLoadedJPEGImagesTHotPDF.OptimizeLoadedJPEG2000ImagesTHotPDF.OptimizeLoadedImagesByVisualCostTHotPDF.ShareLoadedJBIG2GlobalsTHotPDF.DownsampleLoadedImagesTHotPDF.RewriteLoadedPageColorsTHotPDF.ConfigureAdaptiveObjectStreamPacking