Manipolare pdf

Su ragazzi lo script che segue necessita di documentazione e soprattutto di ampie correzioni. Possiamo dire che si tratta di una discreta partenza ... chi si vuole cimentare?

#!/bin/bash -x
 
#lo script presuppone l'installazione di pdftk
 
 
#Tipo di operazione
# 1 unisci nell'ordine di selezione n file pfd
# 2 estrai un certo n di pagine da un file pdf
# 3 prendi le pagine destre o le sinistre
# 4 prendi le destre di uno e le sinistre di un altro e mettile insieme intercalate
 
#conta il numero di pagine in un file ps
################################## accoda ########################################################
function accoda()
{
 
#seleziona il file pdf da aggiungere e crea la stringa da passare a pdftk
COUNTER=0
while (true) ; do
if [ -e /tmp/continua ] ; then rm -f /tmp/continua ; fi
if [ $COUNTER -gt 1 ] ; then zenity --question --text="vuoi aggiungere altri pdf?" ;
echo $? > /tmp/continua ;
if [ `cat /tmp/continua` -eq 1 ]; then
break ;
rm -f /tmp/continua :
fi
fi
 
miopdf=$miopdf" "`zenity --file-selection --title="Seleziona il file pdf da aggiungere"`
COUNTER=$(( COUNTER + 1))
 
done
#unisce e salva nome file
pdftk $miopdf cat output `zenity --file-selection --save --title="Salva il file che conterra i pdf uniti"`
}
##################################################################################################
 
############################# estrae pagine ######################################################
function estrai()
{
COUNTER=0
while (true) ; do
if [ -e /tmp/continua ] ; then rm -f /tmp/continua ; fi
if [ $COUNTER -gt 0 ] ; then zenity --question --text="vuoi aggiungere altri pdf?" ;
echo $? > /tmp/continua ;
if [ `cat /tmp/continua` -eq 1 ]; then
break ;
rm -f /tmp/continua :
fi
fi
echo $COUNTER | tr "0-9" "A-Z" >/tmp/mialettera
mialettera=`cat /tmp/mialettera`
miofile=`zenity --file-selection --title="Seleziona il file pdf "`
#npage=pdftk $miopdf dump_data |grep Pages |cut -f2 -d:
miopdf=$miopdf" "$mialettera"="$miofile
#messaggio="Il file selezionato è composto di "$npage". Inserisci l'intervallo di pagine da estrarre."
mioestrai=$mioestrai" "$mialettera`zenity --entry --text="Inserisci intervallo"`
 
 
 
COUNTER=$(( COUNTER + 1))
 
done
#unisce e salva nome file
miopdf=$miopdf" cat "$mioestrai
pdftk $miopdf output `zenity --file-selection --save --title="Salva il file che conterra i pdf uniti"`
}
 
#Split Select Pages from Multiple PDFs into a New Document
#pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf
 
 
 
###################################################################################################
 
############################# Intercala pagine destre da un file e pagine sinistre da altro file #
function intercala()
{
 
dx_file=`zenity --file-selection --title="Seleziona il file pdf che contiene le pagine pari (2 4 6) "`
sx_file=`zenity --file-selection --title="Seleziona il file pdf che contiene le pagine dispari (1 3 5) "`
pdftk $dx_file dump_data |grep Pages |cut -f2 -d" " >/tmp/pages && dx_npag=`cat /tmp/pages`
pdftk $sx_file dump_data |grep Pages |cut -f2 -d" " >/tmp/pages && sx_npag=`cat /tmp/pages` && rm -f /tmp/pages
 
if [ $dx_npag -gt $sx_npag ] ; then
 
miomax=$sx_npag
mioultimo=$dx_npag
ultimi="A"
`zenity --info --text="Attenzione il file con le pagine pari contiene più pagine di quello con le pagine dispari. Alla fine delle pagine dispari verranno inserite tutte le pagine pari"`
fi
 
if [ $dx_npag -lt $sx_npag ] ; then
 
miomax=$dx_npag
mioultimo=$sx_npag
ultimi="B"
`zenity --info --text="Attenzione il file con le pagine dispari contiene più pagine di quello con le pagine pari. Alla fine delle pagine pari verranno inserite tutte le pagine dispari"`
fi
 
if [ $dx_npag -eq $sx_npag ] ; then
miomax=$dx_npag
mioultimo=$dx_npag
ultimi=""
fi
 
echo $miomax
 
for i in `seq 1 "$miomax"`
do
concatena=$concatena" "B$i" "A$i
done
 
miomax=`expr $miomax + 1`
 
for i in `seq "$miomax" "$mioultimo"`
do
concatena=$concatena" "$ultimi$i
done
 
 
miastringa="A="$dx_file" B="$sx_file" cat "$concatena
 
pdftk $miastringa output `zenity --file-selection --save --title="Salva il file che conterra i pdf uniti"`
 
}
 
###################################################################################################
 
 
 
 
 
###################################################################################################
# Scelte del programma
###################################################################################################
 
scelte=`zenity --width=500 --height=300 --list --radiolist --column "" --column "Descrizione" TRUE "Accoda pdf" FALSE "Estrai pagine da file pdf" FALSE "Intercalare pag. dx da un file e pag. sx da un altro file." `
 
case $scelte in
 
"Accoda pdf" )
accoda ;;
 
"Estrai pagine da file pdf" )
estrai ;;
"Intercalare pag. dx da un file e pag. sx da un altro file." )
intercala ;;
"" )
exit ;;
 
esac