Blog

Viewing posts for the category pdf

Créer un booklet avec PyPDF

Si il manque bien une fonctionnalité dans les logiciels libres de visualisation de PDF, c'est l'impression de livret (booklet). Acroread dispose de cette fonction fort utile lorsque l'on veux économiser du papier, imprimer un document en mode Booklet permet de diviser la consommation de papier par 4 et d'avoir un document pratique à utiliser.

La dernière fois que j'ai essayé la fonction booklet de Acroread, celui ci n'en a fait qu'a sa tête, il me retournait les feuilles dans tous les sens... Galère... J'ai donc développé un script Python nommé bookletizer.py qui s'appuie sur la bibliothèque PyPDF. Ce script permet de reclasser les pages dans l'ordre ad-hoc pour une impression en mode 2 page par feuille avec recto verso sur les bord courts.

PyPDF Manipuler des fichiers PDF avec Python

En faisant Bookletizer.py j'ai découvert la bibliothèque python PyPDF qui permet de manipuler des documents PDF via des scripts. Je vais décortiquer le script que j'ai créé pour ré-ordonner les pages en mode booklet.
# Import du module
import pyPdf

[...]
# ouverture du fichier PDF avec une execption
# différente en cas de pbm fichier (fichier 
# inexistant) ou pbm PDF (le fichier n'est
# pas un fichier PDF)
try:
    inputfile = pyPdf.PdfFileReader(file, "rb"))
    inputfile.numPages
except IOError:
    sys.exit("Input file error")
except pyPdf.utils.PdfReadError:
    sys.exit("Bad PDF file")
[...]

# Creation d'un simple fichier PDF vide (0 pages)
# qui va recevoir les pages dans l'ordre booklet 
output = pyPdf.PdfFileWriter()
[...]

# Ajout d'une page dans le le fichier output
#Ici c'est la page n° i de inputfile
 output.addPage(inputfile.getPage(i))

# Pour finir écrivons le fichier output
outputStream = file(options.outputfilename, "wb")
output.write(outputStream)
outputStream.close()

Avec cette librairie nous pouvons donc facilement tronquer, assembler, mélanger ou re-indexer des documents.