Quindi convert
di ImageMagick produrrà PDF rasterizzati e molte persone sarebbero interessate a mantenere la grafica vettoriale e il testo intatti in modo che solo le immagini incorporate vengano compresse. Quindi una buona alternativa alla compressione è usare gs
dal pacchetto ghostscript
esempio di utilizzo:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf in.pdf
nel parametro del comando precedente:-dPDFSETTINGS=/ebook
è importante. Può avere 3 valori:
-dPDFSETTINGS=/screen (screen-view-only quality, 72 dpi images)
-dPDFSETTINGS=/ebook (low quality, 150 dpi images)
-dPDFSETTINGS=/printer (high quality, 300 dpi images)
-dPDFSETTINGS=/prepress (high quality, color preserving, 300 dpi imgs)
-dPDFSETTINGS=/default (almost identical to /screen)
Sto suggerendo uno strumento a riga di comando qui, che può essere facilmente raggruppato con loop nei linguaggi di scripting incorporati in Windows, Linux, OS X, ecc.
ImageMagick supporta i PDF e ha un resize
opzione con il suo strumento di conversione. Non l'ho mai usato personalmente, ma puoi provare a giocarci.
Puoi anche usare il compress
opzione (c'è un esempio qui):
Ruota un PDF
$ convert -rotate 270 -density 300x300 -compress lzw in.pdf out.pdf
Ciò presuppone un PDF supportato da TIFF. Il parametro densità è importante perché altrimenti ImageMagick sottocampiona l'immagine (per qualche motivo). L'aggiunta dell'opzione di compressione aiuta a ridurre le dimensioni complessive del PDF, senza perdita di qualità.
Per i PDF multipagina, potresti voler utilizzare pdftk
, quindi utilizza mogrify
da ImageMagick per convertire ogni pagina sul posto:
$ pdftk in.pdf burst $ mogrify -rotate 270 -density 300x300 -compress lzw pg_*.pdf $ pdftk pg*.pdf cat output out.pdf $ rm pg*.pdf
Per convertire i file PDF con ImageMagick, devi aver installato GhostScript.
ImageMagick può convertire PDF multipagina. Mentre mogrify
convertirà sul posto, ti consiglio di usare convert
così puoi conservare gli originali in caso di incidente.
Ho eseguito alcuni test sul PDF di esempio fornito. Questo ha funzionato abbastanza bene per me:
convert -density 200 -compress jpeg -quality 20 test.pdf test2.pdf
La densità predefinita è 72
DPI. Impostandolo più alto possiamo ottenere una risoluzione più alta e quindi una qualità accettabile. Sembrava a posto a 150
, ed era un po' più piccolo, ma se vuoi soddisfare una gamma di PDF 200
dovrebbe funzionare.
La compressione JPEG dovrebbe scegliere automaticamente un livello o il valore predefinito è 92
su una scala di 1
a 100
con 100
essere il migliore. Impostandolo a 20
, sembra buono quasi quanto l'originale (un po' più sfocato e il piccolo testo in fondo è un po' difficile da leggere, ma in origine era comunque).
Queste opzioni portano i tuoi 1,7 MB campione fino a 0,5 MB , pur mantenendolo leggibile. Puoi sperimentare un po'.
Se vuoi una dimensione più piccola (sia del file che dell'immagine/PDF), puoi usare -resize #%
, per esempio. -resize 75%
. Nel tuo PDF di esempio, però, ciò rende la piccola stampa in basso praticamente illeggibile.
Se hai ancora poco spazio, soprattutto per i PDF multipagina, puoi comprimere ulteriormente aggiungendo i file a un archivio ZIP (o altro). Ciò ha ridotto la dimensione del file a 0,43 MB su quel PDF di prova (la riduzione della qualità di compressione JPEG ha un effetto molto più drastico). Puoi anche dividere il file PDF in pagine con pdftk
, come suggerito da @glallen nella sua modifica, oppure dividere l'archivio e ricombinarlo dall'altra parte.
2 MB è anche un limite di allegati piuttosto piccolo, potresti voler esaminare altri provider di posta elettronica. Dalla memoria, GMail fornisce oltre 10 MB per email.
Queste opzioni, e altre ancora, sono completamente documentate sul loro sito web.