Crear un PDF a partir de varias imágenes (jpg, jpeg, gif)


Vamos a ver como convertir un grupo de imágenes jpg (formatos permitidos: PS PDF JAI PNG JPEG TIFF PNM BMP GIF LBM XPM PCX TGA, sólo hay que cambiar la extensión jpg por la que queramos convertir) en un pdf, con una imagen por página. Lo primero que tenemos que hacer es meter en una carpeta todas las imágenes ordenadas como queremos que salgan en el pdf. No metáis nada más, ni imágenes repetidas, ni nada. Pongo un ejemplo: Tenemos 100 imágenes de un cómic que hemos dibujado y escaneado en la carpeta Comic. Las imágenes se llaman imagen001.jpg, imagen002.jpg…imagen100.jpg Dónde imagen001.jpg será la primera página del pdf e imagen100.jpg la última.

¿Qué necesitamos?
Dos programitas
1.- PDFtk
2.- sam2p

Instalando PDFtk y sam2p
Abrimos una terminal (Aplicaciones -> Accesorios -> Terminal) y escribimos:
sudo apt-get install pdftk

Metemos nuestra contraseña y le decimos que sí a la pregunta que nos hará (escribimos s y pulsamos intro). Cuando acaba instalamos sam2p, escribiendo:
sudo apt-get install sam2p

y hacemos lo mismo que en el anterior. Ya estamos listos para crear nuestro pdf.

Creando el pdf a partir de las imágenes jpg
Lo primero que tenemos que hacer es convertir cada imagen en un pdf. Para ello, si son pocas, podemos hacerlo a mano, pero como son 100, vamos a hacer un programita que lo haga por nosotros.
Abrimos una terminal y vamos a la carpeta Comic, que tenemos en el Escritorio, en este ejemplo. Escribimos:
cd Escritorio/Comic

Ahora vamos a convertir todas las imágenes jpg del cómic en pdfs. Escribimos esto:
for f in $(ls *.jpg); do sam2p $f PDF: $f.pdf ; done

Y por cada imagen nos va a salir algo parecido a esto:
This is sam2p v0.45-3.
Available Loaders: PS PDF JAI PNG JPEG TIFF PNM BMP GIF LBM XPM PCX TGA.
Available Appliers: XWD Meta Empty BMP PNG TIFF6 TIFF6-JAI JPEG-JAI JPEG PNM GIF89a+LZW XPM PSL1C PSL23+PDF PSL2+PDF-JAI P-TrOpBb.
sam2p: Notice: job: read InputFile: imagen001.jpg
sam2p: Notice: writeTTT: using template: p0jbb
sam2p: Notice: applyProfile: applied OutputRule #0
sam2p: Notice: job: written OutputFile: imagen001.jpg.pdf
Success.

La explicación de lo que hace nuestro programita bash es:
Cada resultado de ls *.jpg, es decir, cada imagen .jpg, se va almacenando en la variable f. Por cada imagen ejecutamos el comando sam2p $f PDF: $f.pdf que convierte lo que hay almacenado en f en f.pdf. Es un bucle sencillo y muy útil.

Una vez hecho esto, ya tenemos 100 pdfs, cada uno con su correspondiente imagen. Ahora vamos a unirlos en un sólo pdf. Estando en Escritorio/Comic, escribimos en la terminal:
pdftk *.pdf cat output comic.pdf

No debe darnos ningún error, pero puede aparecer algún warning. En teoría no pasa nada.

Ya tenemos nuestro PDF listo, con una imagen en cada página.




Entradas que te pueden interesar:







7 Comentarios en Crear un PDF a partir de varias imágenes (jpg, jpeg, gif)

  1. unai dice:

    Muy útil y al grano. Ha chutado a la primera. Muchas gracias.

  2. Jacob815 dice:

    Cómo se hace lo mismo pero en windows, es que necesito hacerlo mismo pero no tengo acceso a ningún equipo con Linux ni tengo demasiado interés en instalarlo.
    Muchas gracias.

  3. julian dice:

    muchas gracias,

    funcionó a la primera ahorrándome un buen quebradero de cabeza. sólo tuve que cambiar la extensión jpg por pnm (eran los archivos que quería pasar a pdf) “et voila”.

  4. b dice:

    No me ha ordenado bien los pdfs, he compovado el orden y esta perfecto. Que puede ser el problema?

  5. Pablo dice:

    Excelente. Claro, conciso y al grano. Además con explicación de lo que realiza el comando (como debería ser). ¡Bravo por vos! Saludos.-

  6. Santiago dice:

    Muy útil

    Si se me permite la corrección, si los $f y $f.pdf los pones entre comillas dobles, te funcionará también en el caso de que los nombres de los ficheros que quieras procesar contengan espacios.

    Yo lo dejaría así:

    for f in *.jpg; do sam2p $f” “$f.pdf” ; done

    Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *