[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