是否有适用于 Windows 的 CUPS 服务器版本?查看 CUPS 源代码,它似乎已准备好进行 Visual Studio 编译,但我没有找到任何实际支持的包的痕迹。我想在 Windows 上设置一个 CUPS 服务器,以便我可以从 Linux/MacOSX/Win 客户端打印到我在此服务器上设置的打印机。
4 回答
我给你一个新的答案:
ippsample
自从有一段时间以来,GitHub上有一个名为的项目。它正在慢慢接近成熟的 1.0 版本。以下是强制性 README 文件中给出的前两句话作为自我描述:
“此代码提供了 IPP 客户端、打印机和代理的示例实现。它主要基于 CUPS 软件,对 ippproxy 和 ippserver 实现进行了重大更改,以使其更加通用和可配置。” (我的重点)
该项目由
ISTO Printer Working Group (PWG)
开发和推广 IPP 作为通用标准的同一行业组织主办。IPP 示例项目的
ippserver
、ipptool
、ippfind
和组件共同构成了一个符合标准的实现,涵盖了打印的客户端和服务器端ippproxy
。ipptransform
IPP Everywhere
IPP 示例项目的 GitHub 代码由同样开发 CUPS 的 Mike Sweet 维护——所以它是真实的。
是的,它可以在 Windows 上很好地编译和运行,并且有很多文件可以
.vclxproj
.sln
使 MS Visual Studio 的构建过程尽可能顺利。是的,IPP 示例代码正在运行,并且可以打印到在 macOS 或任何 Linux 混合上运行的 CUPS 服务器(或从那里接收打印作业)。
不,这还不是用于 Windows 的成熟 CUPS 服务器,它可以作为 Windows 打印服务器的直接替代品。它没有所有需要的功能。
但是如果你想创造这样的野兽:
- 这是您必须先四处逛逛的地方;
- 这是您可能可以分叉代码并开始添加功能以到达您想去的地方。
哦,您是否知道Apple 最近更改了 CUPS 的许可条件并使其更加宽松,从 GPL2 转向 Apache 2.0 许可?
您以前从未听说过“IPP Everywhere”吗?这是“无人驾驶”打印的未来。
没听说过“无人驾驶打印”?它的一个稍微修改(和精简)的版本已经实现为 iPhone 和 iPad 设备的“Apple AirPrint” 。
基于 CUPS 的打印堆栈的当前实现包括最近移至 GitHub的
cups-drivers
项目中的新代码。这个新代码实现了 IPP Everywhere 功能。这个
cups-filters
项目一直由Linux 基金会的 OpenPrinting 部门管理,因为当这些部分原始 CUPS 源代码对 macOS 不再有用但对 Linux 仍然很重要时,Apple 将这些部分交给了他们。那么无人驾驶打印的基本思路是什么?
让设备自动宣布它们在本地网络中的存在及其服务类型。使用 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 打印协议进行客户端-服务器通信。根据Technet 文章,Windows 可以用作 IPP 主机:
要使运行 Windows Server 2008 的计算机充当支持 Internet 打印的服务器,您必须在打印服务角色中安装 Web 服务器 (IIS) 角色、打印服务角色和 Internet 打印角色服务。
此外,Windows、Linux 和 Mac OS X 客户端似乎可以使用通过 SMB 共享的打印机。
“让完整的 CUPS 服务器+过滤代码在 Windows 上运行将是一项艰巨的任务,因为 Windows 假脱机和打印与 Unix 世界有很大不同。”
回到拨号上网的日子,我遇到了一个问题,一些 IPS 有一个用于调制解调器功能的替换 dll。问题在于,在您卸载 IPS 程序之前,该 dll 会阻止合法程序访问调制解调器。
通过编写 Windows 假脱机和打印替换程序,可以使用相同的技术来创建 Windows CUPS 服务器,该程序不是直接打印到打印机,而是将打印任务交给 CUPS 服务器。
当然,需要对 Windows 假脱机和打印协议有深入了解的人。