39

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

假设这里是CPython,而不是像使用 Jython 和Java 打印 API那样聪明。

4

5 回答 5

44

这仅在 Windows 上进行了测试:

您可以执行以下操作:

import os

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

这将在其默认打开器中使用动词“打印”启动文件,它将打印到您的默认打印机。仅需要os标准库附带的模块

于 2014-03-21T04:26:40.190 回答
35

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

您需要检测您的程序正在运行的操作系统,然后:

对于 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

更多资源:

使用 python 的 win32print 模块打印 PDF 文档?

如何在 Python 3(跨平台)中打印到操作系统的默认打印机?

于 2012-10-04T10:25:38.363 回答
8

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

于 2012-10-04T10:29:23.147 回答
3

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

于 2015-03-06T00:40:26.873 回答
1

我发现这是最好的解决方案,至少在处理 Web 应用程序时是这样。想法是这样的:将 HTML 页面转换为 PDF 文档,然后通过gsprint.

尽管gsprint不再处于开发阶段,但它确实非常非常好。您可以在其他几个选项中选择打印机以及页面方向和大小。

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

于 2020-03-20T21:44:46.670 回答