我有两台固定IP地址的linux计算机:
不幸的是,通过CUPS的打印机传播似乎无法可靠地工作(可能是由于网络结构)。
我可以将打印作业直接从python程序发送到CUPS打印服务器吗?
如果是,你能提供一个小例子吗?
理论上,我只会将格式正确的数据发送到IP地址端口,但我没有让它工作。。。
以下是我到目前为止发现的方法以及我的问题:
>
命令“lpr”
import subprocess
lpr = subprocess.Popen("usr/bin/lpr", stdin=subprocess.PIPE) # on some distros the command is 'lp'
lpr.stdin.write("hello world\n")
lpr.stdin.close()
依赖于通过CUPS的打印机传播。
>
import cups
with open("/home/user/Documents/some.txt", "w") as f:
f.write("hello world\n")
conn = cups.Connection()
conn.printFile("test_printer", "/home/user/Documents/some.txt", "some_title", {})
在我可以使用打印机之前,我必须先添加它,这反过来又依赖于通过CUPS的传播。
我也没有让conn.add打印机()
工作。
>
python模块python escpos/python打印机escpos
import escpos.printer
p = escpos.printer.Network("192.168.1.2", port=631) # port 9100 seems not to work.
p.text("hello world\n")
p.close()
可能是最有希望的方法...不幸的是,它没有打印任何内容,并在关闭时抛出异常。
# The traceback was produced in the interactive shell.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/user/.local/lib/python3.6/site-package/escpos/printer.py", line 214, in close
self.device.shutdown(socket.SHUT_RDWR)
OSError: [Errno 107] Transport endpoint is not connected
我使用python 3.6.7
打印服务器使用CUPS 2.2.1。
由于不是Python程序员,我无法提供任何示例代码。
但我可以给你一些其他提示:
>
您的假设,即“理论上,[......]只需将格式正确的数据发送到IP地址端口”是错误的。
如果你发送东西,你必须“谈论IPP”到CUPS服务器(是的,通过IP地址端口631)。但是仅仅发送一个文件比谈论IPP要少得多。
否则,您可以使用netcat IP地址端口号
因此,如果您想将程序与IPP/CUPS集成,就必须使用一些支持IPP的库
一种替代方法是让您的程序通过能够这样做的CLI工具执行“IPP与CUPS对话”。
看看设计IPP的打印机工作组(PWG)的ippsample
代码。这仍然处于“测试版”中,但已经完全可用。它的所有二进制文件都是命令行(CLI)实用程序:
>
它提供了ippfind辅助工具。如果您在没有任何参数的情况下运行它,它将通过打印其各自的IPP URI来打印可用IPP服务(打印服务器和/或打印机设备)的列表。
它提供了一个ippserver
命令行,可以启动一个成熟的,你猜对了,IPP Server暴露你想要的任何功能。
然后是作为IPP客户端包含的ipptools
。您可以运行'ipptools-f myprintfile-t-v ipp://丘比特服务器/打印机/test_printerprint-job.test'
将myprintfile发送到“丘比特服务器”上的队列“test_printer”(以示例IPP URI ipp://丘比特服务器/打印机/test_printer给出),并观察它在这样做时将IPP发送到CUPS。
有没有一种方法可以让CUPS在尚未完成最后一个作业的情况下将作业排队到IPP打印机? 背景:我们有一台XEROX Workcenter打印机,它有自己的作业队列。每次有人想要打印时,他们都必须将作业假脱机,将他们的支付卡插入打印机,然后在打印机触摸板上选择他们的作业。但是,当在中央服务器上使用CUPS时,CUPS只在最后一个作业完成时后台处理下一个作业,因此只有第一个后台处理的人才能看到并支付他们
我目前完成的工作: 设置一个带有杯子的树莓圆周率,插入Dymo Labelwriter 450 点击以下链接:设置树莓圆周率。如果我通过家庭网络上的Windows安装网络打印机,这可以在我的本地计算机(Windows)上正常工作并打印 已从成功打印打印作业。NET内核通过。这主要是为了测试。这是当USB标签打印机直接插入我的机器 有一个。从docker容器运行的NET Core(3.1)Web A
问题内容: 我有一部分代码可以作为服务的一部分在本地正常运行。 该代码作为服务的一部分运行,当我通过提供数据进行单元测试时,它最终将生成报告并进行打印。 当我从ajax调用在.ashx中运行完全相同的代码段时。报告已生成(我可以看到在磁盘上创建的pdf文件),但未进行打印。 在这两种情况下,都使用相同的代码来打印报告。(两种情况下objReport.DefaultAutoPrint = 0) 我唯
我正在尝试与CUPS打印服务器通信,该服务器的所有连接都设置了“需要加密”。这意味着,当您尝试建立到它的连接时,它会要求将连接升级到TLS加密的连接,而Cups4j和Jspi似乎都无法处理它。 有没有办法从Java应用程序(使用这些库或其他库)连接到这样的服务器?
问题内容: 我正在使用getifaddrs()和inet_ntop()来获取系统上的ip地址。当系统设置为IPv6时,返回的地址为简化版本(使用::表示零)。有什么办法可以将该地址扩展为完整地址吗? 这是我正在使用的代码: 代码非常感谢。 编辑: 由于这显然很难理解,我举一个例子: 如果我得到abcd:12 :: 3,我需要将其扩展为abcd:0012:0000:0000:0000:0000:00
问题内容: 在我的应用程序中,我有一个包含数据的JTable,我需要添加一个打印按钮,该按钮添加了在打印机纸张上的表中打印数据的功能(发送打印机作业),使用该类怎么可能?我一直在寻找示例,但是找不到一个简单的示例,该示例从JComponent打印一些数据。 这是我发现的网站之一:http : //java.sun.com/products/java- media/2D/forDevelopers/