Merger deux PDF en alternant les pages

J'ai récemment commencé à m'intéresser à ce qu'il faut pour numériser mes vieux cours. Ils prennent une place qui me semble bien trop grande par rapport à ce que j'en fait (c'est à dire... rien), et puis je me dis que c'est peut-être un coup d'essai pour plus tard faire de même avec ma comptabilité et les factures.

On dispose de tout un tas d'imprimantes au boulot, une d'elle disposant d'un scanner avec un tiroir, pratique pour les photocopies. Du coup ce midi j'ai commencé à scanner un lot de cours sur les réseaux de neurones qui date de 2007. La photocopieuse sort les numérisations dans un format PDF, mais le problème c'est qu'elle ne scanne pas en recto-verso; je me suis donc retrouvé avec deux gros PDFs, l'un contenant les pages recto et l'autre les pages verso.

Je me suis donc tourné vers pdftk, qui permet de faire tout un tas d'opérations sur les PDF.

Il ne dispose pas nativement d'un mode de merge "mixé", du coup il faut le feinter.

Donc en gros il faut:

  1. Extraire de chaque PDF toutes les pages (à l'aide de pdftk), en les nommant correctement; j'ai choisi "Recto_XXX.pdf" et "Verso_XXX.pdf".
    La commande est assez simple: pdftk fichier_recto.pdf output "Recto_%04d.pdf", pareil pour les versos.
  2. Préparer la ligne de commande à passer à pdftk en usant, pour ma part, d'un script en python3.

J'ai encore une fois été bluffé par la facilité avec laquelle on peut obtenir un truc extrêmement potable avec Python.

Le script en question:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#!/bin/env python3
import os
import blob

recto = sorted(glog.glob("Recto_*.pdf"))
verso = sorted(glog.glob("Verso_*.pdf"))

command = "pdftk "

for i in range( len(recto) ):
    command.append(recto[i] + " ")
    command.append(verso[i] + " ")

command += " cat output Merged.pdf"
print( command )
os.system( command )

blogroll