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

我在RoR开发的第一个应用程序是我们库存中使用的一些Kiosk触摸屏PC。 当库存工人拿起一些材料时,他在表格中输入数量。
现在我想在Zebra打印机上打印一个标签,其中包含:客户名称,材料描述,数量和条形码。
我如何从Ruby on Rails应用程序中做到这一点?

  • 从控制器直接发送ZPL(Zebra打印机语言)所需的控制字符? (不是很舒服)

  • 在HTML中创建一个视图将其发送到客户端,客户端必须打印它。 (不是很容易和容易出错,因为库存工人必须做额外的步骤,可能选择错误的打印机或根本不打印标签)

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

  • 创建一个gem,它将隐藏打印所需的所有逻辑? (有没有gem已经这样做?)

我很感激每一条评论。

谢谢

克劳斯

我会将原始ZPL发送到打印机。 您可以使用像Bartender这样的工具(我建议只从该链接安装Bartender。您基本上可以在此工具中设计您的标签。在设计标签后,您将为斑马打印机下载调酒打印机驱动程序并设置带有这些驱动程序的虚拟打印机并打印你为文件设计的这个标签。这将为你提供原始zpl。从这里你基本上可以将所有动态数据替换为你在上一步中打印的zpl文件并直接发送到打印机通过串口,TCP / IP或USB。

编辑:我发现了一个更好的解决方案,因为我继续挖掘这个。 这是非常重要的编辑,专注于我最终使用的Java applet解决方案。

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

如果您的服务器可以访问打印机的IP地址,您可以直接从服务器进程将ZPL复制到打印机。 如果它是一个远程Web应用程序,您需要让客户端为您发送ZPL。 浏览器沙盒使这很难实现 – 驱动程序希望有助于阻碍。 有几种选择; 最常见的是使用小型Java或Flash小程序来进行实际复制。 如果您可以使用用户在不添加任何内容的情况下打印到纯文本打印机的特定Web浏览器,则可以使用本地打印,但通常最强大的方法是使用辅助Java小程序。

我用的Java applet是jZebra: http : //code.google.com/p/jzebra/

这是一个非常简洁明了的方法,请查看下载包中的示例HTML以及几行代码打印标签。 我刚刚编辑了样本,并计划将其用作我的生产代码弹出窗口……这真的很简单。

这种方法有两点需要注意:

  • 您的用户必须安装JRE
  • jZebra通过打印机名称找到Zebra打印机。 有非常具体的指南(他们有关于Mac,Windows和Linux设置的详细说明),您需要做什么 – 但它有详细记录,您只需要让您的用户按照说明进行操作。 一旦设置正确,它就会很好用。

更简单的解决方案,我相信也更好,通常大多数浏览器和机器都安装了PDF查看器。 因此,只需将标签创建为PDF文档并将其发送到浏览器即可。

我们已经在ROR中使用Zebra打印机实现了标签打印。

  1. 在html中创建精确的格式标签页面。
  2. 使用wickedPDF将html转换为pdf。

通常标签也包含条形码。

总体解决方案是,

  1. 使用芭比gem创建条形码。
  2. 使用条形码和需要标记的实际数据创建html。
  3. 将html视图转换为PDF。

听起来像rubyC扩展的工作。 也许还包括像gnu条形码http://www.gnu.org/software/barcode/库和斑马打印机的其他一些开放标准(如果存在的话)? 我曾经做过一个使用优惠券并大量使用gnu条形码的rails应用程序,但我做了简单的shell命令来连接它。