2012-10-04 51 views
21

Esiste un modo piattaforma ragionevolmente normale e cross per stampare il testo (o anche PS/PDF) per la stampante del sistema definito?Stampa su stampante standard da Python?

Assumendo CPython qui, non qualcosa di intelligente come usare Jython e lo Java printing API.

+0

Qual è il tuo tipo di stampante? Ecco un tutorial sulla stampa su stampanti POS http://goo.gl/rd8lm – Switch

+0

Supponendo che la stampa Java possa fare questa soluzione "intelligente" è JPype (un modo per ottenere cpython e jvm per comunicare/eseguire codice l'uno sull'altro) –

risposta

21

Sfortunatamente, non esiste un modo standard per stampare usando Python su tutte le piattaforme. Quindi dovrai scrivere la tua funzione wrapper per stampare.

È necessario detect the OS il vostro programma è in esecuzione, quindi:

Per Linux -

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

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

Più risorse:

Print PDF document with python's win32print module?

How do I print to the OS's default printer in Python 3 (cross platform)?

6

di stampare su qualsiasi stampante in rete è possibile inviare un lavoro di stampa PJL/PCL direttamente a una stampante di rete sulla porta 9100.

prega di dare un'occhiata al link qui sotto, che dovrebbe dare un buon inizio:

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

Inoltre, Se c'è un modo per chiamare di Windows cmd è possibile utilizzare FTP messo a stampare la pagina su 9100. di seguito link dovrebbe darvi i dettagli, ho usato questo metodo per le stampanti HP ma credo funzionerà per altre stampanti.

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

19

Questo è stato testato solo su Windows:

È possibile effettuare le seguenti operazioni:

import os 

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

Questo avvierà il file, nella sua apertura di default, con il verbo 'di stampa ', che stamperà sulla stampante predefinita. Richiede solo il modulo os fornito con la libreria standard

+0

secondo https://docs.python.org/2/library/os.html#os.startfile funziona solo su windows – Buzz

1

È possibile prova libreria wx. È una libreria dell'interfaccia utente multipiattaforma. Qui puoi trovare il tutorial di stampa: http://wiki.wxpython.org/Printing

+0

Questo è molto promettente! Non lavoro più con python + printing, ma se la stampa funziona in modo dimostrabile su cross platform con wxpython, accetterei questa risposta. –

Problemi correlati