miércoles, 22 de agosto de 2012

Reduciendo tamaño de PDFs con UBUNTU

Hoy se me presentó una situación en la que debía compartir con varias personas unos cuantos archivos PDF a través de Google Drive.

El detalle estaba en que cada archivo pesaba en promedio 250 Mb porque se encontraban en alta resolución. Sin embargo, para mis propósitos bastaba con que se leyera correctamente la información y se mostraran bien las imágenes.

Además, necesitaba poder colocar una marca de agua en todas las páginas de los archivos PDF. Por supuesto que no era una opción abrir los archivos y agregar en cada página una marca de agua.

Entonces, utilicé el comando GS (acrónimo de "Ghost Script") que es un programa muy poderoso para tareas de impresión en Linux.

El caso que voy a ilustrar, se trataba de  un archivo PDF que pesaba 262.2 Mb y luego de utilizar el comando y aplicarle una marca de agua a todas las páginas el tamaño final del archivo fué de 14.2 Mb!!!

Esto fué lo que hice:

  1. Instalé los programas necesarios desde la cónsola:
    # sudo aptitude install cups-pdf ghostscript
  2. Ejecuté el comando "gs" con los parámetros apropiados:
    # gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=Reducido.pdf Grande.pdf
  3. Utilicé el programa "JPDF Tweak 1.1" para aplicar la marca de agua a todas las páginas de cada archivo PDF
  4. Voilá! ... el resultado fué un archivo llamado "Reducido.pdf" cuyo tamaño fué de 14.2 Mb!
Con este procedimiento, ahora puedo disminuir el tamaño de cualquier archivo PDF.

Pero luego se me presentó la necesidad de procesar varios archivos. Entonces, decidí crear un script bash para ser ejecutado desde la cónsola.

Ubicado dentro del directorio que contenía todos los archivos PDF que quería procesar, estos fueron los pasos que seguí:

1. Crear el directorio "salida" para guardar los PDFs resultantes:
$mkdir salida

2. Crear y editar el archivo SimplificarPDFS.sh, incluyendo las siguientes líneas:
$vim SimplificarPDFS.sh

 #!/bin/bash  
 FILES="*.pdf"  
 for f in $FILES  
 do  
  echo "Procesando el archivo $f ..."  
  gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=./salida/$f $f  
  echo "Finalizando procesamiento del archivo $f ..."  
 done  

3. Aplicar permiso de ejecución:
chmod +x SimplificarPDFS.sh

4. Para ejecutar el script:
./SimplificarPDFS.sh

Todos los archivos simplificados serán almacenados en el directorio "salida".

Espero sea de utilidad.

Éxitos!

REFERENCIAS

  1. http://www.ubuntugeek.com/ubuntu-tiphowto-reduce-adobe-acrobat-file-size-from-command-line.html
  2. http://reformedmusings.wordpress.com/2011/02/12/reducing-pdf-file-sizes-in-linux/
  3. http://jpdftweak.sourceforge.net/

3 comentarios:

ajtorres dijo...

Excelente!!!..muy buen dato ;-)

moltisanti dijo...

que bueno!! lo probaré.

Anónimo dijo...

Interesante, gracias - Encontre esta web interesante sobre linux - Administracion instalar linux