Dado un PDF donde cada página es una imagen y el PDF es un mero contenedor de imágenes, veamos cómo extraer cada página del PDF como una imagen para poder tratarla. En GNU/Linux utilizaremos comandos para los cuales hay que instalar los paquetes imagemagick y poppler-utils.


Mediante la utilidad pdfimages de poppler-utils, extraemos las imágenes del documento PDF. Lo hacemos llamando a pdfimages con el nombre del PDF e indicándole el nombre "base" que queremos que tenga cada imagen:

$ ls -l CodigoMaquinaDelZX-Spectrum.pdf 
-rwxr-xr-x 1 sromero sromero 75M 2010-12-15 16:43 CodigoMaquinaDelZX-Spectrum.pdf
 
$ pdfimages CodigoMaquinaDelZX-Spectrum.pdf cm_spectrum
 
$ ls -l *.{jpg,pbm,ppm} | head -5
-rw-r--r-- 1 sromero sromero 3358471 2010-12-15 18:04 cm_spectrum-000.ppm
-rw-r--r-- 1 sromero sromero 3014503 2010-12-15 18:04 cm_spectrum-001.ppm
-rw-r--r-- 1 sromero sromero 2918041 2010-12-15 18:04 cm_spectrum-002.ppm
-rw-r--r-- 1 sromero sromero 2939263 2010-12-15 18:04 cm_spectrum-003.ppm
-rw-r--r-- 1 sromero sromero 2882671 2010-12-15 18:04 cm_spectrum-004.ppm
 
$ ls -l *.{jpg,pbm,ppm} | tail -5
-rw-r--r-- 1 sromero sromero 3136228 2010-12-15 18:05 cm_spectrum-421.ppm
-rw-r--r-- 1 sromero sromero 3025744 2010-12-15 18:05 cm_spectrum-422.ppm
-rw-r--r-- 1 sromero sromero 3138784 2010-12-15 18:05 cm_spectrum-423.ppm
-rw-r--r-- 1 sromero sromero 1836765 2010-12-15 18:05 cm_spectrum-424.ppm
-rw-r--r-- 1 sromero sromero 3046747 2010-12-15 18:05 cm_spectrum-425.ppm
 
$ cd .. && du -sh cm-spectrum/
1,3G	../cm-spectrum/

Como podemos ver, el comando ha generado 425 ficheros ppm con formato "base-numero.ppm", con un tamaño mucho mayor que el del PDF original (1.3GB vs 75MB), ya que las imágenes están extraídas a un formato de fichero sin compresión.

Si queremos extraer las imágenes directamente a JPG, podemos añadir el flag "-j" a pdfimages. No obstante, dado que la calidad tras la compresión JPG suele ser bastante baja, es mejor trabajar inicialmente con los PBMs. Después, los convertimos a JPG con "convert":

$ for i in *.ppm ; do convert $i -quality 100 `basename $i .ppm`.jpg ; done
$ for i in *.pbm ; do convert $i -quality 100 `basename $i .pbm`.jpg ; done
$ rm -f *.pbm *.ppm
 
$ du -sh ../cm-spectrum
157M	../cm-spectrum

Como resultado de lo que acabamos de ver ya tenemos todo el libro/documento/comic en un directorio lleno de imágenes tratables.



<Siguiente paso: partir páginas dobles en 2 imágenes>

<Volver a la sección de Ebooks>

  • linux/aplicaciones/ebooks/convertir_pdf_i_en_imagen.txt
  • Última modificación: 18-12-2010 20:40
  • por sromero