2012-10-04 115 views
21

是否有合理的标准和跨平台的方式将文本(甚至是PS/PDF)打印到系统定义的打印机上?从Python打印到标准打印机?

在这里假设CPython,这不像巧用Jython和Java printing API

+0

什么是您的打印机类型?这里有一个关于打印到POS打印机的教程http://goo.gl/rd8lm – Switch

+0

假设Java打印可以做到这一点另一个“聪明”的解决方案是JPype(一种获得cpython和jvm相互通信/运行代码的方式) –

回答

21

不幸的是,在所有平台上都没有使用Python进行打印的标准方法。所以你需要编写自己的包装函数来打印。

您需要detect the OS程序运行,然后:

对于Linux -

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

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

更多资源:

Print PDF document with python's win32print module?

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

6

要打印到可以直接发送PJL/PCL打印作业到网络打印机在端口9100上

请看看下面的链接,应该给一个好的开始在网络上的任何打印机:

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

而且,如果有调用Windows的方式CMD,您可以使用FTP把打印在9100以下链接你的页面应该给你的细节,我已经使用了HP打印机的这种方法,但我相信它将适用于其他打印机。

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

19

这仅是在Windows上进行测试:

你可以做到以下几点:

import os 

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

这将启动文件,在它的默认打开程序,以动词“打印',它将打印到您的默认打印机。仅需要os模块随附的标准库

+0

根据https://docs.python.org/2/library/os.html#os.startfile这只适用于Windows – Buzz

1

您可以尝试wx库。这是一个跨平台的UI库。在这里您可以找到打印教程: http://wiki.wxpython.org/Printing

+0

这是非常有前途的!我不再使用python +打印,但如果打印使用wxpython可以跨平台工作,我会接受这个答案。 –