Drumlin

Au menu : Slackware/Truevision, administration des systèmes libres, python, blender, photos et sans doute quelques humeurs...

To content | To menu | To search

19Sep 2011

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.

19Sep 2011

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.

Téléchargez Bookletizer.py

Pour l'utiliser vous devez disposer de python et installer la librairie python PyPDF. Par exemple, si vous êtes sous Linux Debian ou Ubuntu, installez juste le paquetage python-pypdf

tletou@ankh:~# sudo aptitude install python-pypdf

Vous pouvez également vous servir de easy_install

tletou@ankh:~# sudo  easy_install PyPDF

Le script reçoit deux paramètres qui sont le fichier d'entrée (-i PDF_FILE ) et le fichier de sortie (-o PDF_FILE).

aquarius ~/ > ./bookletizer.py -i blenderbpy.pdf -o blenderbpy-booklet.pdf 
('Adding ', 2, ' blanks pages')
Please print this document 2-sheets per page with duplex on shorts edges - bookletizer.py

Téléchargez Bookletizer.py

N'hésitez pas a me rapporter tout problème rencontré lors de son utilisation.

23Aug 2011

Eclipse et l'API Python Blender (bpy)

Ce n'est que lorsque je me suis décidé à développer un script qui parcourait le module BPY de Blender 2.5 que je suis tombé sur un post de NFloyd sur Blender Artists.

Celui-ci a adapter un script dédié à la génération de la documentation pour extraire des predefs. Une fois ces fichiers générés, il suffit des les signaler à PyDev pour pouvoir profiter des fonctionnalités Eclipse/PyDev pour développer des scripts Blender.

26Jan 2011

Installer Ubuntu Lucid et dmraid

Sur plusieurs machines, lors de l'étape disk-detect de l'installation de Ubuntu Lucid (10.04LTS) tout les disques n'étaient pas détectés. La faute à DMRAID qui lors de la détection des disques avait trouvé des anciens tags sur des disques qui ont étés en RAID à un moment ou un autre de leurs tristes vies (oui c'est pas joyeux la vie d'un disque).

Dans la console (Ctrl + Alt + F4 ) on se retrouve avec des messages comme ça :

disk-detect: either the required RAID set not found or more options required
disk-detect: ERROR:
disk-detect: ddf1: wrong # of device in RAID set "ddf1_500Go" [1/2] on /dev/sda
disk-detect: no raid sets and with names: ".ddf1_disks"

J'ai tenté sans réussite de faire sauter les tags raid avec l'outils dmraid. Dans mes denier retranchement j'ai été forcé d'utiliser la manière forte. Passer sur une console et retirer les droits d'execution sur les binaires dmraid. Dans une console lors de l'installation (Ctrl + Alt + F2 ) :

chmod -x /sbin/dmraid
chmod -x /sbin/dmraid-detect

Ensuite, il faut relancer la détection des disques dans debian-installer (avec dmraid "désactivé" et notre disque apparait de nouveau avec ses partitions.

Toutefois les partitions apparaissent comme sans formatage et leurs utilisations va contraindre a la formater ! Il convient donc avec cette méthode de formater que la partition / et de revoir la table de montage (fstab) plus tard...

C'est moche mais ça marche...

01Dec 2009

Ubuntu: Désactivation de NetworkManager

Une petite modification pour se séparer de NetworkManager qui est bien utile lors d'une utilisation mobile de Linux mais qui peut très vite devenir une plaie dans d'autre cas. J'ai constaté de nombreuses stations qui perdaient le réseau subitement (Ubuntu 8.04LTS) et aussi beaucoup de problèmes lors de laconfiguratiion d'une interface bridge pour kvm... Bref mort relative à NetworkManager!

echo "exit" > /etc/default/NetworkManager

echo "exit" > /etc/default/NetworkManagerDispatcher

Voila!

06Feb 2009

Refonte de Drumlin sur DotClear2 !

Voici le nouveau site drumlin.tuxfamily.org ! Drumlin est maintenant propulsé par DotClear 2. Je vais commencer à migrer les anciennes données du précédent site sur DC. A bientôt.

25Aug 2007

Doc CUPS/OpenLDAP/Pykota

Etude sur la mise en place d'un serveur d' impression Linux avec une gestion des quotas via Pykota et une gestion utilisateur OpenLDAP.

23Feb 2007

Présentation CRIIUT 2006 (Metz) - Démarrage de Linux Debian par le réseau NFSROOT

Cette présentation explique la méthode utilisée á l'IUT de Caen (Campus 3) pour le déploiement de Linux Debian. Thèmes abordés : nfsroot, pxe, grub, dhcp