web-dev-qa-db-fra.com

Imprimer sur une imprimante standard à partir de Python?

Existe-t-il un moyen raisonnablement standard et multiplateforme d'imprimer du texte (ou même PS/PDF) sur l'imprimante définie par le système?

En supposant CPython ici, pas quelque chose d'intelligent comme utiliser Jython et API d'impression Java .

26
Prof. Falken

Malheureusement, il n'existe aucun moyen standard d'imprimer en utilisant Python sur toutes les plates-formes. Vous devrez donc écrire votre propre fonction wrapper pour imprimer.

Vous devez détecter le système d'exploitation votre programme fonctionne, puis:

Pour Linux -

import subprocess
lpr =  subprocess.Popen("/usr/bin/lpr", stdin=subprocess.PIPE)
lpr.stdin.write(your_data_here)

Pour Windows: http://timgolden.me.uk/python/win32_how_do_i/print.html

Davantage de ressources:

Imprimer PDF avec le module win32print de python?

Comment imprimer sur l'imprimante par défaut du système d'exploitation dans Python 3 (multiplateforme)?

24
Anuj Gupta

Cela n'a été testé que sur Windows:

Vous pouvez effectuer les opérations suivantes:

import os

os.startfile("C:/Users/TestFile.txt", "print")

Cela démarrera le fichier, dans son ouvreur par défaut, avec le verbe 'print', qui s'imprimera sur votre imprimante par défaut. Requiert uniquement le module os fourni avec la bibliothèque standard

23
user3444876

Pour imprimer sur n'importe quelle imprimante du réseau, vous pouvez envoyer un travail d'impression PJL/PCL directement à une imprimante réseau sur le port 9100.

Veuillez consulter le lien ci-dessous qui devrait donner un bon départ:

http://frank.zinepal.com/printing-directly-to-a-network-printer

De plus, s'il existe un moyen d'appeler Windows cmd, vous pouvez utiliser FTP put pour imprimer votre page sur 9100. Le lien ci-dessous devrait vous donner des détails, j'ai utilisé cette méthode pour les imprimantes HP mais je crois que cela fonctionnera pour d'autres imprimantes.

http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=bpj06165

5
user1719655

Vous pouvez essayer la bibliothèque wx. Il s'agit d'une bibliothèque d'interface utilisateur multiplateforme. Ici vous pouvez trouver le tutoriel d'impression: http://wiki.wxpython.org/Printing

2
Admdebian