Convertir PDF gráfico en imágenes
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.
Extraer todas las páginas del PDF como imágenes
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>