为什么我无法通过单个应用程序从 CUPS 上的 Windows 进行打印?

为什么我无法通过单个应用程序从 CUPS 上的 Windows 进行打印?

我已经设置了一个 Fedora 10 服务器,并且想要从三个 Windows Vista 和两个 XP 工作站打印到连接的打印机。

经过大量阅读相关手册后,我得到了这个结果:

  • 所有工作站均可打印
  • 一个工作站可以从除一个应用程序之外的所有应用程序进行打印。

问题出在特定 Vista Business 工作站上的 IE7(和 IE8):每次从该特定工作站上的此应用程序启动打印作业时,我都会在 Linux 服务器上的 CUPS 日志中收到“拒绝访问”错误。从其他工作站上的 IE 打印则正常。

我当前的解决方法是先打印到 PDF 文件,然后从同一工作站从 Adob​​e Reader 打印该 PDF。

第二个问题是我对 Fedora/Linux 没什么经验,所以这可能是一个新手问题。如果是这样的话,我很抱歉。

  • 可能是什么问题呢?
  • “拒绝访问”什么?CUPS 日志没有提供关于拒绝访问哪个资源的更多信息。常见的嫌疑是什么?
  • 调试这种情况的最佳方法是什么?

我没有使用 Samba 进行打印,只是无法让它工作。相反,我使用没有身份验证的 CUPS,即每个人都可以打印。在工作站上,我已将打印机添加为“互联网打印机”,并提供此 URLhttps://myserver:631/printers/myprinter

编辑:我已更新至 Fedora 11,但问题仍然存在......

编辑2:更多信息:

  • 我更新到了 Fedora 12,问题仍然存在
  • 使用 Adob​​e Reader 作为 Internet Explorer 插件进行打印会导致同样的问题,因此问题似乎出在过程本身上。

答案1

问题可能在于发送到打印机的数据格式。您在 Windows 工作站上使用本机打印机驱动程序吗?如果是,您可能需要启用“原始”打印,即从工作站向打印机发送原始二进制打印代码。

您可能需要编辑 cups 配置文件并取消注释application/octet-stream以启用原始打印。我不确定这样做的安全后果是什么。

另一项可能对您有用也可能没用的方法就是使用 Windows 客户端上的通用 postscript 驱动程序将您的打印机设置为 postscript 打印机。不过,我很少能使它正常工作。

答案2

您如何公开打印机?我猜是通过 Samba 公开的。闪亮先生和新先生如上所述,您可能希望将打印机公开为“原始”打印机,从而允许 Windows 设备使用常规驱动程序与打印机通信。这就是我一直将 Linux 服务器中的打印机公开给 Windows 客户端的方式。

要调试此问题,您需要查看 Samba 日志以及 CUPS 日志。首先检查 Samba 日志,看看是否可以看到 Windows 计算机对打印机的访问。还要检查 CUPS 日志。在任一日志集中查找错误。

如果你启用了 selinux,那么仅用于测试目的执行命令:

setenforce permissive

完成此操作后,重新启动 Samba 和 CUPS 并尝试访问。如果这有影响,那么您可能需要查看 selinux 审计日志以更改那里的一些权限。假设您通常将 selinux 置于强制模式,则在完成测试后,使用以下命令重新启用它:

setenforce enforcing

相关内容