Comprimere PDF su Linux: usare QPDF e Ghostscript in modo mirato

Su Linux puoi ottimizzare la struttura di un PDF nel terminale con un comando QPDF documentato oppure ricostruirlo con Ghostscript pdfwrite. Solo la verifica dell’output salvato rivela se il nuovo file è più piccolo e conserva tutte le funzionalità di cui hai bisogno.

Ottimizzazione della struttura o ricostruzione: quale strumento scegliere?

I due programmi procedono in modi fondamentalmente diversi. Il comando QPDF di questa pagina lascia intatto il contenuto delle pagine e salva nuovamente solo gli oggetti del file nel modo più compatto possibile. Per farlo, per esempio, raggruppa gli oggetti in flussi di oggetti e ricomprime i dati Flate. Non riduce la risoluzione delle immagini e non le ricodifica in JPEG. L’ottimizzazione facoltativa delle immagini di QPDF è un passaggio separato, con perdita, che viene brevemente inquadrato nella prossima sezione. La documentazione di QPDF descrive le singole opzioni.

Ghostscript funziona diversamente. Con il dispositivo di output pdfwrite legge il PDF e genera un nuovo file dalle istruzioni di disegno di ogni pagina. Testo e grafica vettoriale vengono generalmente conservati come tali: le pagine, quindi, non vengono semplicemente trasformate in immagini. A seconda delle impostazioni, Ghostscript può però ricampionare le immagini. Inoltre, tutto ciò che non fa parte dell’aspetto visibile della pagina può cambiare. Lo spiega il manuale di Ghostscript su pdfwrite.

Alcuni programmi offrono anche un terzo metodo: generano ogni pagina come immagine. In questo modo, di norma, si perdono il testo nativo, la ricerca e gli elementi interattivi. Nessuno dei due comandi di questa pagina funziona così.

Tre modi per ridurre le dimensioni di un PDF e cosa modificano nel documento
MetodoCosa succedeImmaginiTesto e funzionalità
QPDF, ottimizzazione della strutturaGli oggetti e i dati Flate vengono salvati in modo più compattoLa risoluzione non viene ridotta. Una ricodifica JPEG facoltativa può causare una perdita di dettagli.Il contenuto delle pagine non viene ricostruito; verifica comunque il risultato
Ghostscript pdfwrite, ricostruzioneLe pagine vengono rigenerate dalle loro istruzioni di disegnoLa risoluzione può essere ridotta a seconda della preimpostazioneTesto e vettori vengono perlopiù conservati. Link, moduli e metadati possono cambiare.
Generazione delle pagine come immaginiOgni pagina diventa un’immagineDipendono dalla risoluzione sceltaIl testo nativo, la ricerca e gli elementi interattivi vengono generalmente persi

Nessuno di questi metodi garantisce un file più piccolo. Come regola pratica: se il tuo PDF è composto soprattutto da testo e grafica vettoriale, inizia con QPDF. Questo vale anche se vuoi modificare il meno possibile immagini, link o moduli. Ghostscript è un’opzione quando foto o scansioni di grandi dimensioni rappresentano la maggior parte del peso e puoi accettare una certa perdita di qualità delle immagini. La guida Comprimere PDF senza perdita di qualità spiega cosa significano concretamente senza perdita e con perdita.

I programmi con interfaccia grafica seguono gli stessi metodi. Secondo quanto dichiara, PDFsam distingue tra la sola ottimizzazione della struttura nell’edizione Basic e una funzione dedicata di compressione delle immagini nelle edizioni Visual ed Enhanced. Le guide più vecchie per script di gestori di file o interfacce che richiamano Ghostscript in background si riferiscono in parte a versioni precedenti di Ubuntu. Non seguirne quindi i passaggi di installazione senza verificarli. Secondo il produttore, PDF24 Creator è disponibile solo per Windows; non offre una versione Linux.

Se non vuoi installare nulla, puoi usare il compressore PDF nel browser. Elabora il file sul tuo dispositivo senza caricarlo. Tuttavia, non lo abbiamo testato specificamente nei browser su Linux. La guida Comprimi PDF senza caricamento spiega la differenza tra elaborazione locale nel browser e lavoro realmente offline.

Verifica la versione e scrivi in un file di output separato

Panoramica dei comandi

Seleziona uno dei sei comandi di questa guida. Vedrai il comando invariato e scoprirai a cosa serve ogni sua parte.

I comandi provengono dai manuali ufficiali di QPDF e Ghostscript. Non li abbiamo eseguiti personalmente su Ubuntu o su un'altra distribuzione. Le versioni installate sul tuo sistema possono differire da quelle descritte nella documentazione online.

