2011-09-21 13 views
6

Quando uso il seguente comando Ghostscript per generare le miniature jpg da file PDF, la qualità delle immagini è spesso molto scarsa:Come convertire PDF in JPEG a bassa risoluzione (ma di buona qualità)?

gs -q -dNOPAUSE -dBATCH -sDEVICE=jpeggray -g465x600 -dUseCropBox -dPDFFitPage -sOutputFile=pdf_to_lowres.jpg test.pdf 

Al contrario, se uso Ghostscript per generare un PNG ad alta risoluzione, e quindi utilizzare mogrify per convertire il png ad alta risoluzione in un jpg a bassa risoluzione, ottengo risultati piuttosto buoni.

gs -q -dNOPAUSE -dBATCH -sDEVICE=pnggray -g2550x3300 -dUseCropBox -dPDFFitPage -sOutputFile=pdf_to_highres.png test.pdf 
mogrify -thumbnail 465x600 -format jpg -write pdf_to_highres_to_lowres.jpg pdf_to_highres.png 

C'è un modo per ottenere buoni risultati ignorando il pdf intermedio -> passo png ad alta risoluzione? Ho bisogno di farlo per un gran numero di pdf, quindi sto cercando di ridurre al minimo il tempo di elaborazione.

Ecco i link alle immagini di riferimento di cui sopra:

  1. test.pdf
  2. pdf_to_lowres.jpg
  3. pdf_to_highres.png
  4. pdf_to_highres_to_lowres.jpg
+0

Dai un'occhiata a [questa risposta utile] (https://serverfault.com/a/797110/168205), potrebbe risolvere il problema senza utilizzare Ghostscript. Lo ha fatto per me. – likeitlikeit

risposta

5

Un'opzione che sembra migliorare l'output molto: -dDOINTERPOLATE. Ecco quello che ho ottenuto eseguendo lo stesso comando, come si, ma con l'opzione -dDOINTERPOLATE:

JPEG with -dDOINTERPOLATE

Non sono sicuro di quello che interpolation metodo questo utilizza ma sembra abbastanza buono, soprattutto in confronto ai risultati senza di essa .

P.S. Considera l'output di immagini PNG (-sDEVICE=pnggray) anziché JPEG. Per la maggior parte dei documenti PDF (che tendono ad avere solo pochi colori solidi) è una scelta more appropriate.

+0

+1 per "Considera l'output di immagini PNG", non ci sono puntini d'argento nella compressione dell'immagine e jpeg non è una buona scelta per le immagini con testo o cifre ad alto contrasto in generale. – yms

+0

Se potessi, voterei 100 volte questa risposta !! Dopo giorni e giorni, -dDOINTERPOLATE è stata la soluzione – David

3

vostro PDF sembra che sia solo un wrapper attorno a un jpeg già.

Provare a utilizzare il programma pdfimages da xpdf per estrarre l'immagine effettiva anziché il rendering di in un file.

+1

Potrebbe funzionare per questo particolare file di test, ma spero in una soluzione più solida che funzioni anche se il PDF non sta avvolgendo una singola immagine. –

Problemi correlati