使用没有驱动程序的IPP打印(IPP客户端)

时间:2013-10-07 18:34:41

标签: printing network-protocols network-printers ipp-protocol

我有一个无法安装驱动程序的设备/设备。我想通过让用户添加IP地址来添加支持网络/ IPP / AirPrint打印机的功能。

由于我不通过Windows打印(使用IPP),我如何自己使用IPP?是否有一个c#客户端(或任何Windows库)允许您使用IPP协议与IPP打印机进行交互?

2 个答案:

答案 0 :(得分:6)

有一些IPP-Client实现和IPP库可用于不同的编程语言(java / php / python)。

实际的解决方案可能是使用http://cups.org/software.php

时提供的ipptool

创建一个名为printfile.ipp的{​​{3}}:

{
OPERATION Print-Job
GROUP operation-attributes-tag
ATTR charset attributes-charset utf-8
ATTR language attributes-natural-language en
ATTR uri printer-uri $uri
FILE $filename
}

现在您应该可以使用以下选项打印PDF文件:

ipptool -tv -f mydoc.pdf ipp://192.168.2.207 printfile.ipp

确保打印机(或打印服务器)支持您发送的文档格式。我假设您熟悉如何在应用程序中执行外部命令。

(即使ipptool由CUPS提供,它也适用于任何IPP打印机。请检查ipp-command-file或您的打印机文档以获取相应的打印机 - uri-scheme)

答案 1 :(得分:1)

IPP示例软件

与此同时,IPP Sample Software(包括上面提到的 ipptool )是Github上的一个单独项目。现在由Printer Working Group(PWG)主持,该组织是对IPP(互联网打印协议)进行标准化的机构。

尽管该软件目前仍处于测试阶段,但已经非常实用。它附带了两个主要的命令行工具:

  1. ippserver 。启动它(使用适当的选项),您将在网络上拥有一个完善的IPP服务器实例,用作虚拟IPP打印机(或托管多个虚拟IPP队列的IPP服务器),可用于测试任何(或您自己的) IPP客户端软件。

  2. ipptool 。这是一个IPP客户端程序,可以将IPP请求的任何组合发送到网络上的任何IPP实例(CUPS服务器,ippserver,具有IPP的打印机硬件)并验证其响应。该软件附带了一些准备好的文本文件,其中包含IPP示例请求,所有文件名均带有 .test 后缀。

出于您的目的,您可以运行以下命令:

  1. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print get-printer-attributes.test 。 此命令将查询任何IPP打印机有关其支持的IPP属性的信息。 这应该包括一个说明其假定 IPP版本支持的项目。 例如,报告为 ipp-versions-supported (1setOf keyword) = 1.0,1.1,2.0

  2. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-1.1.test 。 该命令将对打印机运行一个完整的验证套件,以测试其真实 IPP-1.1的符合性。

  3. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test 。 此命令将针对打印机运行一个完整的验证套件,以测试其真实世界 IPP-2.0符合性。

  4. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test 。 此命令将针对打印机运行一个完整的验证套件,以测试其真实世界 IPP-2.0符合性。

  5. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.1.test 。 此命令将针对打印机运行一个完整的验证套件,以测试其真实 IPP-2.2符合性。

  6. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.2.test 。 此命令将针对打印机运行一个完整的验证套件,以测试其真实 IPP-2.2符合性。

  7. ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-everywhere.test 。 该命令将针对打印机运行完整的 IPP Everywhere (这是最新的IPP标准)验证套件,以测试其真实 IPP Everywhere符合性。


IPP示例软件的AppImage

为了使您容易进行这种测试,我从IPP示例软件创建了现成的可执行AppImage,该软件应该能够在所有x86_64 Linux发行版上直接运行(无需“安装”!)。

您可以(几乎)在任何Linux系统上使用它,而无需安装CUPS或ippsample!

AppImage嵌入了IPP示例软件项目的所有主要的可执行命令行工具。这些可执行文件将作为AppImage的“子命令” 运行。进一步查看示例。

  1. 下载:

    wget https://github.com/KurtPfeifle/ippsample/releases/download/continuous/ippsample-x86_64.AppImage
    
  2. 使AppImage可执行文件 (并可选地将其重命名为 ippsample ):

    chmod a+x ippsample-x86_64.AppImage
    mv ippsample-x86_64.AppImage ippsample
    
  3. 看看其内置的帮助屏幕:

    ./ippsample --ai-usage
    
  4. 运行它:

    ./ippsample ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test
    
  5. 查找附近的所有支持IPP的打印机:

    ./ippsample ippfind
    

    将产生s.th。喜欢:

    ipp://HPA0B3CCF051B9.local:631/ipp/printer
    ipp://lenjessie2.local:8444/ipp/print
    ipp://mbp14.papercut-ipv4.local:631/printers/OJ6500
    ipp://mbp14.papercut-ipv4.local:631/printers/libreoffice-pin-code-drucker
    
  6. 选择一台打印机,打印作业:

    ./ippsample ipptool       \
            -tv               \
            -f ./printjob.pdf \
             ipp://HPA0B3CCF051B9.local:631/ipp/printer \
             print-job.test
    

ASCIinema ASCIIcast

这是一个(较旧的)ASCIinema ascii-cast,用于说明我写的内容以及如何使用IPP示例软件(及其AppImage):

asciicast

相关问题