# Extraer páginas de un PDF en MacOs X desde el shell

## Antecedentes

Que si esta, que si la otra,... un baile de aplicaciones algunas de ellas muy engañosas con el concepto **gratis** cuando en realidad son aplicaciones capadas que buscan tu dinero.

**Opensource** que no es lo mismo y es mejor. En mi artículo [Extraer páginas de un PDF en Linux desde el shell](https://wiki.castris.com/books/linux/page/extraer-paginas-de-un-pdf-en-linux-desde-el-shell) escribí sobre algo parecido para Linux. Hoy le toca el turno a Mac Os.


Tras un incidente con la falta de usabilidad de [Dominio.es](https://www.dominios.es/es) en el que te piden un DNI en el proceso de validación de un cambio de titular, tuve que extraer del PDF que me envió el cliente, las dos imágenes del DNI, y después, juntarlas en una sola imagen (no admiten más de una), para terminar con un, **se me olvide decirte que la imagen no puede tener más de 600px de ancho) realice el trabajo en el shell

## Programa Poppler

[Poppler](https://poppler.freedesktop.org/) es un programa de rendering de PDF basado en [xpdf](https://www.xpdfreader.com/)

Usaremos [Homebrew](https://brew.sh/) para instalarlo. 

```
brew install poppler
```

Con Poppler, extremos las imágenes a través de su binario **pdfimages**

```
pdfimages archivo.pdf prefijo_salida
```

- `archivo.pdf` es el nombre de tu archivo
- `prefijo_salida` es el prefijo que tendrán tus imágenes extraidas

Si lo hacemos así las imágenes saldrán en formato [.ppm](https://es.wikipedia.org/wiki/Formatos_Netpbm) así que tendríamos que convertirlos a JPG pro imperativo de dominios.es.

## Programa ImageMagick

Usaremos uno de los programas de ImageMagick, así que si no lo tenemos (es un super programa, tanto en Linux como en Mac) lo instalaremos.

```
brew install imagemagick
```

Una vez instalado de todos los binarios o programas que instala usaremos varios.

`convert` para convertirlo a otro formato

```
convert prefijo_salida-0000.ppm prefijo_salida-0000.jpg
```

Como tenemos mas de una imagen que bueno un comando

```
for img in *.ppm; do convert "$img" "${img%.ppm}.jpg"; done
```
### Tip 

Si antes de hacer nada leemos el man de **poppler** directamente podemos hacer la extracción a jpg.

Usamos el parametro `-j`

```
pdfimages -j archivo.pdf prefijo_salida
```

## Crear un único archivo

Bueno, cuando vas a subir el fichero descubres que sólo quieren un fichero.

Nos toca usar convert otra vez para añadirlos.

```
convert prefijo_salida-0000.jpg prefijo_salida-0001.jpg +append resultado_final.jpg
```

Ay... que ahora no lo quieren de max de 600px de ancho.

```
convert prefijo_salida-0000.jpg prefijo_salida-0001.jpg -append resultado_final.jpg
```

Observa que `+append` se convirtió en `-append` para crearlo en vertical uno tras otro.

Pero, no. No comprobé que el ancho de cada imagen fuera de menos de 600px, y resulto que tenía 610.

Bueno, ya es el último.

```
convert resultado_final.jpg -resize 600x resultado_final_redimensionado.jpg
```

## Finales

Espero que lo hallas disfrutado. Ahora te dejo que tengo que seguir con mi proyecto, [Baytuka](https://baytuka.com/)


##### Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. 
También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad.
El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com)

Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/store/soporte-profesional).