如何:模拟 (IPP) 打印机

Yuv*_*val 6 printing simulate ipp-protocol

我想测试 IPP 应该具备的一些功能(即监控印象数;请参阅此问题),但我还没有获得硬件。我如何模拟这样的打印机?是否有虚拟 IPP 打印机的代码?

我将在 Linux 或 Windows 中工作。

Kur*_*fle 5

Github 上的IPP 示例软件是一个成熟、开源、符合IPP-2.2IPP Everywhere的打印机模拟器。它由打印机工作组(PWG)提供,该机构负责标准化 IPP(互联网打印协议)。

IPP 示例软件可以在任何主要平台上编译:Linux、Windows、macOS。

该软件目前仍处于测试阶段,但已经非常实用。它提供的命令行工具之一是ippserver. 这就是您正在寻找的模拟打印机。它比 Apple 的打印机模拟器功能强大得多,但它没有 GUI。您需要熟悉运行命令行工具。

一旦您可以开始ippserver(使用适当的选项),您的网络上将拥有一个成熟的虚拟 IPP 打印机实例。您可以使用它来测试任何(或您自己编写的)IPP 客户端软件。

IPP Sample 提供了第二个重要工具,ipptool. 这可以作为IPP客户端。您可以同时玩两者来测试对方。看看它在这个 ASCII 转换中是如何工作的:

ASCII 广播

如果您想自己尝试一下并且您使用的是 Linux,您甚至不需要自己构建它。只需使用我预制的软件AppImage(由一个可执行文件组成),它可以直接运行,无需“安装”步骤。就是这样:

  1. 下载它:

    wget https://github.com/KurtPfeifle/ippsample/releases/download/continuous/ippsample-x86_64.AppImage
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使 AppImage 可执行(并可选择将其重命名为ippsample):

    chmod a+x ippsample-x86_64.AppImage
    mv ippsample-x86_64.AppImage ippsample
    
    Run Code Online (Sandbox Code Playgroud)
  3. 看一下它的内置帮助屏幕:

    ./ippsample --ai-usage
    
    Run Code Online (Sandbox Code Playgroud)
  4. 运行:

    ./ippsample ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test
    
    Run Code Online (Sandbox Code Playgroud)

    (这将运行一个测试套件来验证 IP 地址 xxx.xxx.xxx.xxx 上的 IPP 打印机是否完全符合 IPP-2.0。)

更多测试示例:

  1. 打印作业:(这会将my.pdf
    ./ippsample ipptool -t -v \ -f my.pdf \ ipp://xxx.xxx.xxx.xxx/ipp/print \ print-job.test 作为打印作业 发送到打印机。)

  2. 验证打印机的print-uri支持:
    ./ippsample ipptool -t -v \ -o document-uri=https://ftp.pwg.org/pub/pwg/candidates/cs-ippeve10-20130128-5100.14.pdf \ ipp://xxx.xxx.xxx.xxx/ipp/print \ print-uri.test

    (这将告诉打印机从document-uri获取命名的 PDF并打印它。)


Yuv*_*val 1

CUPS 为打印机提供IPP 接口。使用Java和jspi如这个问题中提到的;它有点过时,需要一些修复,例如适应属性的解析语法),您可能有以下代码来访问本地打印机作为IPP打印机:

IppPrintService service = new IppPrintService(URI.create("ipp://localhost:631/printers/HL2240D-local"));
Run Code Online (Sandbox Code Playgroud)

另外还有CUPS4J,我认为它可以做同样的事情,但是通过它自己的接口而不是通过javax.print.