viernes, 10 de abril de 2015

Comprimir archivos PDF desde tu Mac con la terminal

Después de probar una infinidad de programas de escritorio para comprimir archivos PDF y en su mayoría de pago, ninguno me convencía o cumplía con mis necesidades, así que llegué a la siguiente solución; utilizar Ghostscript para comprimir archivos PDF muy pesados.

Y...  ¿Qué es Ghostscript?

Ghostscript es un interprete de PostScript, archivos PDF y una librería de gráficos, disponible bajo la licencia de GNU GPL Affero license la cual nos permite usarla sin costo alguno.

Para instalar Ghostscript en Mac es muy simple, la instalación se puede realizar utilizando el instalador de paquetes Homebrew, para esto abrimos una terminal y escribimos el siguiente comando:

brew install ghostscript

Una vez instalado Ghostscript ya es posible comprimir archivos PDF, ahora escribimos en la terminal:

gs -sDEVICE=pdfwrite -dNOPAUSE -dQUIET -dBATCH -dPDFSETTINGS=/screen -dCompatibilityLevel=1.1 -sOutputFile=miarchivocomprimido.pdf miarchivooriginal.pdf

Dependiendo del tamaño del archivo PDF original, este proceso puede demorar algunos segundos o minutos, una vez termine, como resultado tendremos un archivo PDF comprimido y con calidad de impresión para la web.

Listo! pero... recordar un comando con tantos parámetros puede ser algo difícil y poco productivo, para automatizar este proceso lo recomendable es generar una función que pueda hacer esta tarea mucho más fácil, para generar la función abrimos la terminal y editamos el archivo ~/.bash_profile, para esto escribimos:

sudo vi ~/.bash_profile

Una vez en modo edición, hasta el final del contenido del archivo, creamos la función comprimepdf() de la siguiente manera:

comprimepdf(){
      gs -sDEVICE=pdfwrite -dNOPAUSE -dQUIET -dBATCH -dPDFSETTINGS=/${3:-"screen"} -dCompatibilityLevel=1.1 -sOutputFile=$2 $1}

Ahora, para probar que la función esta trabajando de forma correcta, salimos del mode edición del archivo ~/.bash_profile y escribimos en la terminal el siguiente comando para poder recargar el shell y tener disponible la función.

source ~/.bash_profile 

Ahora si! ejecutamos la función:

comprimepdf mi-archivo-original.pdf mi-archivo-comprimido.pdf