Actualmente estoy usando ImageMagick para convertir archivos PDF a imágenes ráster JPEG. Es dolorosamente lento y consume mucha memoria.
El comando que usé fue:
convert -geometry 1024x768 -density 200 -colorspace RGB foo.pdf bar%02d.jpg
Supongo que es lento porque usa Ghostscript. Pero debe haber una forma más rápida de hacerlo en una caja de Linux.
¿Alguien ha encontrado una mejor solución?
pdf
imagemagick
ghostscript
mat3001
fuente
fuente
Respuestas:
Usar Ghostscript directamente (en lugar de usar el
convert
comando ImageMagick , que llama a Ghostscript indirectamente) es realmente más rápido. Y le da más control sobre los parámetros de conversión. Tratardónde
-o
: determina la ruta de salida + nombre de archivo (y guarda el uso de-dBATCH -dNOPAUSE
)-dJPEGQ
: establece la calidad JPEG al 95%-r
: establece la resolución a 600 ppp-g
: establece el tamaño de la imagen en 4960x7016px-sDEVICE
: establece la salida como JPEGEs probable que este comando aún sea lento para usted y cree archivos más grandes de lo esperado. Para tamaños de archivo más pequeños y una ejecución más rápida, intente esto (que probablemente se acerca a la calidad de salida de su
convert
línea de comandos):o incluso
(que proporciona una resolución de 72 ppp, a menudo lo suficientemente buena para la mayoría de las pantallas y para la mayoría de las aplicaciones web).
fuente
Por cierto, una de las razones por las que ImageMagick es mucho más lento es que llama a Ghostscript dos veces. No convierte PDF => PNG de una vez, pero utiliza 2 pasos diferentes:
PDF => PostScript
conversión;PostScript => PNG
conversión.Puede obtener información sobre la configuración detallada de los "delegados" de ImageMagick (los programas externos que utiliza ImageMagick, como Ghostscript) escribiendo
(En mi sistema, esa es una lista de 32 comandos diferentes). Ahora para ver qué comandos se usan para convertir a PNG, use esto:
Ok, esto fue para Linux. Si está en Windows, intente esto:
Descubrirá que la mensajería instantánea produce PNG solo a partir de la entrada PS o EPS. Entonces, ¿cómo obtiene IM (E) PS de su PDF? Fácil:
Ah! Utiliza Ghostscript para hacer una conversión PDF => PS, luego usa Ghostscript nuevamente para hacer una conversión PS => PNG. Funciona, pero no es la forma más eficiente si sabe que Ghostscript puede hacer PDF => PNG de una vez. Y mas rapido. Y de mucha mejor calidad.
Sobre el manejo de IM de la conversión de PDF a imágenes a través del delegado de Ghostscript, primero debe saber dos cosas:
-density 600
como unconvert
parámetro que le dice a Ghostscript que use una resolución de 600 ppp para su salida de imagen.PDF => PS
y luegoPS => PNG
es un verdadero error. Porque nunca ganas y difícilmente mantienes la calidad en el primer paso, pero a menudo pierdes algo. Razones:(La conversión en la dirección opuesta
PS => PDF
, por lo tanto, no es tan crítica ...)Es por eso que le sugerí que convierta sus PDF de una vez a PNG (o JPEG) usando Ghostscript directamente. Y use la versión más reciente 8.71 (próximamente lanzada: 9.00) de Ghostscript ...
fuente
El programa
pdftoppm
del paquete poppler también puede crear archivos JPEG, y para mí es aproximadamente el doble de rápido que el usogs
descrito anteriormente:fuente
En mi experiencia, MuPDF es mucho más rápido que Ghostscript. Es un proyecto mucho más nuevo sin gran parte del rudo en gs. ¡Pruebe si se ajusta a su caso de uso!
mudraw -w 1024 -h 768 -r 200 -c rgb -o bar%d.png foo.pdf
Si tiene una distribución anterior de Linux e instaló herramientas mupdf desde el repositorio,
mudraw
aún podría llamarsepdfdraw
Luego debe convertir el png a jpeg utilizando, por ejemplo, imagemagick. Pero aún será más rápido que Ghostscript.
fuente