Vai al contenuto
Compress PDF
Italiano

Un motore di compressione che gira nella tua scheda.

Nessuna coda di worker, nessun endpoint di upload, nessuna scritta "elaborazione sui nostri server". Ecco esattamente cosa succede a un PDF tra il rilascio e il download.

Provalo sul tuo PDF

Passaggio 1

Leggere e comprendere il file

Il file viene letto con l'API File.arrayBuffer() del browser. Nulla viene postato da nessuna parte; i byte vivono nella memoria della scheda.

PDF.js apre il documento e conta le pagine. Un certo numero di pagine sparse nel file viene campionato per densità di testo. Se una pagina campionata contiene quasi nessun carattere, il documento è probabilmente una scansione. Se ne ha molti, è basato su testo. Quella classificazione determina se prima viene provata la ricompressione delle immagini o la rasterizzazione.

L'analisi rileva anche la protezione con password. I file crittografati si fermano qui con un messaggio chiaro invece di produrre un output danneggiato.

Passaggio 2

Tre passaggi in escalation

Ogni passaggio è una ricostruzione completa. Il motore misura il risultato prima di decidere se il passaggio successivo, più distruttivo, è necessario.

Passaggio uno — pulizia strutturale

pdf-lib carica il documento e lo riscrive con gli stream di oggetti abilitati. Miniature di pagina, oggetti orfani e metadati identificativi vengono rimossi. Font, immagini e contenuto della pagina non vengono toccati, quindi questo passaggio è effettivamente senza perdita.

Senza perdita

Passaggio due — ricompressione delle immagini

Il motore percorre il dizionario delle risorse di ogni pagina, incluse le immagini annidate dentro form XObjects, e trova gli stream di immagini JPEG. Ciascuno viene decodificato con createImageBitmap, disegnato su una canvas a dimensione ridotta e ricodificato a qualità inferiore.

Il nuovo stream sostituisce l'oggetto vecchio sul posto, quindi layout della pagina, testo, link e arte vettoriale restano invariati. Le immagini con maschere soft, spazi colore CMYK, compressione JPX o JBIG2 vengono saltate invece di rischiare un rendering rotto.

Testo preservato

Passaggio tre — rasterizzazione

Quando il target è ancora fuori portata — o quando la sorgente è una scansione — PDF.js renderizza ogni pagina su una canvas offscreen a 36–160 DPI. I JPEG vengono assemblati in un documento fresco con pdf-lib. Questo appiattisce il testo in pixel, quindi va eseguito per ultimo e il pannello dei risultati lo dice.

Ultima risorsa

Passaggio 3

Cerca il miglior risultato che entra

Le impostazioni delle immagini vengono percorse come una scala ordinata per peso di output atteso: scala al quadrato moltiplicata per qualità JPEG. Il primo passo che misura sotto il target vince. Se il risultato è comodamente sotto il target, il motore prova un passo migliore per darti un file più nitido e tiene quello che entra.

La rasterizzazione usa una scala separata da 160 DPI fino a 36 DPI. Ridurre la risoluzione è il modo più rapido per ridurre una scansione, quindi la scala scambia risoluzione e qualità JPEG insieme invece di spingere uno dei due all'estrema.

La regola dell'onestà: successo significa outputBytes <= targetBytes, misurato sul file finito. Se nulla entra, lo strumento mostra il risultato reale più piccolo e quanto è sopra il target. Non arrotonda mai per difetto, non stima e non etichetta un eccesso come successo.

Passaggio 4

Perché l'interfaccia non si blocca mai

Web Worker

L'analisi PDF e la codifica JPEG girano in un worker dedicato, così scorrimento, selezione e digitazione restano reattivi mentre un file grande viene elaborato.

OffscreenCanvas

Il lavoro sulle immagini avviene su una canvas offscreen che non tocca il DOM. I browser senza supporto ripiegano su un percorso a blocchi sul thread principale.

Memoria limitata

Le pagine vengono elaborate a lotti, i bitmap vengono chiusi dopo l'uso, gli URL degli oggetti vengono revocati e i file grandi vengono segnalati prima che possano esaurire la memoria di un telefono.

Cosa non può fare

Limiti che preferiamo ammettere

  • Nessun OCR. Le pagine scansionate restano scansionate; lo strumento non può rendere il loro testo ricercabile.
  • Nessuna decrittazione di password. I PDF crittografati vengono rilevati e rifiutati.
  • Nessuna preservazione delle firme. Qualsiasi compressione invalida le firme crittografiche.
  • Nessuna ricodifica JBIG2 o JPX. Quelle immagini vengono lasciate intatte per evitare corruzioni.
  • Nessuna riduzione di dimensione garantita. Un PDF di testo ben ottimizzato può ridursi solo leggermente.
  • Nessuna elaborazione cloud. Se il tuo dispositivo esaurisce la memoria, un server non aiuterà.

Domande sul motore

Risposte più approfondite su come si comporta il compressore.

Perché il compressore prova diverse impostazioni invece di una?

Perché la relazione tra qualità dell'immagine e dimensione del file non è lineare e ogni PDF è diverso. Il motore percorre una scala dall'alta qualità alla compressione aggressiva, salva un vero PDF a ogni passo, lo misura e si ferma al primo risultato che entra nel target. Quel risultato è il file dall'aspetto migliore che rispetta il limite.

Perché non rasterizzare sempre? Produce i file più piccoli.

La rasterizzazione trasforma il testo in pixel. Il file diventa più piccolo, ma il testo smette di essere selezionabile, i link si rompono e i caratteri piccoli si sfocano. Viene offerta come ultima risorsa per le scansioni e il pannello dei risultati dice sempre quando è stata usata.

Lo strumento supporta i PDF protetti da password?

Non ancora. PDF.js può aprire un file crittografato con password, ma la libreria che ricostruisce i documenti non può ricriptare il risultato. Piuttosto che produrre un file rotto, lo strumento rileva la crittografia e chiede di rimuovere la password in un lettore PDF prima.

Perché un PDF solo testo si è ridotto a malapena?

Testo e grafica vettoriale sono già compatti. Se il 95% di un file è testo e font, c'è pochissimo dato ridondante da rimuovere. Gli strumenti che riportano risparmi enormi su tali file di solito rasterizzano le pagine, ed è per questo che questo strumento riporta il metodo usato.

E le firme digitali?

Qualsiasi modifica invalida una firma crittografica. Nessun compressore può preservarne una. Conserva l'originale firmato e comprimi una copia se devi inviare una versione più piccola.

Vedi come funziona sul tuo file.

Trascina un PDF, scegli un target e guarda il risultato misurato.

Comprimi un PDF