pdfa4toa5ppm.sh

Benjamin Gillet, 05/13/2017 04:25 pm

Download (2.3 kB)

 
1
#!/bin/bash
2
# B. Mauclaire 2017, from an original script by sputnick 2012
3
# https://forum.ubuntu-fr.org/viewtopic.php?id=806571&p=2
4
# Découpe un pdf en double-page : rogne les 2 pages A5 d'une page A4 au format paysage
5
6
ebookdir=./ppmfiles
7
8
#-- Options du shell ;
9
shopt -s nocaseglob nullglob extglob
10
#- shopt -s c'est des réglages spéciaux du shell. Lance shopt seul, tu aura la liste.
11
#- nocaseglob c'est pour que ca matche indépendament de la casse des noms de fichiers.
12
#- 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
13
#- extglob permet le !() à la fin : tout effacer sauf
14
#- 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
15
16
17
progrun() {
18
#-- Remplace les espaces par des "_" :
19
   #- Remplace les espaces par "_"
20
   #prename 's@\s@_@' "$@"
21
22
   f="$1"
23
   echo "Fichier à traiter : $f"
24
   actualdir=`pwd`
25
26
   #--- Traitement ddes noms de fichiers :
27
   file="${f// /_}"
28
   read filename dirname < <(sed -r 's@.*/((.*)\.pdf)$@\1 \2@i' <<< "$file")
29
   mkdir -p "$ebookdir/$dirname/"
30
   cp "$file"  "$ebookdir/$dirname/$filename" ; # cp was rm
31
32
   #--- Separe chaque page du pdf :
33
   cd "$ebookdir/$dirname/"
34
   pdftk "$filename" burst
35
36
   #--- Decoupe les 2 pages A5 contenues dans chaque page individuelle :
37
   for bursted in pg_[0-9][0-9][0-9][0-9].pdf; do
38
      pdfposter -p 2x1a4 "$bursted" "page${bursted#pg}"
39
   done
40
41
   #--- Rassemble chaque page pdf en un doucment unique :
42
   #mv "$filename" "${filename}.old"
43
   pdftk page*.pdf cat output "$filename"
44
45
   #--- Gestion des fichiers :
46
   rm !("$filename"|"${filename}.old")
47
   f_rootname=`basename -s .pdf "$f"`
48
   fout="${f_rootname}_split.pdf"
49
50
   #--- Convertie chaque page A4 en images ppm pour AMC :
51
   #-- Remarque : les images des figures du sujet seront aussi extraites.
52
   pdfimages "$filename" "${f_rootname}_p"
53
54
   #--- Petit menaage :
55
   mv "$filename" "$actualdir/$fout"
56
   #rm -rf "$actualdir/$ebookdir"
57
   echo "Fichier avec pages A5 séparées sauvé sous : $fout ; images PPM sauvées dans $ebookdir"
58
}
59
60
#--- Gestion des arguments :
61
case $# in
62
   1) progrun "$1" ;;
63
   *) echo "Synthaxe : pdfa4toa5.sh fichier_to_split.pdf" ;;
64
esac