MagPI 12 Page 18

De Le French MagPi
Aller à : Navigation, rechercher

2 - Impression à partir de Python

DIFFICULTÉ : INTERMÉDIAIRE

Le mois dernier, nous avons ajouté CUPS au Raspberry Pi. Maintenant que nous avons notre imprimante installée et fonctionnelle, nous pouvons chercher à imprimer depuis nos propres applications. Nous utiliserons le langage de programmation Python mais nous jetterons aussi un oeil à l'impression en ligne de commande qui peut aussi être utilisée depuis d'autres langages.


Pour commencer, nous allons voir l'impression en ligne de commande. Cela peut être utile dans des scripts shell ou dans d'autres langages grâce à un appel système. Les commandes à utiliser sont lp et lpr. Leurs noms sont une abréviation de line-printer, bien qu'elles soient rarement utilisées pour imprimer sur une véritable imprimante ligne par ligne de nos jours. Les 2 commandes fonctionnent de manières similaires mais ont des options différentes. C'est un héritage des premiers jours d'UNIX. Toutes deux sont disponibles sous Linux, vous pouvez utiliser l'une ou l'autre.


La commande pour imprimer un fichier sur l'imprimante par défaut est :

lp <nomdufichier>

Une autre imprimante ou une certaine page peuvent être choisies grâce à différentes options. Les détails sont sur :

http://www.cups.org/documentation.php/options.htm 

ou sur l'aide de votre propre page de configuration CUPS vue dans l'article précédent.


Contrairement aux commandes originales qui ne géraient que des fichiers texte, les versions CUPS de lp et lpr peuvent traiter d'autres formats. CUPS effectue la conversion grâce aux pilotes d'impression lorsque les commandes sont utilisées avec des fichiers PDF, postscript ou des images. Nous verrons cette fonctionnalité plus tard pour imprimer un PDF depuis un script Python.


Dans certains langages et toolkits (voir encadré), il est possible de générer des sorties sur imprimante grâce à des instructions similaires à celles pour générer des graphiques sur l'écran. C'est le cas de PyGTK, PyQT et WxPython ; mais alors que les toolkits GTK et Qt sont généralement utilisés avec d'autres langages, ils sont de moins en moins documentés sur Python. WxPython peut être utile si vous utilisez déjà le toolkit Wx, mais le toolkit le plus répandu sur Python est Tkinter, mais son support de l'impression est très limité.

toolkit
Un toolkit fournit un ensemble défini de boutons, cadres et 
autres composants pour faciliter la création d'applications 
graphiques avec des interfaces cohérentes. Certains disposent 
de bibliothèques additionnelles pour l'impression qui rendent 
simple la conversion de la sortie écran graphique vers un 
format prêt pour l'impression. 

Au lieu d'employer le support d'un toolkit, j'ai choisi de générer un fichier pdf avec xhtml2pdf ; il sera envoyé à l'imprimante via une bibliothèque CUPS appelée PyCups. C'est simple à faire et a l'avantage de ne pas nécessiter d'environnement graphique, il est donc possible de le faire depuis un programme en ligne de commande ou un daemon qui tourne en arrière-plan.



Il faut d'abord installer quelques paquets supplémentaires. La bibliothèque python-cups contient le module qui permet à Python de communiquer avec les imprimantes CUPS, python-pip simplifiera l'installation d'xhtml2pdf et les bibliothèques python-dev sont nécessaires pour que pip puisse installer certaines des bibliothèques utilisées par

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils