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
|