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

无法向CUPS服务器添加IPP网络打印机,求API及连接方案

通过CUPS添加IPP网络打印机的解决方案

问题背景

需要通过HTTP调用(传入打印机主机名、端口)向CUPS服务器添加网络打印机,未在CUPS API文档中找到对应方法,当前使用Java的cups4j库连接CUPS服务器。

可用的CUPS API(IPP原生接口)

CUPS基于IPP(互联网打印协议)实现打印机管理,添加网络打印机需调用IPP的Create-Printer操作,对应HTTP请求规则如下:

  • 请求端点:http://{cups-host}:{cups-port}/printers(默认CUPS端口631)
  • 请求方法:POST
  • 请求格式:符合IPP 2.0+规范的二进制/XML格式请求
  • 核心参数:
    • printer-name:自定义打印机名称
    • device-uri:打印机的连接地址,格式为ipp://{printer_host_name}:{port}/ipp/print(标准IPP设备URI)
    • printer-info:打印机描述信息(可选)
    • printer-location:打印机位置(可选)
  • 注意:该操作需要CUPS管理员权限,请求需携带Basic认证信息。

不同的打印机连接方案

根据打印机支持的协议,可选择以下设备URI格式:

  • IPP加密连接:ipps://{printer_host_name}:{port}/ipp/print(适用于支持TLS加密的打印机)
  • RAW Socket连接:socket://{printer_host_name}:{port}(适用于仅支持RAW打印的网络打印机,无需IPP协议)
  • LPD协议连接:lpd://{printer_host_name}/{queue-name}(传统UNIX打印协议,部分老旧打印机支持)
  • AirPrint连接:ipp://{printer_host_name}:{port}/printers/{printer-name}(针对支持AirPrint的苹果生态打印机)

cups4j库的实现方式

cups4j未直接封装添加打印机的API,但可通过手动构造IPP请求实现:

  1. 初始化CupsClient并配置CUPS服务器地址与认证信息
  2. 创建IppRequest实例,设置操作码为IppOperation.CREATE_PRINTER
  3. 向请求中添加必要属性:
    request.addAttribute(new IppAttribute("printer-name", IppTag.NAME, "MyNetworkPrinter"));
    request.addAttribute(new IppAttribute("device-uri", IppTag.URI, "ipp://192.168.1.100:631/ipp/print"));
    request.addAttribute(new IppAttribute("printer-info", IppTag.TEXT, "Office Network Printer"));
    
  4. 发送请求到CUPS服务器的/printers端点,处理响应结果

相关讨论中提到,需确保CUPS服务器配置允许远程管理员操作,且请求的属性符合CUPS的IPP规范要求。

内容的提问来源于stack exchange,提问作者Krishnan U

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:50:26