Cómo convertir (miles de) archivos pdf a escala de gris, con un solo comando

Existen ocasiones en las que debemos automatizar tareas en nuestras labores diarias, y me ocurrió que debía convertir cerca de 4000 archivos PDF de color a escala de gris.

Utilizando bash (bajo linux, o utilizando la interfaz de Linux que provee Windows 10), podemos crear un par de scripts que nos ayuden a automatizar esta tarea.

Primero debemos crear en la carpeta donde tengamos almacenados los PDFs, un archivo que se va a llamar «conviertegris.sh» que contendrá el siguiente código:

#!/bin/bash
gs -sOutputFile=pdfgris.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray -dCompatibiltyLevel=1.4 -dNOPAUSE -dBATCH $@

y luego le daremos permisos de ejecución mediante el siguiente comando en la consola

chmod +x conviertegris.sh

Si tuvieramos un solo archivo PDF que quisieramos convertirlo a escala de gris. podríamos utilizar el script de la siguiente manera:

./conviertegris.sh miPDFaColor.pdf

y esto nos generará un nuevo archivo pdf llamado pdfgris.pdf que contendrá la versión en gris de nuestro archivo original.

Ahora, para automatizar este proceso para todos nuestros PDFs, vamos a crear otro script que se va a llamar «conviertelote.sh», que contendrá el siguiente código:

#!/bin/bash
find ./ -name "*.pdf" | sed 's|./||' > listapdf.txt
mkdir pdfgris
for file in $( < list .txt); do ./conviertegris.sh "$file"; mv pdfgris.pdf ./pdfgris/"$file"; done
rm listapdf.txt

Al ejecutar este script mediante el comando bash conviertelote.sh, empezaremos a ver que el proceso arranca y dentro de la carpeta pdfgris empezaremos a ver nuestros archivos convertidos.

Con esto, y luego de un par de horas, habremos terminado la tarea, sin tener que pasar por el suplicio de abrir cada archivo en un editor de PDFs y guardarlos en escala de gris, ahorrándonos muchisimo tiempo y trabajo.