Questa pagina non esegue comandi e non mostra l'output del terminale. Vedrai i messaggi del tuo sistema solo quando eseguirai tu un comando.

Mostra la versione di QPDF

Mostra la versione di QPDF installata. Verificala prima di usare gli altri comandi.

Mostra la versione installata di QPDF.
qpdf --version

Puoi anche selezionare e copiare il comando direttamente nel riquadro del codice.

Le parti del comando
qpdfProgramma
Avvia il programma da riga di comando QPDF.
--versionMostra la versione
Restituisce la versione di QPDF in uso sul tuo sistema.

Se la shell segnala che il comando non è stato trovato, probabilmente QPDF non è installato. Il nome del pacchetto e la procedura di installazione dipendono dalla tua distribuzione.

Sezione della guida

Mostra la versione di Ghostscript e i dispositivi di output

Mostra la versione di Ghostscript e i dispositivi di output disponibili.

Mostra la versione di Ghostscript e i dispositivi di output disponibili.
gs -h

Puoi anche selezionare e copiare il comando direttamente nel riquadro del codice.

Le parti del comando
gsProgramma
Avvia Ghostscript. Su Unix il programma si chiama gs.
-hAiuto
Restituisce la versione, le opzioni, i formati, i dispositivi di output disponibili e il percorso di ricerca.

Se la shell segnala che il comando non è stato trovato, probabilmente Ghostscript non è installato. Annota la distribuzione e la versione per poter ricostruire in seguito le condizioni in cui hai ottenuto i risultati.

Sezione della guida

Salva la struttura in modo più compatto

Riscrive gli oggetti del file nel modo più compatto possibile. Le immagini non vengono né ridotte di risoluzione né ricodificate in JPEG.

Comando QPDF tratto dalla documentazione: salva la struttura in modo più compatto, senza ridurre la risoluzione delle immagini o ricodificarle in JPEG.
qpdf "original.pdf" --object-streams=generate --compress-streams=y --decode-level=generalized --recompress-flate --compression-level=9 "optimiert-qpdf.pdf"

Puoi anche selezionare e copiare il comando direttamente nel riquadro del codice.

Le parti del comando
qpdfProgramma
Avvia il programma da riga di comando QPDF.
"original.pdf"File di input
Il PDF da leggere. Il risultato viene scritto in un file separato.
--object-streams=generateGenera flussi di oggetti
Raggruppa gli oggetti idonei in flussi di oggetti e li comprime. Il file di output avrà quindi almeno la versione PDF 1.5.
--compress-streams=yComprimi i flussi
Comprime i flussi con Flate, purché non siano già compressi con un altro metodo.
--decode-level=generalizedDecomprimi i filtri generici
Decomprime i dati usando i filtri generici supportati, come LZW, Flate, ASCII85 e ASCIIHex. I dati JPEG (DCT) non vengono decompressi.
--recompress-flateRicomprimi con Flate
Decomprime i flussi Flate esistenti e li comprime nuovamente. Questo può aumentare il tempo di scrittura.
--compression-level=9Livello di compressione
Seleziona per Flate il livello zlib più alto nell'intervallo documentato da 1 a 9. I livelli più alti richiedono più tempo. Il valore non ha alcun rapporto con la qualità JPEG.
"optimiert-qpdf.pdf"File di output
Nome del nuovo file. Nei due comandi di verifica viene usato come input.

Solo il confronto del numero di Byte rivela se il nuovo file è più piccolo. Un nome di output distinto non impedisce di sovrascrivere un file esistente con lo stesso nome. Scegli quindi un nome non ancora utilizzato. Il comando non garantisce che una firma digitale rimanga valida.

Sezione della guida

Ricostruisci il PDF con pdfwrite

Ghostscript legge il PDF e genera un nuovo file a partire dalle istruzioni di disegno di ogni pagina, qui usando l'impostazione predefinita /ebook.

Esempio Ghostscript con la preimpostazione /ebook. I dettagli delle immagini e le funzionalità del documento possono cambiare.
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="optimiert-gs.pdf" "original.pdf"

Puoi anche selezionare e copiare il comando direttamente nel riquadro del codice.

Le parti del comando
gsProgramma
Avvia Ghostscript.
-dSAFERControllo degli accessi
Limita l'accesso a file e dispositivi. Dalla versione 9.50 è il comportamento predefinito. Non costituisce una garanzia generale di sicurezza.
-dBATCHTermina al completamento
Termina Ghostscript non appena i file indicati sono stati elaborati, anziché passare alla modalità interattiva.
-dNOPAUSESenza pause
Disattiva la richiesta di conferma e la pausa alla fine di ogni pagina.
-sDEVICE=pdfwriteDispositivo di output
Seleziona pdfwrite, che genera un nuovo PDF. In genere, testo e grafica vettoriale vengono mantenuti. Tutto ciò che non fa parte dell'aspetto visibile della pagina può cambiare.
-dPDFSETTINGS=/ebookImpostazione predefinita
Imposta un insieme di singoli parametri con una risoluzione media delle immagini. Il nome descrive una destinazione d'uso, non un livello di qualità né una riduzione garantita.
-sOutputFile="optimiert-gs.pdf"File di output
Definisce il nome del nuovo file.
"original.pdf"File di input
Il PDF che Ghostscript legge.

I dettagli delle immagini e le funzionalità del documento possono cambiare, anche se le pagine sembrano identiche. Non sono garantite dimensioni o qualità specifiche. Verifica il file di output salvato e scegli un nome di output non ancora utilizzato.

Sezione della guida

Verifica la struttura del file di output

Verifica la sintassi del file di output salvato. Per il risultato di Ghostscript, sostituisci il nome del file.

Verifica la sintassi dell’output salvato. Per il risultato di Ghostscript, sostituisci il nome del file.
qpdf "optimiert-qpdf.pdf" --check

Puoi anche selezionare e copiare il comando direttamente nel riquadro del codice.

Le parti del comando
qpdfProgramma
Avvia il programma da riga di comando QPDF.
"optimiert-qpdf.pdf"File da verificare
Il file di output del comando QPDF salvato in precedenza.
--checkVerifica la struttura
Verifica la struttura, la crittografia, la linearizzazione e la codifica dei flussi.

Il codice di uscita 0 indica una verifica senza errori, 2 indica errori, 3 indica avvisi. La verifica riguarda solo la struttura del file. Non indica se l'aspetto è corretto, se moduli e collegamenti funzionano o se il file è sicuro.

Sezione della guida

Restituisci il numero di pagine

Restituisce il numero di pagine del file di output salvato. Esegui nuovamente il comando con il nome dell'originale e confronta i due numeri.

Mostra il numero di pagine dell’output salvato. Esegui nuovamente il comando con il nome dell’originale e confronta.
qpdf "optimiert-qpdf.pdf" --show-npages

Puoi anche selezionare e copiare il comando direttamente nel riquadro del codice.

Le parti del comando
qpdfProgramma
Avvia il programma da riga di comando QPDF.
"optimiert-qpdf.pdf"File di cui contare le pagine
Il file di output del comando QPDF salvato in precedenza.
--show-npagesConta le pagine
Restituisce il numero di pagine del file indicato.

Un numero di pagine identico non significa che contenuti, immagini e funzionalità siano rimasti invariati. Controlla tu le pagine.

Sezione della guida

Il pulsante copia negli appunti il comando visualizzato solo dopo il tuo clic. Non legge gli appunti, non salva nulla e non invia nulla.

I comandi di questa pagina provengono dai manuali ufficiali di QPDF e Ghostscript. Non li abbiamo eseguiti personalmente su Ubuntu o su un’altra distribuzione: questa, quindi, non è una guida Ubuntu testata. Verifica prima quali versioni sono installate sul tuo sistema. I pacchetti della tua distribuzione possono differire dalla versione descritta nella documentazione online attuale.

Visualizza le versioni installate

Mostra la versione installata di QPDF.
qpdf --version
Mostra la versione di Ghostscript e i dispositivi di output disponibili.
gs -h

Se la shell segnala che un comando non è stato trovato, probabilmente il programma non è installato. Il nome del pacchetto e il modo di installarlo dipendono dalla tua distribuzione. Annota la distribuzione e le versioni per poter ricostruire in seguito come hai ottenuto un risultato.

Regole di base per ogni tentativo

  • Lascia intatto l’originale. Il file di ingresso e quello di output devono sempre avere nomi diversi.
  • Assegna a ogni output un nome nuovo, non ancora utilizzato, per non sovrascrivere un file precedente.
  • Per ogni nuovo tentativo riparti dall’originale, non dal risultato del passaggio precedente.
  • Non usare opzioni o script che sostituiscono direttamente il file di ingresso.

QPDF: ottimizza la struttura di memorizzazione

Comando QPDF tratto dalla documentazione: salva la struttura in modo più compatto, senza ridurre la risoluzione delle immagini o ricodificarle in JPEG.
qpdf "original.pdf" --object-streams=generate --compress-streams=y --decode-level=generalized --recompress-flate --compression-level=9 "optimiert-qpdf.pdf"

Il comando legge original.pdf e scrive un nuovo file chiamato optimiert-qpdf.pdf. Le opzioni fanno sì che gli oggetti vengano raggruppati in flussi di oggetti, che i flussi di dati vengano compressi e che i dati Flate vengano ricompressi al livello massimo. Non viene eseguito alcun ricampionamento delle immagini. I flussi di oggetti richiedono PDF 1.5. Se un destinatario richiede espressamente una versione PDF precedente, questo comando non è adatto senza ulteriori modifiche.

QPDF può inoltre ottimizzare le immagini e ricodificare i dati JPEG con una qualità selezionabile. L’opzione per la qualità JPEG è disponibile dalla versione 12.1. Entrambe sono operazioni con perdita di qualità e possono peggiorare ulteriormente la qualità di immagini JPEG già compresse. Usale solo se poi verifichi le immagini in modo mirato.

Ghostscript: riscrivi il PDF con una preimpostazione

Esempio Ghostscript con la preimpostazione /ebook. I dettagli delle immagini e le funzionalità del documento possono cambiare.
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="optimiert-gs.pdf" "original.pdf"

-sDEVICE=pdfwrite seleziona l’output PDF, -sOutputFile definisce il nome del nuovo file e il file di ingresso si trova alla fine. -dBATCH e -dNOPAUSE impediscono a Ghostscript di attendere input. Anche -dSAFER compare in questa forma negli esempi della guida di Ghostscript alla riga di comando. La preimpostazione /ebook è solo un punto di partenza, non un consiglio valido per ogni file.

Comprendere correttamente le preimpostazioni di Ghostscript

Con -dPDFSETTINGS selezioni un intero insieme di singoli parametri in una volta sola. Il nome di una preimpostazione descrive uno scopo d’uso. Non indica né un livello di qualità né una riduzione specifica.

Preimpostazioni per -dPDFSETTINGS secondo il manuale attuale di Ghostscript (versione 10.09.0). La versione installata sul tuo sistema può differire.
PreimpostazioneScopo previstoRiduzione della risoluzione delle immagini a colori e in scala di grigi
/screenVisualizzazione su schermo, bassa risoluzioneAttiva. Valore obiettivo 72 dpi, solo per immagini con una risoluzione superiore a 1,5 volte questo valore.
/ebookRisoluzione mediaAttiva. Valore obiettivo 150 dpi, solo per immagini con una risoluzione superiore a 1,5 volte questo valore.
/printerStampaNon attiva per impostazione predefinita
/prepressPrestampaNon attiva per impostazione predefinita. Non è automaticamente la scelta più fedele all’originale.
/defaultUso generaleNon attiva per impostazione predefinita

Quindi /prepress offre la qualità migliore? No. Il manuale precisa espressamente che /prepress non è l’impostazione più fedele all’originale. Senza -dPDFSETTINGS, il risultato può rimanere più vicino all’originale. Inoltre, /prepress non garantisce nemmeno il file più piccolo.

I valori obiettivo di /screen e /ebook non significano che, dopo l’elaborazione, ogni immagine abbia esattamente 72 o 150 dpi. La risoluzione delle immagini sotto la soglia non viene ridotta e rimane quella originale. Questo non significa necessariamente che restino del tutto invariate, perché gli altri parametri della preimpostazione, per esempio relativi alla codifica delle immagini o ai colori, possono comunque modificarle. L’opzione -r non sostituisce la riduzione della risoluzione. Controlla solo la risoluzione quando Ghostscript deve renderizzare alcune parti come soluzione alternativa e non riduce le immagini incorporate. Secondo il manuale, spesso è meglio impostare in modo mirato singoli parametri anziché affidarsi a una preimpostazione.

Non usare la stessa preimpostazione per tutti i file. Un documento di testo, un catalogo fotografico e una scansione reagiscono in modo diverso. Per le scansioni è meglio intervenire già durante l’acquisizione. La guida Riduci le dimensioni di un PDF scansionato spiega come fare.

Verifica testo, link, moduli e firme

Il fatto che un PDF abbia lo stesso aspetto dopo la compressione non dimostra che tutto ciò che conteneva sia stato conservato. Ghostscript ricostruisce il file. Secondo la spiegazione di Ghostscript sull’ottimizzazione dei PDF, un aspetto identico può nascondere istruzioni e metadati modificati. Anche dopo QPDF, verifica le funzionalità che ti interessano:

  • Seleziona e copia il testo e prova la ricerca.
  • Fai clic su link e segnalibri.
  • Se il file è un modulo, compila i campi e prova a salvarli.
  • Controlla informazioni come titolo o autore, se il destinatario le utilizza.
  • Se viene richiesto uno standard specifico come PDF/A, verificalo con uno strumento apposito. Nessuno dei comandi qui riportati garantisce il mantenimento di questa conformità.

