是否有适用于Windows的CUPS服务器版本?从查看CUPS源代码来看,它似乎已准备好使用Visual Studio编译,但我没有找到任何实际支持的软件包。我想在Windows上设置一个CUPS服务器,以便我可以将Linux / MacOSX / Win客户端打印到我在此服务器上设置的打印机。
我为您提供了一个新答案:
自从有了名为 ippsample
的项目后,它已慢慢接近成熟版本1.0的发布。
下面是其中必要的 README 文件中给出的自我描述的前两句话:
"此代码提供IPP客户端、打印机和代理的示例实现。 它在很大程度上基于CUPS软件,并对ippproxy和ippserver实现进行了重大更改,使其更加通用和可配置。"(我强调)
该项目由 ISTO Printer Working Group (PWG)
托管,这是开发和推广IPP作为通用标准的同一行业组织。
IPP Sample 项目的 ippserver
、ipptool
、ippfind
、ippproxy
和 ipptransform
组件共同构成符合标准的 IPP Everywhere
实现,涵盖了打印的客户端和服务器端。
IPP Sample 项目的 GitHub 代码由同样负责开发 CUPS 的 Mike Sweet 维护 -- 所以它是真实的。
是的,在 Windows 上编译并工作得非常好,还有一堆可用的 .vclxproj
和 .sln
文件 可以使使用 MS Visual Studio 进行构建过程更加顺畅。
是的,IPP示例代码可以正常工作,并且可以将打印任务发送到运行在macOS或任何Linux混合系统上的CUPS服务器(或从那里接收打印任务)。
不,这还不是一个完整的CUPS服务器,无法作为Windows打印服务器的即插即用替代品。它没有必要的所有功能。
但是,如果你想创建这样一种服务器:
哦,而且你知道吗,苹果最近改变了CUPS的许可条件,使其更加宽松,从GPL2转向Apache 2.0许可证?
你以前从未听说过“IPP Everywhere”吗?这是“无驱动”打印的未来。
你从未听说过"无驱动打印"吗?已经对其进行了略微修改(并精简)的版本作为"苹果AirPrint"用于iPhone和iPad设备。
CUPS基于打印堆栈的当前实现包括位于cups-drivers
项目中的新代码,该项目最近移至GitHub。这段新代码实现了IPP Everywhere功能。
Linux Foundation的OpenPrinting部门自从苹果将这些原始CUPS源代码的部分交给他们以后,在主管下的cups-filters
项目中。这些代码在macOS中不再有用,但对Linux仍然很重要。
无人驾驶打印的基本思想是什么?
使设备在本地网络中自动宣布其存在和服务类型。使用IETF标准协议mDNS
和DNS-SD
(在macOS下实现为"Bonjour",在Linux下实现为"Avahi")来记录所提供的服务。
告诉打印客户端可以使用IPP
协议以获取查询响应,当他们进行get-printer-attributes
请求时。此请求将告诉他们设备支持哪组打印选项。然后,打印客户端可以显示一个完全定制的打印对话框,向打印用户展示一系列选择。打印客户端还将被告知每个设备支持哪些作业提交格式。这必须是PDF或称为"PWG-Raster"的简单光栅格式。
那么,在这种环境下需要特定的“打印机驱动程序”吗?现在任何人都可以创建PDF文档。检查!不需要将设备特定的转换为任何其他打印语言。
有支持IPP Everywhere的打印机吗?是的,请看这里--它们都声称完全符合标准:
在CUPS源代码中,您看到的.sln和.vcproj文件并不意味着可以编译Windows上的整个CUPS。
它们只用于编译其中的一些实用程序(例如ipptool.exe
)...
要使完整的CUPS服务器+过滤代码在Windows上工作将是一项艰巨的任务,因为Windows的排队和打印与Unix世界有很大的不同。
CUPS使用Internet Printing Protocol进行客户端-服务器通信。根据Technet文章,Windows可以用作IPP主机:
要使运行Windows Server 2008的计算机充当支持Internet打印的服务器,必须在Print Services角色中安装Web服务器(IIS)角色、打印服务角色和Internet打印角色服务。
此外,似乎Windows、Linux和Mac OS X客户端可以使用通过SMB共享的打印机。
在Windows上使完整的CUPS服务器+过滤代码工作将是一项艰巨的任务,因为Windows的排队和打印与Unix世界有很大的不同。
回到拨号上网的时代,我遇到了一个问题,一些IPS(互联网服务提供商)有一个替换dll来实现调制解调器功能。问题在于该dll会阻止合法程序访问调制解调器,直到您卸载IPS程序为止。
可以使用相同的技术通过编写Windows排队和打印替代程序来创建Windows CUPS服务器,该程序将打印任务交给CUPS服务器而不是直接打印到打印机。
当然,这需要具有深入了解Windows排队和打印协议的人才能完成。
cygwin ports有补丁文件,可在(某些版本的)cygwin中实现cups。我无法确定它的工作效果如何。