¿Cómo generar un archivo PDF de varias imágenes por línea de comandos?

agosto 5, 2024

En los proyectos donde generamos productos digitales con salida visual (modelos 3D, renderizados, texturizados, diseño de sitios web, etc.) con frecuencia nos vemos en la necesidad de exportar algunas imágenes y/o realizar capturas de pantalla para obtener retroalimentación del cliente.

Sin embargo, compartir cada archivo de manera individual con el cliente le dificulta al cliente realizar su comentarios en otro documento, por tanto, optamos por generar un archivo PDF con esas imágenes donde el cliente pueda directamente hacer notas sobre la imagen reduciendo la necesidad de redactar contexto para ubicar el punto de discusión.

Generar un PDF es fácil si se cuenta con un editor de PDF que permita esta función, sin embargo varios requieren una licencia o subscripción activa. En este artículo exploramos opciones que no requieren contar con un editor de PDF y no tienen un costo adicional al esfuerzo del tiempo que se le dedique a leer este artículo.

La primera opción y más sencilla es utilizar sitio webs que permiten de manera gratuita subir las imágenes para posteriormente generar el PDF que puedes descargar. Esta opción no permite mucho control sobre como desplegar la imagen en cada página del documento, por otro lado y aún más importante es que en caso de estar trabajando con archivos de con información confidencial o privada subir los archivos a estos sitios web no es una opción.

Herramienta a utilizar

ImageMagick es una suite de herramientas de línea de comando que permiten editar, convertir y componer imágenes.

Permite:

  • Mayor control sobre la imagen y página a generar como salida.
  • Procesar localmente en la computadora las imágenes, por tanto no hay riesgo de compartir los archivos con terceros.
  • Instalación en Mac OS X, Windows o Linux.
  • Además de generar PDFs puede permitir otras operaciones con imágenes (convertir de formato, escalar, rotar, formar composiciones, etc.)

Cómo generar PDF de imágenes con ImageMagick

Una vez instalado ImageMagick, digamos que tenemos una carpeta con varios archivos PNG con los cuales queremos generar un PDF, colocar un imagen por página.

Abrimos la linea de comandos (terminal), nos colocamos en la carpeta con las imágenes y escribimos el siguiente comando:

magick *.png miDocumento.pdf

Si tenemos archivos con otro formato de imagen solamente cambiamos la extensión:

magick *.jpg miDocumento.pdf

O en caso de tener varios formatos podemos utilizar el comodín para seleccionar todos los archivos en la carpeta.

magick *.* miDocumento.pdf

Este comando es muy útil ya que el tamaño de la página generada se ajustará al mismo tamaño de la imagen fuente.

Reescalando las imágenes

Ahora tenemos la siguiente situación, queremos reescalar todas nuestras imágenes al mismo tamaño (digamos, 1024 pixeles de ancho) y generar un PDF con estas. De esta forma todas las páginas del documento PDF tendrán el mismo tamaño.

Ahora utilizaremos una de las herramientas de la suite de ImageMagick, el comando mogrify, que nos permite reescalar, blur, crop y unión de imágenes entre otras operaciones.

mogrify -resize 1024 -format png -path ResizedImagesFolder *.png

En el comando estamos especificando la ubicación y nombre del folder donde queremos alojar estas nuevas imágenes reescalar y el formato de imagen deseado .

El comando reescalará todas las imágenes y las almacenará en el folder indicado (ResizedImagesFolder) con el formato indicado (-format png), lo cual es útil si no queremos reescribir nuestra imágenes fuente.

Posteriormente podemos generar el PDF con el comando revisado anteriormente y el documento generado tendrá todas las páginas del mismo ancho manteniendo y las imágenes estarán escaladas respentando su relación de aspecto (aspect ratio).

Si la generación de PDFs con imágenes es una tarea frecuente la ventaja de usar línea de comandos es que se puede generar un script para que haga todo el trabajo por nosotros, ahorrándonos tiempo. Espero que estos comandos sean útiles y que ImageMagick pueda ser una herramienta que ayude a realizar su trabajo de manera más expedita.

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram