¿Obtener una vista previa JPEG de un PDF en Windows?
Pregunta
Tengo una aplicación multiplataforma (Python) que necesita generar una vista previa JPEG de la primera página de un PDF.
En Mac estoy generando sorbos.¿Hay algo igualmente simple que pueda hacer en Windows?
Solución
ImageMagick delega la conversión de PDF->mapa de bits a GhostScript de todos modos, así que aquí tienes un comando que puedes usar (se basa en el comando real enumerado por el ps:alpha
delegado en ImageMagick, recién ajustado para usar JPEG como salida):
gs -q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT \
-dMaxBitmap=500000000 -dLastPage=1 -dAlignToPixels=0 -dGridFitTT=0 \
-sDEVICE=jpeg -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r72x72 \
-sOutputFile=$OUTPUT -f$INPUT
dónde $OUTPUT
y $INPUT
son los nombres de los archivos de entrada y salida.Ajustar el 72x72
a cualquier resolución que necesites.(Obviamente, elimine las barras invertidas si escribe el comando completo en una sola línea).
Esto es bueno por dos razones:
- Ya no necesitas tener ImageMagick instalado.No es que tenga nada en contra de ImageMagick (me encanta), pero creo en soluciones simples.
- ImageMagick realiza una conversión de dos pasos.Primero PDF->PPM, luego PPM->JPEG.De esta forma, la conversión es en un solo paso.
Otras cosas a considerar:Con los archivos que he probado, PNG se comprime mejor que JPEG.Si desea utilizar PNG, cambie el -sDEVICE=jpeg
a -sDEVICE=png16m
.
Otros consejos
Puede utilizar la utilidad de conversión de ImageMagick para esto; consulte algunos ejemplos en http://studio.imagemagick.org/pipermail/magick-users/2002-May/002636.html :
Convert taxes.pdf taxes.jpg
Convertirá un archivo PDF de dos páginas en [2] archivos jpeg:Taxes.jpg.0, Taxes.jpg.1
También puedo convertir estos JPEG en miniaturas de la siguiente manera:
convert -size 120x120 taxes.jpg.0 -geometry 120x120 +profile '*' thumbnail.jpg
Incluso puedo convertir el PDF directamente a una miniatura jpeg de la siguiente manera:
convert -size 120x120 taxes.pdf -geometry 120x120 +profile '*' thumbnail.jpg
Esto dará como resultado una miniatura.jpg.0 y miniatura.jpg.1 para las dos páginas.
¿Es probable que la PC tenga instalado Acrobat?Creo que Acrobat instala una extensión de shell para que las vistas previas de la primera página de un documento PDF aparezcan en la vista en miniatura del Explorador de Windows.Puede obtener miniaturas usted mismo a través de la API COM IExtractImage, que deberá ajustar. VBAccelerator tiene un ejemplo en C# que podrías portar a Python.