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