#!/bin/bash
# B. Mauclaire 2017, from an original script by sputnick 2012
# https://forum.ubuntu-fr.org/viewtopic.php?id=806571&p=2
# Découpe un pdf en double-page : rogne les 2 pages A5 d'une page A4 au format paysage

ebookdir=./ppmfiles

#-- Options du shell ;
shopt -s nocaseglob nullglob extglob
#- shopt -s c'est des réglages spéciaux du shell. Lance shopt seul, tu aura la liste.
#- nocaseglob c'est pour que ca matche indépendament de la casse des noms de fichiers.
#- nullglob c'est pour que si il n'y a pas de PDFs, ça réagissse correctement et que bash considère pas */*.pdf comme un fichier inexistant
#- extglob permet le !() à la fin : tout effacer sauf
#- prename sert à renommer en masse avec un regex : dans ce cas on substitue les espaces des noms de fichiers par des underscores. On peux utiliser la syntaxe perl ou la plus classique BRE somme sed


progrun() {
#-- Remplace les espaces par des "_" :
   #- Remplace les espaces par "_"
   #prename 's@\s@_@' "$@"

   f="$1"
   echo "Fichier à traiter : $f"
   actualdir=`pwd`

   #--- Traitement ddes noms de fichiers :
   file="${f// /_}"
   read filename dirname < <(sed -r 's@.*/((.*)\.pdf)$@\1 \2@i' <<< "$file")
   mkdir -p "$ebookdir/$dirname/"
   cp "$file"  "$ebookdir/$dirname/$filename" ; # cp was rm

   #--- Separe chaque page du pdf :
   cd "$ebookdir/$dirname/"
   pdftk "$filename" burst

   #--- Decoupe les 2 pages A5 contenues dans chaque page individuelle :
   for bursted in pg_[0-9][0-9][0-9][0-9].pdf; do
      pdfposter -p 2x1a4 "$bursted" "page${bursted#pg}"
   done

   #--- Rassemble chaque page pdf en un doucment unique :
   #mv "$filename" "${filename}.old"
   pdftk page*.pdf cat output "$filename"

   #--- Gestion des fichiers :
   rm !("$filename"|"${filename}.old")
   f_rootname=`basename -s .pdf "$f"`
   fout="${f_rootname}_split.pdf"

   #--- Convertie chaque page A4 en images ppm pour AMC :
   #-- Remarque : les images des figures du sujet seront aussi extraites.
   pdfimages "$filename" "${f_rootname}_p"

   #--- Petit menaage :
   mv "$filename" "$actualdir/$fout"
   #rm -rf "$actualdir/$ebookdir"
   echo "Fichier avec pages A5 séparées sauvé sous : $fout ; images PPM sauvées dans $ebookdir"
}

#--- Gestion des arguments :
case $# in
   1) progrun "$1" ;;
   *) echo "Synthaxe : pdfa4toa5.sh fichier_to_split.pdf" ;;
esac
