pdfa4toa5.sh

Benjamin Gillet, 05/10/2017 03:51 pm

Download (1.8 kB)

 
1
#!/bin/bash
2
# B. Mauclaire, Inspired of a script bysputnick 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=./ebooks
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
24
   echo "Fichier à traiter : $f"
25
   actualdir=`pwd`
26
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
   cd "$ebookdir/$dirname/"
32
   pdftk "$filename" burst
33
34
   for bursted in pg_[0-9][0-9][0-9][0-9].pdf; do
35
      pdfposter -p 2x1a4 "$bursted" "page${bursted#pg}"
36
   done
37
38
   #mv "$filename" "${filename}.old"
39
   pdftk page*.pdf cat output "$filename"
40
   rm !("$filename"|"${filename}.old")
41
   f_rootname=`basename -s .pdf "$f"`
42
   fout="${f_rootname}_split.pdf"
43
   mv "$filename" "$actualdir/$fout"
44
   rm -rf "$actualdir/$ebookdir"
45
   echo "Fichier avec pages A5 séparées sauvé sous : $fout"
46
}
47
48
#--- Gestion des arguments :
49
case $# in
50
   1) progrun "$1" ;;
51
   *) echo "Synthaxe : pdfa4toa5.sh fichier_to_split.pdf" ;;
52
esac