Solución:
Puedes probar ImageMagick’s convert
utilidad.
En Ubuntu, puede instalarlo con este comando:
$ sudo apt-get install imagemagick
Usar convert
como esto:
$ convert input.pdf output.jpg
# For good quality use these parameters
$ convert -density 300 -quality 100 in.pdf out.jpg
Por mi vida, durante los últimos 5 años, no puedo conseguir imagemagick trabajar consistentemente (si es que lo hace) para mí, y no sé por qué la gente lo recomienda continuamente una y otra vez. Busqué en Google cómo convertir un PDF a JPEG hoy, encontré esta respuesta y probé convert
, y no me funciona en absoluto:
$ convert in.pdf out.jpg convert-im6.q16: not authorized `in.pdf' @ error/constitute.c/ReadImage/412. convert-im6.q16: no images defined `out.jpg' @ error/convert.c/ConvertImageCommand/3258.
Luego, recordé que había otra herramienta que uso y sobre la que escribí, así que busqué en Google “Linux convertir pdf a jpg Gabriel Staples”, hice clic en el primer resultado y me desplacé hacia abajo hasta mi respuesta. Esto es lo que funciona perfectamente para mí. Este es el formato de comando básico:
pdftoppm -jpeg -r 300 input.pdf output
los -jpeg
establece el formato de imagen de salida en JPG, -r 300
establece la resolución de la imagen de salida en 300 DPI, y la palabra output
será el prefijo de todas las páginas de imágenes, que se numerarán y colocarán en el directorio actual en el que está trabajando. Sin embargo, en mi opinión, una mejor manera es usar mkdir -p images
primero para crear un directorio de “imágenes”, luego establezca la salida en images/pg
para que todas las imágenes de salida se coloquen limpiamente en el images
dir que acaba de crear, con el prefijo de archivo pg
delante de cada uno de sus números.
Por lo tanto, aquí están mis comandos favoritos:
-
[Produces ~1MB-sized files per pg] Salida en .jpg formato en 300 DPI:
mkdir -p images && pdftoppm -jpeg -r 300 mypdf.pdf images/pg
-
[Produces ~2MB-sized files per pg] Salida en .jpg formato a la más alta calidad (mínima compresión) y todavía en 300 DPI:
mkdir -p images && pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg
-
Si necesita más resolución, puede probar 600 DPI:
mkdir -p images && pdftoppm -jpeg -r 600 mypdf.pdf images/pg
-
… o 1200 DPI:
mkdir -p images && pdftoppm -jpeg -r 1200 mypdf.pdf images/pg
Consulte las referencias a continuación para obtener más detalles y opciones.
Referencias:
- [my answer] Convierte PDF a imagen con alta resolución
- [my answer] https://askubuntu.com/questions/150100/extracting-embedded-images-from-a-pdf/1187844#1187844
libvips puede convertir PDF -> JPEG rápidamente. Viene con la mayoría de las distribuciones de Linux, está en homebrew en macos y puede descargar un binario de Windows desde el sitio libvips.
Esto convertirá el PDF en un JPG con el DPI predeterminado (72):
vips copy somefile.pdf somefile.jpg
Puede utilizar la opción de dpi para establecer alguna otra resolución de renderizado, por ejemplo:
vips copy somefile.pdf[dpi=600] somefile.jpg
Puede seleccionar páginas como esta:
vips copy somefile.pdf[dpi=600,page=12] somefile.jpg
O renderice cinco páginas a partir de la página tres de esta manera:
vips copy somefile.pdf[dpi=600,page=3,n=5] somefile.jpg
Los documentos para pdfload tienen todas las opciones.
Con esta imagen de referencia, veo:
$ /usr/bin/time -f %M:%e convert -density 300 r8.pdf[3] x.jpg
276220:2.17
$ /usr/bin/time -f %M:%e pdftoppm -jpeg -r 300 -f 3 -l 3 r8.pdf x.jpg
91160:1.24
$ /usr/bin/time -f %M:%e vips copy r8.pdf[page=3,dpi=300] x.jpg
149572:0.53
Así que libvips es aproximadamente 4 veces más rápido y necesita la mitad de la memoria, al menos en esta prueba.