Ajouter une page blanche à un PDF seulement si le nombre de pages est impair

C’est la sai­son des exa­m­ens et devoirs divers, dont cer­tains à faire chez soi et à envoy­er en ver­sion élec­tron­ique.

Pour les cor­rec­tions, il est tou­jours mieux d’im­primer. Mais il peut être long d’im­primer un à un plus d’une cen­taine de fichiers de 3 ou 4 pages cha­cun.

La solu­tion est d’en­reg­istr­er tous ces fichiers dans un même réper­toire et de les fusion­ner (con­catén­er) en un seul fichi­er qui sera imprimé.

Pour cela, sous Lin­ux, il y a pdftk et la com­mande suiv­ante qui rassem­ble en un seul tous les fichiers pdf du réper­toire dans lequel elle est exé­cutée.

pdftk *.pdf cat output tout_en_un_fichier.pdf

Oui, mais si les fichiers en ques­tion n’ont pas tous un nom­bre de pages pair, on se retrou­ve à l’im­pres­sion avec la page 1 du devoir n+1 au ver­so de la page 1 ou 3 ou 5 du devoir n. Une fois imprimés, les devoirs ne sont plus indi­vid­u­al­isés, sauf bien sûr à imprimer seule­ment au rec­to des feuilles, mais ce serait un gros gaspillage de papi­er.

La solu­tion est fournie ici par gigiair : un script bash per­me­t­tant d’a­jouter une page blanche à la fin d’un pdf si et seule­ment si ce pdf a un nom­bre de pages impair. Je recopie le script:

#!/bin/bash
# ------------------------------------------------------------------
# Author: gigiair@forum.ubuntu-fr.com
# Version: $Id: pdfpair ,v 0.0 2015/02/12 07:32:51 debjjr Exp
# Title pdfpair
# Description : Insère une page vierge à tous les fichiers pdf dont le nombre de pages est impair
# Vérifie l'existence d'une page blanche dans le répertoire courant
# sinon en crée une à condition que TeXLive soit présent sur l'installation
# Pas d'analyse d'erreur si ces conditions ne sont pas remplies !
# ------------------------------------------------------------------

USAGE=“pdfpair .pdf”
FICH=$1

# — Body ——————————————————–

# Véri­fi­ca­tion de l’ex­is­tence d’une page blanche sinon
# Con­fec­tion d’une page A4 blanche

if [ ‑e “/home/$USER/pageblanche.pdf” ]
then PAGEBLANCHE=”/home/$USER/pageblanche.pdf”
else
if [ ! ‑e “/tmp/pageblanche.pdf” ]
then
TEX=”$(which pdf­tex) ‑out­put-direc­to­ry /tmp –inter­ac­tion non­stop­mode ‑job­name page­blanche ;
echo “\\pdf­pagewidth 210mm\\pdfpageheight 297mm\\strut\\bye”|$TEX
fi
PAGEBLANCHE=”/tmp/pageblanche.pdf”
fi

#Récupéra­tion du nom­bre de pages
PDFINFO=$(which pdfin­fo)

NBPAGES=$($PDFINFO “$FICH” |awk ‘/Pages:/ {print $2}’)

if [ $((NBPAGES%2)) == 1 ]
then pdftk “$FICH” “$PAGEBLANCHE” out­put “/tmp/$FICH”
cp “/tmp/$FICH” .
fi

# —————————————————————–

Il n’y a plus qu’à lancer le script sur les fichiers du réper­toire à traiter

for f in *.pdf; do pdfpair "$f" ;done

puis la com­mande pdftk déjà présen­tée ci-dessus:

pdftk *.pdf cat output tout_en_un_fichier.pdf

Un script très utile. Mer­ci à son auteur.

Ce contenu a été publié dans Informatique, logiciels libres, avec comme mot(s)-clé(s) , , . Vous pouvez le mettre en favoris avec ce permalien.