无法通过远程桌面直接打印到 Mac 上的 Zebra

无法通过远程桌面直接打印到 Mac 上的 Zebra

让我解释一下我通常的部署。我有一些使用 Windows 的客户,他们有 Zebra 打印机。

我们使用通用/文本打印机驱动程序在本地安装这些打印机。

他们通过远程桌面连接到我的 Windows 2008 服务器。我的应用程序将原始 ZPL II 代码(文本)发送到打印机驱动程序,一切正常。

我现在有一位客​​户使用 MacOSX Yosemite 10.10.3。他使用 Microsoft 远程桌面应用程序进行连接。我可以在打印机列表中看到 Zebra 打印机。当我的应用程序打印到打印机驱动程序时,Mac 后台打印显示“无法转换 PostScript 文件”。这是“正常”的,因为我将原始文本发送到打印机。

无法转换 PostScript 文件

然后,我尝试在 MacOS 中添加 Raw 打印机,但它没有显示在远程桌面中。

我应该怎么办?

答案1

OSX 上没有通用文本打印机。OSX
在操作系统级别将每台打印机内部视为 PostScript。然后将 PostScript 输出转换为打印机所需的任何语言(在您的情况下为 ZPLII)。

因此,远程桌面应用程序会在 OSX 上看到“postscript”打印机,并将其传达给您的 Windows 服务器。(Windows 通常将其视为“MS ImageSetter 设备”,这是一种通用的 Postscript 打印机。)

您的应用程序会忽略这一点,并无论如何将 RAW ZPLII 推送到 Mac,但 Mac 期望接收 Postscript,因此当它尝试解释 Postscript 文件(实际上不是 Postscript,而是 ZPLII)时会出现错误消息。

这很糟糕,因为你真的没有简单的方法来解决这个问题。

如果客户打印机是网络打印机(我似乎记得 GXxxxt 型号有常规的 Zebra LAN 接口),您可能能够向客户提供原始 ZPL 文件,并让客户使用老旧的 lpr 命令手动将其发送到打印机。客户必须在终端的命令行上运行类似这样的命令:

lpr -H <ip-address printer> -P PORT1LF -l <filename of ZPL-file>

请注意:-H 和 -P 区分大小写!!“-l”是小写的 L。
-H(主机名)指定打印机的 IP 地址,-P 指定队列名称,-l 表示“文件已格式化,不要触碰内容”。

请注意 (2):PORT1LF 是 Zebra LAN 接口内部使用的正常队列名称。如果 Zebra 不使用 Zebra LAN 接口,而是使用其他品牌,则通常需要对 -P 参数使用“auto”或“text”。请参阅手册。

经过一些研究后添加了编辑
在 OSX 上,你可以使用命令行 lpadmin 工具或使用 CUPS 网页界面创建所谓的“RAW”打印队列http://本地主机:631
但是,此类 RAW 打印机不会在 OSX 中显示为常规打印机,因为 OSX GUI 应用程序绝对需要打印机支持 Postscript。对于非 Postscript 打印机,CUPS 提供了一个 Postscript 转换器,可将 Postscript 转换为非 Postscript 打印机可以理解的内容。
对于 RAW 打印机,无法将其转换为 Postscript,因此 RAW 打印机不会作为有效的打印设备提供给 OSX GUI 应用程序。(它们可以与命令行打印工具(如 lpq、lpr 等)一起使用。)
这就是为什么 OSX 上没有 RDP 客户端转发它们的原因!他们只转发常规打印机。
(从技术上讲,没有理由 RDP 客户端不能通过 RDP 将 RAW 打印机(使用老式 unix lpr/lpq 处理)作为“通用/纯文本”打印机呈现给 Windows。但这需要额外的编程才能实现。鉴于这种特定用途非常小众,我不会很快看到这种情况发生。)

据我所知,您唯一的解决方法就是我已经提到的方法。将文件提供给用户,让他使用 lpr 在本地打印。
打印机是 USB 连接的,但这没问题。使用 CUPS Web 界面,您可以将 USB 打印机设置为原始打印队列。此网页的一部分添加原始打印队列,只需要步骤3至7解释了如何做到这一点。它甚至用斑马作为例子。

答案2

我想我已经找到答案了。

您必须下载此应用程序: https://www.peninsula-group.com/labeller-thermal-labelling-software/

运行演示版本并从中安装打印机。

之后,你将驱动程序从最初的 zebra 更改为新驱动程序(来自 peninsula-group.com 的 9.1.14)

此致

相关内容