2012-10-04 40 views
21

¿Existe una forma razonablemente estándar y multiplataforma de imprimir texto (o incluso PS/PDF) en la impresora definida por el sistema?Imprimir en una impresora estándar de Python?

Asumiendo CPython aquí, no es algo inteligente como usar Jython y el Java printing API.

+0

¿Cuál es su tipo de impresora? Aquí hay un tutorial sobre impresión para impresoras POS http://goo.gl/rd8lm – Switch

+0

Asumiendo que la impresión Java puede hacer esto, otra solución "inteligente" es JPype (una forma de que cpython y el jvm se comuniquen/ejecuten código el uno al otro) –

Respuesta

21

Desafortunadamente, no existe una forma estándar de imprimir usando Python en todas las plataformas. Por lo tanto, deberá escribir su propia función de contenedor para imprimir.

Es necesario detect the OS su programa se está ejecutando, entonces:

Para Linux -

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

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

Más recursos:

Print PDF document with python's win32print module?

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

6

Para imprimir en cualquier impresora de la red puede enviar un trabajo de impresión PJL/PCL directamente a una impresora de red en el puerto 9100.

Por favor, echar un vistazo al enlace que debería dar un buen comienzo:

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

Además, si hay una manera de llamar de Windows CMD se puede usar FTP poner a imprimir su página en 9100. a continuación enlace debe dar detalles, he utilizado este método para las impresoras HP, pero creo Funcionará para otras impresoras.

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

19

Esto sólo ha sido probado en Windows:

Usted puede hacer lo siguiente:

import os 

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

Esto iniciará el archivo, en su primer partido por defecto, con el verbo 'imprimir ', que se imprimirá en su impresora predeterminada. Solo requiere el módulo os que viene con la biblioteca estándar

+0

de acuerdo con https://docs.python.org/2/library/os.html#os.startfile esto solo funciona en Windows – Buzz

1

Puede prueba la biblioteca wx. Es una biblioteca de UI multiplataforma. Aquí puede encontrar el tutorial de impresión: http://wiki.wxpython.org/Printing

+0

¡Esto es muy prometedor! Ya no trabajo con python + printing, pero si la impresión funciona de forma demostrable en plataforma cruzada con wxpython, aceptaría esta respuesta. –

Cuestiones relacionadas