011s01 pdftk – SCRIPT in grado di distinguere se la pagina è orizzontale o verticale, e commentarla di conseguenza.

13 Ottobre, 2022 (20:17) | Linux, pdftk | By: sargonsei

#!/bin/bash
# 011s01 pdftk - SCRIPT in grado di distinguere se la pagina è orizzontale o verticale, e commentarla di conseguenza.
# 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=FILIGRANATO-$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.
  pdftk commentare.pdf background FiligranaVERT.pdf output $PDFFINALE # Inserire filigrana VERTICALE

    mv $PDFFINALE commentare.pdf           # Il documento $PDFFINALE diventa il documento commentare.pdf
  echo -e '@color{0 0 1} @font{Courier-Bold12}Commento per fogli VERTICALI,\n@color{0 1 0} @font{Times-Italic12}quando sono visualizzati VERTICALI + quando sono visualizzati VERTICALI + quando sono visualizzati VERTICALI' | enscript --margins=18:18:790:15 -B -e@ -p - | ps2pdf - | pdftk commentare.pdf stamp - output $PDFFINALE # Inserire due righe di commento, nella parte BASSA di un documento VERTICALE, usando colori e font diversi.
else
  pdftk commentare.pdf background FiligranaORIZ.pdf output $PDFFINALE # Inserire filigrana ORIZZONTALE

    mv $PDFFINALE commentare.pdf           # Il documento $PDFFINALE diventa il documento commentare.pdf
  echo -e '@color{0 0 1} @font{Courier-Bold12}Commento per fogli ORIZZONTALI,\n@color{0 1 0} @font{Times-Italic12}quando sono visualizzati ORIZZONTALI + quando sono visualizzati ORIZZONTALI + quando sono visualizzati ORIZZONTALI + quando sono visualizzati ORIZZONTALI' | enscript --margins=540:18:15:18 -Br -e@ -p - | ps2pdf - | pdftk commentare.pdf stamp - output $PDFFINALE # Inserire due righe di commento, nella parte BASSA di un documento ORIZZONTALE, usando colori e font diversi.
fi
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.
  pdftk commentare.pdf background FiligranaVERT.pdf output commentata.pdf # Inserire filigrana VERTICALE

    mv commentata.pdf commentare.pdf           # Il documento $PDFFINALE diventa il documento commentare.pdf
    echo -e '@color{0 0 1} @font{Courier-Bold12}Commento per fogli VERTICALI,\n@color{0 1 0} @font{Times-Italic22}quando sono visualizzati VERTICALI + quando sono visualizzati VERTICALI + quando sono visualizzati VERTICALI' | enscript -B -e@ -p - | ps2pdf - | pdftk commentare.pdf stamp - output commentata.pdf # Inserire due righe di commento, nella parte ALTA di un documento VERTICALE, usando colori e font diversi.
else
  pdftk commentare.pdf background FiligranaORIZ.pdf output commentata.pdf # Inserire filigrana ORIZZONTALE

    mv commentata.pdf commentare.pdf           # Il documento $PDFFINALE diventa il documento commentare.pdf

    echo -e '@color{0 0 1} @font{Courier-Bold12}Commento per fogli ORIZZONTALI,\n@color{0 1 0} @font{Times-Italic24}quando sono visualizzati ORIZZONTALI + quando sono visualizzati ORIZZONTALI + quando sono visualizzati ORIZZONTALI + quando sono visualizzati ORIZZONTALI' | enscript -Br -e@ -p - | ps2pdf - | pdftk commentare.pdf stamp - output commentata.pdf # Inserire due righe di commento, nella parte ALTA di un documento ORIZZONTALE, usando colori e font diversi.
fi
    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
#