Java程序通过CUPS URL向Socket连接的打印机发送PDF打印任务的解决方案求助
Java程序通过CUPS URL向Socket连接的打印机发送PDF打印任务的解决方案求助
我想通过Java程序向CUPS发送打印任务,我的打印机是通过Socket连接到CUPS的。目前正在寻找一个可行的方案,让我的Java程序能通过CUPS的URL来完成打印任务。
相关地址信息:
- CUPS地址:
http://CUPS-IP-ADDRESS:631/ - 打印机地址:
socket://PRINTER-IP-ADDRESS:PORT
我已经尝试过几个Java包来发送打印任务,但都没能成功。我猜测问题出在这些包都要求对接IPP打印机,但我的打印机并不支持IPP,而且它本身也无法直接打印PDF,所以必须借助CUPS来处理格式转换和打印调度。
我尝试过的Java包
ipp-client
<dependency> <groupId>de.gmuth</groupId> <artifactId>ipp-client</artifactId> <version>3.2</version> </dependency>
cups4j
<dependency> <groupId>org.cups4j</groupId> <artifactId>cups4j</artifactId> <version>0.7.9</version> </dependency>
j4cups
<dependency> <groupId>de.javatux</groupId> <artifactId>j4cups</artifactId> <version>0.6.1</version> </dependency>
不知道为什么,这些Java包都找不到我的打印机,哪怕是那些注册为IPP并支持IPP功能的打印机也不行。
我的CUPS运行在Docker容器中,所以需要使用CUPS的IP地址。我用命令行测试过两种方式都能正常打印:
- 用
lp -d MyPrinter srv/MyFile.pdf发送PDF文件,能正常打印; - 用
curl -v --upload-file srv/MyFile.raw-file telnet://PRINTER-IP-ADDRESS:PORT通过telnet发送原始文件,也能正常工作。
这说明Java的Socket类理论上也能处理原始文件的发送,但生成原始文件太复杂了,PDF要方便得多。所以我想请教大家,有没有办法让我的Java程序通过CUPS的URL,向这个Socket连接的打印机发送PDF打印任务?我查了很多资料,只找到针对IPP打印机的文档,完全找不到相关的实现方法。按道理来说,通过URL向CUPS发送打印任务应该不算难,但我至今还没找到可行的方案。
备注:内容来源于stack exchange,提问作者FelixFeuerdorn
相关产品推荐
相关产品推荐

