从Python打印到标准打印机?

时间:2012-10-04 09:03:28

标签: python printing cpython

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

假设CPython在这里,并不像使用Jython和Java printing API那样聪明。

5 个答案:

答案 0 :(得分:24)

不幸的是,没有标准的方法可以在所有平台上使用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)?

答案 1 :(得分:22)

这只在Windows上测试过:

您可以执行以下操作:

import os

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

这将在默认的开启工具中使用动词'print'启动文件,该文件将打印到您的默认打印机。只需要标准库附带的os模块

答案 2 :(得分:5)

要打印到网络上的任何打印机,您可以将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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

至少在处理Web应用程序时,我认为这是出色的解决方案。想法是这样的:将HTML页面转换为PDF文档,然后通过gsprint将其发送到打印机。

即使gsprint不在开发中,它也确实非常有效。您可以选择打印机以及页面方向和尺寸以及其他几个选项。

我使用Chrome的无头浏览器Puppeteer将网页转换为PDF。但是您需要传递会话cookie来维护凭据。