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
#