Ridimensiona in batch e comprime i file PDF


15

Ho bisogno di un modo per ridimensionare e comprimere i batch di file PDF. Preferirei farlo su Windows, ma Linux andrebbe bene se significasse un flusso di lavoro più fluido.

So che ci sono programmi come NitroPDF e Acrobat che ti consentono di ottenere questo risultato, ma temo che dovrebbe essere fatto file per file. Anche questi programmi non sono economici e preferirei non acquistarli solo per poter utilizzare una o due funzionalità.

Informazioni di base: utilizzo CamScanner per digitalizzare le entrate e le fatture per l'iscrizione negli account (FreeAgent). I pdf di CamScanner sono tutti in formato A4 e quelli multipagina spesso superano il limite di 2 MB di allegato.

Risposte:


15

Sto suggerendo uno strumento da riga di comando qui, che può essere facilmente corretto con loop nei linguaggi di scripting integrati in Windows, Linux, OS X, ecc.


ImageMagick supporta i PDF e ha resizeun'opzione con il suo strumento di conversione . Non l'ho mai usato personalmente, ma puoi provare a giocarci.

Puoi anche usare l' compressopzione (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 di densità è importante perché altrimenti ImageMagick esegue il down-campionamento dell'immagine (per qualche motivo). L'aggiunta dell'opzione di compressione consente di ridurre le dimensioni complessive del PDF, senza perdita di qualità.

Per PDF multipagina, potresti voler utilizzare pdftk, quindi utilizzare mogrifyda ImageMagick per convertire ogni pagina in atto:

$ 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, è necessario disporre di GhostScript installato.


ImageMagick può convertire PDF multipagina. Durante mogrifyla conversione, ti consiglio di utilizzare in convertmodo da poter 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 è 72DPI. Impostandolo più in alto possiamo ottenere una risoluzione più elevata e quindi una qualità accettabile. Sembrava a posto 150, ed era un po 'più piccolo, ma se vuoi soddisfare una vasta gamma di PDF 200dovrebbe funzionare.

La compressione JPEG dovrebbe scegliere automaticamente un livello o, di default, 92su una scala di 1a 100con 100il migliore. Impostandolo su 20, sembra quasi buono come l'originale (un po 'più sfocato e il piccolo testo in basso è un po' difficile da leggere, ma era comunque originariamente).

Queste opzioni portare il vostro 1.7MB campione fino a 0,5 MB , mantenendo leggibile. Puoi sperimentare un po '.

Se si desidera una dimensione inferiore (sia del file sia dell'immagine / PDF), è possibile utilizzare -resize #%, ad es -resize 75%. Nel tuo PDF di esempio, questo rende la piccola stampa in fondo praticamente illeggibile, però.

Se hai ancora poco spazio, specialmente per i PDF multipagina, puoi comprimere ulteriormente aggiungendo i file a un archivio ZIP (o altro). Ciò ha portato 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 conpdftk , come suggerito da @glallen nella sua modifica, oppure dividere l'archivio e ricombinarlo dall'altra parte.

2 MB è anche un limite di allegato piuttosto piccolo, potresti voler esaminare altri provider di posta elettronica. Dalla memoria, GMail fornisce oltre 10 MB per e-mail.

Queste e altre opzioni sono completamente documentate sul loro sito Web .


Sembra un approccio eccellente, ma non credo che i miei pdf siano supportati dal TIFF. CamScanner prima scatta foto JPEG e poi le converte in PDF per l'esportazione. L'elaborazione di questi PDF sembra sottocampionarli come indica il post sul blog, indipendentemente dalla compressione. La conversione da PDF a TIFF e quindi di nuovo in PDF sembra preservare la qualità ma gonfia le dimensioni del file e incasina le dimensioni e la densità della pagina.
Stan,

@paganompu A quanto ho capito, vuoi ridurre le dimensioni del file. Che ne dici di comprimere come JPEG? Come è resizevenuto fuori? Hai un file di esempio (non sensibile) con cui possiamo giocare? Il down-sampling è accettabile?
Bob,

JPEG sarebbe andato bene, ma devo caricare documenti multipagina e posso avere solo un allegato per ogni voce dell'account. Il downsampling è grave: questo documento di prova è illeggibile dopo la conversione con compressione senza perdita.
Stan,

@paganompu Ho sperimentato un po 'me stesso e ho aggiornato la risposta con un comando funzionante. Vedi qui per un test sul tuo file.
Bob,

Quel comando funziona come un incantesimo. Sembra che il mio "downsampling" fosse dovuto all'omissione density... giuro di poter leggere e seguire le istruzioni! Un po 'imbarazzato ora: S Grazie per aver dedicato del tempo ad aiutarmi Bob
Stan,

19

Quindi convertda ImageMagick produrrà PDF rasterizzati e molte persone sarebbero interessate a mantenere intatta la grafica vettoriale e il testo in modo da comprimere solo le immagini incorporate. Quindi una buona alternativa alla compressione è usare gsdall'esempio di pacchetto ghostscriptdi utilizzo:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf in.pdf

nel parametro di comando sopra: -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)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.