我有一个设备/电器,无法安装驱动程序。我想通过让用户添加IP地址来支持网络/IPP/AirPrint打印机。
由于我不是通过Windows打印(使用IPP),那么我该如何自己使用IPP呢?是否有c#客户端(或任何Windows库)可以与IPP打印机使用IPP协议进行交互?
我有一个设备/电器,无法安装驱动程序。我想通过让用户添加IP地址来支持网络/IPP/AirPrint打印机。
由于我不是通过Windows打印(使用IPP),那么我该如何自己使用IPP呢?是否有c#客户端(或任何Windows库)可以与IPP打印机使用IPP协议进行交互?
ipptool
。创建一个名为printjob.ipp
的ipp-command-file。{
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
}
ipptool -tv -f mydoc.pdf ipp://192.168.2.207 printjob.ipp
ipptool
是由CUPS提供的,但它可以与任何IPP打印机完美配合使用。请查看RFC 3510或您的打印机文档以获取适当的打印机URI方案,或者使用ippfind
。ipptool
发送PDF文件,目标打印机可以是PCL设备。CUPS将处理所需的翻译... - Kurt Pfeifleapplication/octet-stream
作为默认文档格式,因此需要自动键入接收到的数据。没有驱动程序的打印最适合使用PDF和接受PDF的打印机(例如LaserJet M175nw或imagePRESS C7010VP)。使用CUPS不能被视为没有驱动程序的打印,因为CUPS本身始终需要“驱动程序”或过滤器。询问IPP或“无驱动程序打印”的人往往会避免像CUPS这样的中间件。 - IPP Nerd同时IPP示例软件(包括上面提到的ipptool
)是Github上的一个独立项目。它现在由打印机工作组(PWG)管理,该组织标准化了IPP(Internet Printing Protocol)。
虽然该软件目前仍处于测试版,但已经非常实用。它提供两个主要的命令行工具:
ippserver
. 启动它(使用适当的选项),您将在网络上拥有一个完整的IPP服务器实例,作为虚拟IPP打印机(或托管多个虚拟IPP队列的IPP服务器),您可以使用它来测试任何(或您自己编写的)IPP客户端软件。
ipptool
. 这是一个IPP客户端程序,可以向网络上的任何IPP实例(CUPS服务器、ippserver
、支持IPP的打印机硬件)发送任意组合的IPP请求并验证其响应。该软件附带了一些准备好的文本文件,其中包含示例IPP请求,所有这些文件名都带有.test
后缀。
为了您的目的,您可以运行以下命令:
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
。
ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-1.1.test
。
此命令将对打印机运行完整的验证套件,以测试其真实的IPP-1.1兼容性。
ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test
。
此命令将对打印机运行完整的验证套件,以测试其真实的IPP-2.0兼容性。
ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test
。
此命令将对打印机运行完整的验证套件,以测试其真实的IPP-2.0兼容性。
ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.1.test
。
此命令将对打印机运行完整的验证套件,以测试其真实的IPP-2.2兼容性。
ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.2.test
。
此命令将对打印机运行完整的验证套件,以测试其真实的IPP-2.2兼容性。
ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-everywhere.test
。
此命令将对打印机运行完整的IPP Everywhere(即最新的IPP标准)验证套件,以测试其真实的IPP Everywhere兼容性。
为了让大家进行这种类型的测试变得更加容易,我创建了一个现成的可执行AppImage,其中包含了IPP示例软件,可以在所有x86_64 Linux发行版上直接运行(无需“安装”)。
你可以在几乎任何Linux系统上使用它,而无需安装CUPS或ippsample!
AppImage已经嵌入了IPP示例软件项目的所有主要可执行命令行工具。这些可执行文件将作为AppImage的“子命令”运行。请参见下面的示例。
Download:
wget https://github.com/KurtPfeifle/ippsample/releases/download/continuous/ippsample-x86_64.AppImage
Make AppImage executable (and optionally rename it to ippsample
):
chmod a+x ippsample-x86_64.AppImage
mv ippsample-x86_64.AppImage ippsample
Have a look at its built-in help screen:
./ippsample --ai-usage
Run it:
./ippsample ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test
Find all IPP-capable printers nearby:
./ippsample ippfind
will yield s.th. like:
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
Pick one printer, print a job:
./ippsample ipptool \
-tv \
-f ./printjob.pdf \
ipp://HPA0B3CCF051B9.local:631/ipp/printer \
print-job.test
这里是一个(较旧的)ASCIinema ASCII演示,作为我所写内容的说明以及如何使用IPP样品软件(及其AppImage)的示例: