如何从Ruby on Rails应用程序打印(条形码)标签?

6
我在RoR中开发的第一个应用程序是为我们库存中使用的一些Kiosk触摸屏电脑而开发的。当库存工人拿起一些材料时,他会在表单中输入数量。
现在我想打印一个标签,包含客户姓名、材料描述、数量和条形码,打印在我们的Zebra打印机上。
从Ruby on Rails应用程序中如何实现呢?
  • 直接从控制器发送所需的ZPL(Zebra打印机语言)控制字符?(不是非常方便)

  • 创建一个HTML视图并将其发送到客户端,客户端必须进行打印。(不是非常方便且容易出错,因为库存工人必须执行其他步骤,可能选择错误的打印机或根本不打印标签)

  • 从控制器创建PDF文档,并从服务器将其发送到打印机(哦,不,打印机不理解PDF,所以我必须控制一个PDF阅读器来进行打印吗?这不会很快,因为它将将标签作为图像发送到打印机)

  • 创建一个gem,它将隐藏所有所需的打印逻辑?(是否有任何已经执行此操作的gem?)

我将感激每一个评论。

谢谢

Klaus


嗨@klaus,你找到解决方案了吗?我有与你在问题中提到的完全相同的要求。如果你已经找到了解决方案,请回复。谢谢。 - Jimmy Thakkar
同样对此问题的任何解决方案感兴趣。 - sshefer
4个回答

4
我会将原始的 ZPL 发送到打印机。您可以使用像Bartender这样的工具(我建议从该链接安装 Bartender Only)。您可以在此工具中设计标签。设计好标签后,您需要下载适用于您斑马打印机的 Bartender 打印机驱动程序,并使用这些驱动程序设置虚拟打印机,将您设计的标签打印到文件中。这将为您提供原始的 ZPL。然后,您可以基本上将所有动态数据替换为您在上一步中打印的 zpl 文件,并通过串行、tcp/ip 或 usb 直接将其发送到打印机。

2

编辑:在继续深入研究后,我找到了一种更好的解决方案。这篇文章已经被大幅编辑,专注于我最终使用的Java小程序解决方案。

基本上,您需要生成原始的ZPL文本作为标签。然后,您需要将纯文本传输到打印机,以生成标签。

如果您的服务器可以访问打印机的IP地址,则可以直接从服务器进程将ZPL复制到打印机。如果它是远程Web应用程序,则需要让客户端为您发送ZPL。浏览器沙盒使此操作难以实现 - 驱动程序想要有所帮助。有几个选项;最常见的是使用一个小的Java或Flash小程序来进行实际复制。如果您可以让用户使用的特定Web浏览器打印到纯文本打印机而不添加任何内容,则可以使用本地打印,但通常最可靠的方法是使用辅助Java小程序。

我用于此的Java小程序是jZebra:http://code.google.com/p/jzebra/

这是一种非常干净和简单的方法,查看下载包中的示例HTML代码,只需几行代码即可打印标签。我只是编辑了示例,并计划将其用作我的生产代码弹出窗口...它真的很简单。

使用此方法有两个注意事项:

  • 您的用户必须安装JRE
  • jZebra通过打印机名称查找Zebra打印机。有非常具体的指南(它们对Mac、Windows和Linux设置有详细说明)告诉您需要做什么 - 但它已经得到了很好的记录,您只需要让用户按照说明操作即可。一旦正确设置,它就可以正常工作。

找到了通过Flash进行此操作的选项。这是针对稍微不同的用例,其中打印机是与Web浏览器在同一局域网上的网络打印机,并且您通过网络进行打印:http://devpro.it/xmlsocket/ - Thaeli
谢谢您的有趣建议,我会在接下来的几天里仔细研究它。 - Klaus

1
更简单的解决方案,我认为也更好,通常大多数浏览器和机器都安装了PDF阅读器。因此,只需将标签创建为PDF文档并发送到浏览器即可。
我们已经按照以下方式在ROR中使用Zebra打印机实现了标签打印。
  1. 在html中创建完全格式化的标签页面。
  2. 使用wickedPDF将html转换为pdf。
通常标签也包含条形码。
因此,总体解决方案如下:
  1. 使用barbie gem创建条形码。
  2. 使用条形码和需要放在标签上的实际数据创建html。
  3. 将html视图转换为PDF。

我们可以用任何打印机来完成这个任务吗?在我的情况下,是“Brother”的打印机。 - Rima
是的,您可以使用打印机完成此操作,因为大多数打印机都提供通过PDF进行打印的功能。最终,通过这种解决方案,您将打印工作委托给了PDF查看器。 - Red Boy

0
听起来像是需要使用 Ruby C 扩展来完成的工作。也许可以同时包装类似 GNU 条形码 http://www.gnu.org/software/barcode/ 库和某些开放标准的斑马打印机?我曾经做过一个 Rails 应用程序,用到了 GNU 条形码,并且使用简单的 shell 命令进行接口交互。

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