2011-09-21 25 views
6

Cuando utilizo el siguiente comando Ghostscript para generar imágenes en miniatura jpg de archivos PDF, la calidad de imagen es a menudo muy pobres:Cómo convertir PDF a JPEG de baja resolución (pero de buena calidad)?

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

Por el contrario, si uso Ghostscript para generar un png de alta resolución, y luego usar mogrify para convertir el png de alta resolución a un jpg de baja resolución, obtengo resultados bastante buenos.

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 

¿Hay alguna forma de lograr buenos resultados al pasar por alto el paso intermedio de pdf -> png de alta resolución? Necesito hacer esto para una gran cantidad de archivos PDF, así que estoy tratando de minimizar el tiempo de cómputo.

Aquí están los enlaces a las imágenes que se hace referencia más arriba:

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

Eche un vistazo a [esta útil respuesta] (https://serverfault.com/a/797110/168205), podría solucionar su problema sin utilizar Ghostscript en absoluto. Lo hizo por mi – likeitlikeit

Respuesta

5

Una opción que parece mejorar mucho la salida: -dDOINTERPOLATE. Aquí es lo que tengo al ejecutar el mismo comando que usted, pero con la opción -dDOINTERPOLATE:

JPEG with -dDOINTERPOLATE

No estoy seguro de lo que interpolation método presente utiliza pero parece bastante bueno, especialmente en comparación con los resultados sin él .

P.S. Considere la posibilidad de generar imágenes PNG (-sDEVICE=pnggray) en lugar de JPEG. Para la mayoría de los documentos PDF (que tienden a tener solo unos pocos colores sólidos) es una opción more appropriate.

+0

+1 para "Considerar la salida de imágenes PNG", no hay balas de plata en la compresión de imagen, y jpeg no es una buena opción para las imágenes con texto o cifras de alto contraste en general. – yms

+0

¡Si pudiera, votaría 100 veces esta respuesta! Después de días y días, -DDOINTERPOLATE ha sido la solución – David

3

Su PDF parece que es sólo un envoltorio alrededor de un jpeg ya.

Pruebe usar el programa pdfimages de xpdf para extraer la imagen real en lugar de procesar en un archivo.

+1

Eso podría funcionar para este archivo de prueba en particular, pero estoy esperando una solución más robusta que funcione incluso si el PDF no está envolviendo una sola imagen. –

Cuestiones relacionadas