itaeng

Ottimizzare la dimensione dei PDF su linux, con un solo click

In questi giorni avevo necessità di creare uno script che mi permettesse di ottimizzare i PDF generati dal mio scanner, per ridurne le dimensioni. Inoltre, volevo poter lanciare lo script direttamente da nautilus tramite un click destro sul file.

Dopo aver vagato inutilmente per il web ho deciso di crearne uno da zero :)

Prima di tutto, ho creato un file chiamato optimizePDF.sh:

#!/bin/bash

for file in "$@"; do
  echo "Processing $file";
  gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -sOutputFile=/tmp/tempfile.pdf "$file";
  if [ $? -eq 0 ]; then
    mv /tmp/tempfile.pdf "$file";
    zenity --info --text 'File converted successfully!'
  else
    rm /tmp/tempfile.pdf
    zenity --error --text 'Error during conversion! The original file has not been modified. Sorry!'
  fi
done

Ciò che fa è semplice: nei parametri con cui lancio lo script passo il nome del file (o i nomi, se è più di un file), lui lo "passa" a ghostscript (gs) e tramite un'accurata scelta di parametri lo comprime, preservando comunque una buona qualità.

Una volta creato il file l'ho spostato in /usr/bin, in modo tale da renderlo raggiungibile da tutti gli utenti:

sudo mv optimizePDF.sh /usr/bin

Volendo è già possibile utilizzare lo script lanciandolo a mano:

$ optimizePDF.sh /path/del/file.pdf

Però io avevo necessità di lanciarlo direttamente da nautilus, così ho creato (tramite Nautilus-Actions Configuration Tool, che a voi non servirà) il pulsante da infilare nel menu contestuale (quello che compare con il click destro del mouse selezionando uno o più file PDF). Per questa funzionalità sarà sufficiente scaricare questo file ed importarlo tramite il comando

gconftool-2 --load action-2e093541-6845-426b-836b-a05d9bffcd8d.xml

Et voilà! Facile no? :)