You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 09:48:08