是否存在合理的标准和跨平台方式来将文本(甚至PS / PDF)打印到系统定义的打印机?
假设这里是CPython,没有像使用Jython和Java printing API那样聪明。
[遗憾的是,没有在所有平台上使用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)?
仅在Windows上经过测试:
您可以执行以下操作:
import os
os.startfile("C:/Users/TestFile.txt", "print")
这将在其默认打开程序中以动词'print'启动文件,该文件将打印到您的默认打印机。仅需要标准库随附的os
模块
要打印到网络上的任何打印机,您可以将PJL / PCL打印作业直接发送到端口9100上的网络打印机。
[请查看下面的链接,这应该是一个好的开始:
http://frank.zinepal.com/printing-directly-to-a-network-printer
[此外,如果有一种方法可以调用Windows cmd,则可以使用FTP put在9100上打印页面。下面的链接应该为您提供详细信息,我已经在HP打印机上使用了此方法,但是我相信它可以在其他打印机上使用。
http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=bpj06165
您可以尝试wx库。这是一个跨平台的UI库。在这里您可以找到打印教程:http://wiki.wxpython.org/Printing
至少在处理Web应用程序时,我认为这是上乘的解决方案。想法是这样的:将HTML页面转换为PDF文档,然后通过gsprint
将其发送到打印机。
即使gsprint
不在开发中,它也确实非常有效。您可以选择打印机以及页面方向和尺寸以及其他几个选项。
我使用Chrome的无头浏览器Puppeteer将网页转换为PDF。但是您需要传递会话cookie来维护凭据。