如何模拟IPP打印机

9
我想测试IPP应该具备的一些功能(即监视印象次数;参见这个问题),但我还没有硬件。如何模拟这样的打印机?是否有虚拟IPP打印机的代码?
我将在Linux或Windows中工作。
3个回答

5

在Github上,IPP样例软件是一个完整的、开源的、符合IPP-2.2IPP Everywhere标准的打印机模拟器。它由打印机工作组(PWG)提供,该组织标准化了IPP(Internet Printing Protocol)。

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

该软件目前仍处于测试版,但已经非常实用。它提供的命令行工具之一是ippserver。这就是你要找的模拟打印机。它比苹果的打印机模拟器功能更强大,但没有图形用户界面。你需要熟悉运行命令行工具。

一旦你能够启动ippserver(带有适当的选项),你就会在网络上拥有一个完整的虚拟IPP打印机实例。你可以使用它来测试任何(或自己编写的)IPP客户端软件。

IPP示例提供了另一个重要的工具,ipptool。它可以作为IPP客户端使用。您可以使用两者进行测试。在这个ASCII-cast中看看它是如何工作的:

asciicast

如果您想自己尝试,并且使用的是Linux系统,您甚至不需要自己构建它。只需使用我提供的软件AppImage(由一个单独的可执行文件组成),无需进行“安装”步骤即可直接运行。以下是具体步骤:

  1. Download it:

    wget https://github.com/KurtPfeifle/ippsample/releases/download/continuous/ippsample-x86_64.AppImage
    
  2. Make AppImage executable (and optionally rename it to ippsample):

    chmod a+x ippsample-x86_64.AppImage
    mv ippsample-x86_64.AppImage ippsample
    
  3. Have a look at its built-in help screen:

    ./ippsample --ai-usage
    
  4. Run it:

    ./ippsample ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test
    

    (This would run a test suite to validate complete IPP-2.0 compliance of the IPP printer on IP address xxx.xxx.xxx.xxx.)

更多测试示例:

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

  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并打印。)


ippserver和ippeveprinter相比,是否具有可比性?它必须独立运行,还是有一种方法可以利用打印作业处理程序?基本上,我想要一个能够监听打印作业、直接将文本/图像/PDF保存到文件并访问属性字段中的目录数据的程序。 - b4n4n4p4nd4

4
一个非常好的IPP模拟器是苹果公司的打印机模拟器。在https://developer.apple.com/download/more/上查找硬件IO工具(参见这个问题)。虽然它只适用于OS X,但您仍然可以从Linux或Windows测试与此网络服务的连接。打印页面可以在“预览”中弹出以供审阅。该模拟器还支持所需的IPP属性job-impressions-completed。该工具节省了很多纸张。
CUPS不是一个很好的模拟器。为了正常工作,它需要一个真正的打印机进行打印。您可以暂停队列并测试向其打印。除非您释放队列,否则您将不会得到任何impressions-completed > 0。这将导致真正的-而不是模拟的-打印。

在提供的链接上,最好找到“打印机模拟器”,因为“硬件IO工具”自2016年以来已更名为“Xcode的附加工具”。它是Xcode的额外软件包的一部分。感谢提供的参考! - undefined

1

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接