PDF firmati digitalmente

Nessuno dei due comandi può garantirti che una firma digitale rimanga valida dopo la riscrittura. La compressione, quindi, non è un modo adatto per ridurre le dimensioni di un PDF firmato. Conserva invariato l’originale firmato. Se il documento è stato firmato da qualcun altro e ti serve una versione più piccola, procurati il file di origine non firmato oppure parlane con il firmatario. Concorda un’eventuale nuova firma con chi ha emesso il documento o con il destinatario. Trovi ulteriori informazioni nella guida Adobe alle limitazioni dei PDF firmati. Una firma visibile scansionata non è una firma digitale.

Rimuovere la protezione tramite password o le restrizioni di modifica non fa parte della riduzione delle dimensioni e qui non trovi comandi per farlo. Chiedi invece al mittente una versione adatta. Trovi altre informazioni sulla gestione di questi documenti nella guida Comprendere firme e moduli.

Confronta le dimensioni del risultato e conserva l’originale

Il fatto che un comando venga eseguito senza messaggi di errore non dice ancora nulla sul risultato. Confronta la dimensione esatta dell’originale e del file di output in byte, non solo valori arrotondati in MB. Puoi calcolare la percentuale di riduzione con il calcolatore del tasso di compressione.

Verifica la sintassi e il numero di pagine

Verifica la sintassi dell’output salvato. Per il risultato di Ghostscript, sostituisci il nome del file.
qpdf "optimiert-qpdf.pdf" --check

QPDF segnala una verifica senza errori con il codice di ritorno 0, errori con 2 e avvertenze con 3. La verifica riguarda solo la struttura del file. Non indica se moduli, link e immagini funzionino e appaiano ancora come prima.

Mostra il numero di pagine dell’output salvato. Esegui nuovamente il comando con il nome dell’originale e confronta.
qpdf "optimiert-qpdf.pdf" --show-npages

Controlla in un visualizzatore PDF

  1. Apri nuovamente il file di output salvato dalla sua cartella.
  2. Sfoglia tutte le pagine e confronta formato e orientamento con l’originale.
  3. Esamina immagini, caratteri piccoli e linee sottili a forte ingrandimento.
  4. Prova ricerca, link e moduli come descritto nella sezione precedente.
  5. Se possibile, apri il file anche in un secondo visualizzatore.

Più grande, invariato o vuoto?

Ghostscript può anche aumentare le dimensioni di un PDF. Il file viene ricostruito e codificato diversamente e le nuove istruzioni talvolta richiedono più spazio delle precedenti. Anche con QPDF il margine di riduzione è limitato se il file è già salvato in modo compatto.

Un risultato più grande o appena più piccolo può comunque essere valido. Lo dimostrano solo le stesse verifiche del file salvato previste per qualsiasi altro output, perché la dimensione da sola non dice nulla su errori o funzionalità perse. Alla fine conserva il file più adatto: spesso è semplicemente l’originale. Il caso di un output vuoto, illeggibile o danneggiato è diverso. Si tratta di un tentativo fallito, non di una compressione particolarmente elevata. Non inviare questo file, leggi i messaggi nel terminale e riparti dall’originale con un nuovo nome per l’output.

Se il PDF rimane troppo grande per il limite del destinatario, trovi i passaggi successivi nella guida Il PDF non si riduce. Conserva comunque l’originale finché la nuova versione non è stata ricevuta e accettata.

Preferenze sulla privacy

Scegli se consentire l’analisi dell’utilizzo e la pubblicità facoltative. In questa anteprima non pubblicata, entrambe restano disattivate anche se le consenti. Gli strumenti per i documenti funzionano in ogni caso. Puoi cambiare la tua scelta in qualsiasi momento dal piè di pagina.

Impostazioni necessarie

Necessario

Le tue preferenze e il tema cromatico vengono salvati localmente. Gli strumenti per i documenti sono disponibili anche senza i servizi facoltativi.

Non attivo

Misurazione facoltativa dell’utilizzo. Attualmente inattiva: il consenso salva la tua preferenza, ma non attiva alcun servizio di analisi in questa anteprima.

Non attivo

Pubblicità facoltativa. Attualmente inattiva: il consenso salva la tua preferenza, ma non attiva alcun servizio pubblicitario in questa anteprima.

L’analisi dell’utilizzo e la pubblicità facoltative sono disattivate.