[Soci SLIP] fondere files pdf

Domenico Odetti domenico a studiobertolotto.org
Mer 19 Nov 2008 11:26:14 CET


Davide Corio ha scritto:
> So che qui ci sono i massimi esperti in materia.
>
> Ho due pdf, uno con le pagine pari di un libro e l'altro con le pagine
> dispari.
>
> Sapete come creare un pdf unico alternando le pagine?
>   
Allego lo script...
ciao
do

via Agnelli, 5 - 10064 Pinerolo
Tel. e Fax 0121.794803



-------------- parte successiva --------------
#!/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." FALSE "Prende un pdf e lo converte in ps" FALSE "Prende un pdf e lo converte  prima in ps e poi nuovamente in pdf"`

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 ;;

"Prende un pdf e lo converte in ps" )
	pdf2ps `zenity --file-selection --title="Seleziona il pdf"` ;;

"Prende un pdf e lo converte  prima in ps e poi nuovamente in pdf" )
	miopdf=`zenity --file-selection --title="Seleziona il pdf"`
	pdftops $miopdf
	miops=`echo "$miopdf" |cut -d. -f1`
	pstopdf $miops\.ps
	rm -f $miops\.ps

;;	
"" ) 
        exit ;;

esac
                


Maggiori informazioni sulla lista Soci