jump to navigation

Creare un file pdf a partire da immagini jpeg 6 novembre 2007

Posted by fripp in Bash, Informatica, Scripting.
Tags: , , ,
trackback

Ritorno dall’assenza forzata (un fulmine ha scassato tutto ciò che di elettronico ho in casa) con qualcosa che mi è servita molto in questi ultimi tempi.

Ecco uno scriptino bash che permette di creare un “libricino” pdf a partire dai file jpeg contenuti nella working directory. Nello script ho fatto uso dell’utility di conversione delle immagini “convert”, che fa parte della suite software ImageMagick.

Ecco il codice:

#!/bin/sh

if [ $# -ne 1 ]
then
    name=`basename $0`
    echo "usage: $name output_filename.pdf"
    exit -1
fi 

pdffile=$1

#verifica l'esistenza del file pdf
#se esiste esce
if [[ -f $pdffile ]]
then
	echo "$pdffile esiste"
	exit -1
fi

#crea una directory temporanea
temp_dir_nome=$(mktemp -d)

#con questo ciclo for converto ciscuna immagine della dir corrente in pdf mediante il comando convert
#specifico che le pagine pdf dovranno esser in formato A4
for i in $(ls *.j*pg)
do
	var=${i//.j*pg/.pdf}
	echo "Converting $i --------> $var"
	convert -page A4+0+0 -density 72 $i $temp_dir_nome/$var
	if [[ -e $temp_dir_nome/$var ]]; then echo -e "$i converted\n\n";fi;
done

#Creo la string vuota input
input=""

#Con questo ciclo accodo alla stringa input i nomi dei file in pdf che formeranno il mio volumetto
for i in $(ls $temp_dir_nome/)
do
	input="$input $temp_dir_nome/$i"
done

echo -e "Merging pdf"

#Uso il GhostScript per creare il mio file pdf
eval gs -q -dBATCH -dSAFER -dMaxBitmap=500000000 \
-dNOPAUSE  -dAlignToPixels=0 -sDEVICE=pdfwrite \
-dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r72x72 \
-sOutputFile=$pdffile $input

rm -r $temp_dir_nome

Il file sorgente si trova qui.

Annunci

Commenti»

1. Antonio - 19 agosto 2008

Ottimo questo script! Segnalo che qui (ubuntu 8.04) scaricare il file e salvarlo sul disco non funziona, ma copiando e incollando il tutto su un file bianco e dando chmod, funziona tutto a meraviglia.

2. fripp - 20 agosto 2008

E` normale! Devi render eseguibile lo script prima di usarlo (oppure darlo in pasto “a mano” all’interprete bash)

3. Ordeal - 21 novembre 2008

Forse devi cambiare j*pg con jp*g

4. Fabio - 3 dicembre 2008

Script veramente comodo!
occhio solo ai nomi dei file, non devono contenere spazi.
grazie!!


Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: