010s03 pdftk – SCRIPT in grado di apporre il numero in basso al centro di ciascuna pagina, orizzontale o verticale.
26 Ottobre, 2022 (20:24) | Linux, pdftk | By: sargonsei
#!/bin/bash
# 010s03 pdftk – SCRIPT in grado di apporre il numero in basso al centro di ciascuna pagina, orizzontale o verticale.
# Provato su PDF formato A4 aventi dimensioni 595 x 841 pixels.
#
# Per avviare questo script, metterlo nella cartella in cui si trova il documento PDF da processare ed impartire il comando
# ./< nomeQuestoScript > < nomeDocPDFINIZIALE >
PDFINIZIALE=${1} # Acquisizione nome del documento da processare
PDFFINALE=NUMERATO-$PDFINIZIALE # Determina nome del documento numerato
PAG=`pdftk $PDFINIZIALE dump_data | grep NumberOfPages | cut -f 2 -d ' '` # Determina il numero di pagine del documento da numerare
pdftk $PDFINIZIALE cat $PAG output commentare.pdf # Crea il documento commentare.pdf contenente la pagina PAG del documento $PDFINIZIALE
ROTAZIONE=`pdftk commentare.pdf dump_data | grep PageMediaRotation | cut -f 2 -d ' '`
FORMATO=`pdftk commentare.pdf dump_data | grep PageMediaDimensions`
LARGH=`pdftk commentare.pdf dump_data | grep PageMediaDimensions | cut -f 2 -d ' ' | cut -f 1 -d '.'` # preleva il secondo campo preceduto da uno spazio fino a un punto
ALTEZZA=`pdftk commentare.pdf dump_data | grep PageMediaDimensions | cut -f 3 -d ' ' | cut -f 1 -d '.'` # preleva il terzo campo preceduto da uno spazio fino a un punto
# Landscape+90= -r --
# Landscape+270= -r --
# Portrait+0= -r ++
# Portrait+180= -r ++
# Portrait+90= +r +-
# Portrait+270= +r +-
# Landscape+0= +r -+
# Landscape+180= +r -+
#
if (("$LARGH" <= "$ALTEZZA")); then # Verifica se la larghezza è minore o uguale all'altezza.
FOGLIO="Il foglio del documento e' in formato Portrait (verticale)"
FO=+1
else
FOGLIO="Il foglio del documento e' in formato Landscape (orizzontale)"
FO=-1
fi
TESTO="Ignoto"
if (("$ROTAZIONE" == "270")); then # Verifica se la rotazione del testo è 90 gradi in senso antiorario.
TESTO="Il testo del documento e' ruotato di 90 gradi in senso antiorario"
TE=-1
elif (("$ROTAZIONE" == "180")); then # Verifica se il testo è capovolto.
TESTO="Il testo del documento e' capovolto"
TE=1
elif (("$ROTAZIONE" == "90")); then # Verifica se la rotazione del testo è 90 gradi in senso orario.
TESTO="Il testo del documento e' ruotato di 90 gradi in senso orario"
TE=-1
elif (("$ROTAZIONE" == "0")); then # Verifica se il testo è dritto.
TESTO="Il testo del documento e' dritto"
TE=1
fi
echo Numero pagina: $PAG Orientamento testo: $TESTO Rotazione: $ROTAZIONE
echo Orientamento Foglio: $FOGLIO Formato: $FORMATO
if (("$FO" == "$TE")); then # Verifica orientamento foglio e testo.
MARGINI="260:18:790:15 -B" # Inserisce il numero di pagina nella parte BASSA di un foglio VERTICALE A4
else
MARGINI="540:18:18:380 -Br" # Inserisce il numero di pagina nella parte BASSA di un foglio ORIZZONTALE A4
fi
echo -e '@color{0 0 1} @font{Courier-Bold12}Pag.'$PAG | enscript --margins=$MARGINI -e@ -p - | ps2pdf - | pdftk commentare.pdf stamp - output $PDFFINALE # Inserisce il numero di pagina nella parte BASSA di un foglio A4
let PAG=PAG-1 # Sottrae 1 alla variabile PAG
until [ $PAG -lt 1 ]; do # Se la variabile PAG è diversa da 1 esegue l'istruzione successiva, se PAG=1 salta all'istruzione done.
pdftk $PDFINIZIALE cat $PAG output commentare.pdf # Crea il documento commentare.pdf contenente la pagina PAG del documento $PDFINIZIALE
#
#
ROTAZIONE=`pdftk commentare.pdf dump_data | grep PageMediaRotation | cut -f 2 -d ' '`
FORMATO=`pdftk commentare.pdf dump_data | grep PageMediaDimensions`
LARGH=`pdftk commentare.pdf dump_data | grep PageMediaDimensions | cut -f 2 -d ' ' | cut -f 1 -d '.'` # preleva il secondo campo preceduto da uno spazio fino a un punto
ALTEZZA=`pdftk commentare.pdf dump_data | grep PageMediaDimensions | cut -f 3 -d ' ' | cut -f 1 -d '.'` # preleva il terzo campo preceduto da uno spazio fino a un punto
if (("$LARGH" <= "$ALTEZZA")); then # Verifica se la larghezza è minore o uguale all'altezza.
FOGLIO="Il foglio del documento e' in formato Portrait (verticale)"
FO=+1
else
FOGLIO="Il foglio del documento e' in formato Landscape (orizzontale)"
FO=-1
fi
TESTO="Ignoto"
if (("$ROTAZIONE" == "270")); then # Verifica se la rotazione del testo è 90 gradi in senso antiorario.
TESTO="Il testo del documento e' ruotato di 90 gradi in senso antiorario"
TE=-1
elif (("$ROTAZIONE" == "180")); then # Verifica se il testo è capovolto.
TESTO="Il testo del documento e' capovolto"
TE=1
elif (("$ROTAZIONE" == "90")); then # Verifica se la rotazione del testo è 90 gradi in senso orario.
TESTO="Il testo del documento e' ruotato di 90 gradi in senso orario"
TE=-1
elif (("$ROTAZIONE" == "0")); then # Verifica se il testo è dritto.
TESTO="Il testo del documento e' dritto"
TE=1
fi
echo Numero pagina: $PAG Orientamento testo: $TESTO Rotazione: $ROTAZIONE
echo Orientamento Foglio: $FOGLIO Formato: $FORMATO
if (("$FO" == "$TE")); then # Verifica orientamento foglio e testo.
MARGINI="260:18:790:15 -B" # Opzioni per inserire il numero di pagina nella parte BASSA di un foglio VERTICALE (X=595 Y=841)
else
MARGINI="540:18:18:380 -Br" # Opzioni per inserire il numero di pagina nella parte BASSA di un foglio ORIZZONTALE (X=841 Y=595)
fi
echo -e '@color{0 0 1} @font{Courier-Bold12}Pag.'$PAG | enscript --margins=$MARGINI -e@ -p - | ps2pdf - | pdftk commentare.pdf stamp - output commentata.pdf # Inserisce il numero di pagina nella parte BASSA di un foglio A4
pdftk A=commentata.pdf B=$PDFFINALE cat A B output temporaneo.pdf # Antepone l'ultima pagina commentata al documento $PDFFINALE nel documento temporaneo.pdf
mv temporaneo.pdf $PDFFINALE # Il documento temporaneo.pdf diventa il documento finale
echo Si comunica che la pagina $PAG è stata inserita in testa al documento $PDFFINALE
let PAG=PAG-1 # Sottrae 1 al contenuto della variabile PAG
done # Se la variabile PAG vale 1, prosegue da qui in avanti.
rm commentare.pdf # Cancella il documento PDF commentare.pdf
FILE=commentata.pdf
if test -f "$FILE"; then # Controlla se il documento commentata.pdf esiste
rm commentata.pdf # Cancella il documento PDF commentata.pdf
fi
exit # Fine dello script
#