我有一个设备/设备,您无法为其安装驱动程序。我想通过让用户添加IP地址来添加支持网络/IPP/AirPrint打印机的功能。
由于我不是通过windows打印(将使用IPP),我如何使用IPP?有没有一个c#客户端(或任何windows库)可以让你通过IPP协议与IPP打印机进行交互?
发布于 2015-01-29 04:44:16
有一些IPP客户端实现和IPP库可用于不同的编程语言(java/php/python)。一个实用的解决方案可能是使用http://cups.org/software.php上提供的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
}现在,您应该能够使用以下选项打印PDF文件:
ipptool -tv -f mydoc.pdf ipp://192.168.2.207 printjob.ipp确保打印机(或打印服务器)支持您发送的文档格式。我假设您熟悉如何在应用程序中执行外部命令。
尽管ipptool是由CUPS提供的,但它与任何IPP打印机都能完美地工作。请查看打印机或打印机文档以获取适当的RFC 3510 -uri-scheme或使用ippfind。
有经验的开发人员应该能够在他们首选的编程语言和生态系统中实现打印作业操作。我已经用kotlin用100行代码实现了上面的用例:https://github.com/gmuth/ipp-printjob-kotlin。
这是我用Java语言实现的最小PrintJob:https://github.com/gmuth/ipp-printjob-java
发布于 2018-12-09 06:13:10
IPP示例软件
同时,IPP Sample Software (包括上面提到的ipptool )在Github上是一个单独的项目。它现在是在Printer Working Group (PWG)的主持下,该机构标准化了IPP (互联网打印协议)。
虽然该软件目前仍处于测试阶段,但功能已经非常强大。它附带了两个主要的命令行工具:
ippserver.启动它(使用适当的选项),您将在您的网络上拥有一个成熟的IPP服务器实例,作为虚拟IPP打印机(或托管多个虚拟IPP队列的IPP服务器),您可以使用它来测试任何(或您自己编写的) IPP客户端软件against.ipptool.。这是一个IPP客户端程序,可以将IPP请求的任意组合发送到网络上的任何IPP实例(CUPS服务器、ippserver、支持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 compliance.ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test.此命令将针对打印机运行完整的验证套件,以测试其实际IPP-2.0 compliance.ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test.此命令将针对打印机运行完整的验证套件,以测试其实际IPP-2.0 compliance.ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.1.test.此命令将针对打印机运行完整的验证套件,以测试其实际IPP-2.2 compliance.ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.2.test.此命令将针对打印机运行完整的验证套件,以测试其实际IPP-2.2 compliance.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的“子命令”运行。有关示例,请参阅下面的内容。
wget https://github.com/KurtPfeifle/ippsample/releases/download/continuous/ippsample-x86_64.AppImage
ippsample):ippsample
./it --ai-usage
./ippsample ipptool -t -v IPP://xxx.xxx/IPP/print ipp-2.0.test
./ippsample ippfind
将产生s.th。像这样:
ipp://HPA0B3CCF051B9.local:631/ipp/打印机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
./ippsample ipptool \ -tv \ -f ./printjob.pdf \ipp://HPA0B3CCF051B9.local:631/ipp/-f\631
ASCIinema ASCIIcast
下面是一个(较老的) IPP ascii-cast,作为我所写的内容以及如何使用ASCIinema示例软件(及其AppImage)的说明:
https://stackoverflow.com/questions/19232082
复制相似问题