为Windows编译的CUPS服务器?

14

是否有适用于Windows的CUPS服务器版本?从查看CUPS源代码来看,它似乎已准备好使用Visual Studio编译,但我没有找到任何实际支持的软件包。我想在Windows上设置一个CUPS服务器,以便我可以将Linux / MacOSX / Win客户端打印到我在此服务器上设置的打印机。

5个回答

11

我为您提供了一个新答案:

  1. 自从有了名为 ippsample 的项目后,它已慢慢接近成熟版本1.0的发布。

  2. 下面是其中必要的 README 文件中给出的自我描述的前两句话:

    "此代码提供IPP客户端、打印机和代理的示例实现。 它在很大程度上基于CUPS软件,并对ippproxy和ippserver实现进行了重大更改,使其更加通用和可配置。"(我强调)

  3. 该项目由 ISTO Printer Working Group (PWG) 托管,这是开发和推广IPP作为通用标准的同一行业组织。

  4. IPP Sample 项目的 ippserveripptoolippfindippproxyipptransform 组件共同构成符合标准的 IPP Everywhere 实现,涵盖了打印的客户端和服务器端。

  5. IPP Sample 项目的 GitHub 代码由同样负责开发 CUPS 的 Mike Sweet 维护 -- 所以它是真实的。

  6. 是的,在 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标准协议mDNSDNS-SD(在macOS下实现为"Bonjour",在Linux下实现为"Avahi")来记录所提供的服务。

    • 告诉打印客户端可以使用IPP协议以获取查询响应,当他们进行get-printer-attributes请求时。此请求将告诉他们设备支持哪组打印选项。然后,打印客户端可以显示一个完全定制的打印对话框,向打印用户展示一系列选择。打印客户端还将被告知每个设备支持哪些作业提交格式。这必须是PDF或称为"PWG-Raster"的简单光栅格式。

    • 那么,在这种环境下需要特定的“打印机驱动程序”吗?现在任何人都可以创建PDF文档。检查!不需要将设备特定的转换为任何其他打印语言。

  • 有支持IPP Everywhere的打印机吗?是的,请看这里--它们都声称完全符合标准:


  • 4

    在CUPS源代码中,您看到的.sln.vcproj文件并不意味着可以编译Windows上的整个CUPS。

    它们只用于编译其中的一些实用程序(例如ipptool.exe)...

    要使完整的CUPS服务器+过滤代码在Windows上工作将是一项艰巨的任务,因为Windows的排队和打印与Unix世界有很大的不同。


    0

    CUPS使用Internet Printing Protocol进行客户端-服务器通信。根据Technet文章,Windows可以用作IPP主机:

    要使运行Windows Server 2008的计算机充当支持Internet打印的服务器,必须在Print Services角色中安装Web服务器(IIS)角色、打印服务角色和Internet打印角色服务。

    此外,似乎Windows、Linux和Mac OS X客户端可以使用通过SMB共享的打印机。


    2
    Windows的IPP实现仅为1.0版本(该版本从未正式获得“标准”状态,只有“实验性”)。此外,Windows不使用端口631(即使在IPP-1.0中已经定义了该端口)... - Kurt Pfeifle

    0

    在Windows上使完整的CUPS服务器+过滤代码工作将是一项艰巨的任务,因为Windows的排队和打印与Unix世界有很大的不同。

    回到拨号上网的时代,我遇到了一个问题,一些IPS(互联网服务提供商)有一个替换dll来实现调制解调器功能。问题在于该dll会阻止合法程序访问调制解调器,直到您卸载IPS程序为止。

    可以使用相同的技术通过编写Windows排队和打印替代程序来创建Windows CUPS服务器,该程序将打印任务交给CUPS服务器而不是直接打印到打印机。

    当然,这需要具有深入了解Windows排队和打印协议的人才能完成。


    0

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接