Uno dei motivi per cui mi piace Linux è che con la riga di comando ci si può veramente fare di tutto. Oggi vediamo come convertire immagini in PDF con un comando semplice e come inserire questo comando all’interno di uno script bash per poterlo richiamare quando serve. Il comando che useremo per convertire immagini in PDF è “convert”
Iniziamo… per convertire immagini in PDF il comando che useremo è convert e fa parte del pacchetto imagemagick che si installa su Ubuntu con il comando:
giuseppe@server:˜$ sudo apt-get install imagemagik
al termine dell’installazione è possibile convertire un file singolo inPDF con:
giuseppe@server:˜$ convert MiaImmagine.jpg MioFile.pdf
è possibile usare i caratteri jolly per poter convertire più immagini nello stesso file PDF:
giuseppe@server:˜$ convert Immagine*.jpg MioFile.pdf
e tramite il parametro -quality che accetta valori da 1 a 100 posso ridurre la qualità dell’immagine originale al 90%
giuseppe@server:˜$ convert Immagine.jpg -quality 90 MioFile.pdf
bene, ora che abbiamo visto come convertire immagini in PDF con il comando convert, possiamo inserirlo all’interno di uno script un po’ più complesso che chiameremo Converti.sh la cui sintassi sarà
giuseppe@server:˜$ ./Converti_in_pdf.sh /cartella_contenente_immagini/ [qualita]
e che useremo così:
giuseppe@server:˜$ ./Converti_in_pdf.sh /cartella_immagini 90
ecco il contenuto dello script:
#!/bin/bash TARGET_LOCATION="$1" QUALITY="$2" if [ "$1" = "" ] ; then echo "$0 /cartella_contenente_immagini/ [qualita] " echo "converte le immagini di una specifica cartella in pdf con qualità diverse" echo "[quality] - compreso tra 1 e 100, default è 100" exit fi if [ "$2" = "" ]; then QUALITY="100" fi find $TARGET_LOCATION -maxdepth 1 -type f > /tmp/tmpImgToPdf cat /tmp/tmpImgToPdf | \ while read FILENAME; do # echo "Convert_in_pdf '$FILENAME' -quality $QUALITY '$FILENAME.pdf'" BARENAME=$(echo "$FILENAME" | cut -d'.' -f1) EXTENSIONNAME=$(echo ${FILENAME: -4} | tr '[A-Z]' '[a-z]') if [[ $EXTENSIONNAME =~ jpg|png|pdf|tif ]]; then convert "$FILENAME" -quality $QUALITY "$BARENAME.pdf" fi done rm -f /tmp/tmpfile exit 0