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

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

#!/bin/bash
# 011s02 pdftk - SCRIPT in grado di distinguere se la pagina è orizzontale o verticale, e commentarla di conseguenza mediante VARIABILI.
# Per avviare questo script, metterlo nella cartella in cui si trova il documento PDF da processare ed impartire il comando
# ./< nomeQuestoScript > < nomeDocPDFINIZIALE >
# Inizio acquisizione informazioni essenziali all'esecuzione dello script
PDFINIZIALE=${1}                            # Acquisizione nome del documento da processare
PDFFINALE=COMMENTATO-$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
#   Fine acquisizione informazioni essenziali all'esecuzione dello script
#   Inizio impostazione variabili essenziali per commentare l'ultima pagina del documento
ACAPO='\n'                    # Definisce la variabile contenente il comando "ANDARE A CAPO"
BLU='@color{0 0 1}'             # Definisce la variabile che imposta il colore BLU
ROSSO='@color{1 0 0}'           # Definisce la variabile che imposta il colore ROSSO
FONT1=@font{Times-Italic10}  # Definisce la variabile che imposta il primo font
FONT2=@font{Courier-Bold10}  # Definisce la variabile che imposta il secondo font
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
#   Fine impostazione variabili essenziali per commentare l'ultima pagina del documento
# Landscape+90=  -r --
# Landscape+270= -r --
# Portrait+0=    -r ++
# Portrait+180=  -r ++
# Portrait+90=   +r +-
# Portrait+270=  +r +-
# Landscape+0=   +r -+
# Landscape+180= +r -+
#   Inizio elaborazione variabili essenziali per determinare l'orientamento dell'ultimo foglio del documento
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
#   Fine elaborazione variabili essenziali per determinare l'orientamento dell'ultimo foglio del documento
#   Inizio elaborazione variabili essenziali per determinare l'orientamento del TESTO dell'ultimo foglio del documento
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
#   Fine elaborazione variabili essenziali per determinare l'orientamento del TESTO dell'ultimo foglio del documento
#   Inizio elaborazione variabili che definisono il testo del commento dell'ultimo foglio del documento 
echo Numero pagina: $PAG Orientamento testo: $TESTO Rotazione: $ROTAZIONE
echo Orientamento Foglio: $FOGLIO Formato: $FORMATO
RIGA1=$BLU$FONT1'Numero ultima pagina: '$PAG' Orientamento testo: '$TESTO' Rotazione: '$ROTAZIONE
RIGA2=$ROSSO$FONT1$FOGLIO' Formato: '$FORMATO
RIGA=$RIGA1$ACAPO$RIGA2
#   Fine elaborazione variabili che definisono il testo del commento dell'ultimo foglio del documento 
#   Inizio scrittura commento nell'ultimo foglio del documento
if (("$FO" == "$TE")); then # Verifica orientamento foglio e testo.
    echo -e $RIGA | 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.
# Se si vuol scrivere nella parte ALTA, rimuovere o reimpostare l'opzione --margins=18:18:790:15
else
  echo -e $RIGA | 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.
# Se si vuol scrivere nella parte ALTA, rimuovere o reimpostare l'opzione --margins=540:18:15:18
fi
#   Fine scrittura commento nell'ultimo foglio del documento
let PAG=PAG-1                             # Sottrae 1 alla variabile PAG
#   Inizio nidificazione istruzioni per commentare ogni ulteriore foglio del documento
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
#
#   Inizio impostazione variabili essenziali per commentare ogni ulteriore foglio del documento
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
#   Fine impostazione variabili essenziali per commentare ogni ulteriore foglio del documento
#   Inizio elaborazione variabili essenziali per determinare l'orientamento di ogni ulteriore foglio del documento
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
#   Fine elaborazione variabili essenziali per determinare l'orientamento di ogni ulteriore foglio del documento
#   Inizio elaborazione variabili essenziali per determinare l'orientamento del TESTO di ogni ulteriore foglio del documento
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
#   Fine elaborazione variabili essenziali per determinare l'orientamento del TESTO di ogni ulteriore foglio del documento
#   Inizio elaborazione variabili che definisono il testo del commento di ogni ulteriore foglio del documento 
echo Numero pagina: $PAG Orientamento testo: $TESTO Rotazione: $ROTAZIONE
echo Orientamento Foglio: $FOGLIO Formato: $FORMATO
RIGA1=$BLU$FONT1'Numero pagina: '$PAG' Orientamento testo: '$TESTO' Rotazione: '$ROTAZIONE
RIGA2=$ROSSO$FONT1$FOGLIO' Formato: '$FORMATO
RIGA=$RIGA1$ACAPO$RIGA2
#   Fine elaborazione variabili che definisono il testo del commento di ogni ulteriore foglio del documento 
#   Inizio scrittura commento di ogni ulteriore foglio del documento
if (("$FO" == "$TE")); then # Verifica orientamento foglio e testo.
    echo -e $RIGA | enscript --margins=18:18:790:15 -B -e@ -p - | ps2pdf - | pdftk commentare.pdf stamp - output commentata.pdf # Inserire due righe di commento, nella parte BASSA di un documento VERTICALE, usando colori e font.
# Se si vuol scrivere nella parte ALTA, rimuovere o reimpostare l'opzione --margins=18:18:790:15
else
  echo -e $RIGA | enscript --margins=540:18:15:18 -Br -e@ -p - | ps2pdf - | pdftk commentare.pdf stamp - output commentata.pdf # Inserire due righe di commento, nella parte BASSA di un documento ORIZZONTALE, usando colori e font.
# Se si vuol scrivere nella parte ALTA, rimuovere o reimpostare l'opzione --margins=540:18:15:18
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 (verificare)
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
#

# ALFA='Commento scritto su 2 righe'; ACAPO='\n'; BETA='unendo 3 variabili'; GAMMA='Parte non inserita in una variabile del '$ALFA$ACAPO$BETA; echo $GAMMA; echo -e $GAMMA | enscript -B -e@ -p - | ps2pdf - | pdftk Prova01.pdf stamp - output Prova01M-RigaCom.pdf # Commenta un documento usando delle variabili e applicando opzioni di default