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

时间:2011-04-03 14:33:43

标签: ruby-on-rails printing barcode zebra-printers

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

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

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

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

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

我很感激每一条评论。

由于

克劳斯

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

编辑:当我继续深入研究时,我发现了一个更好的解决方案。这是非常重要的编辑,专注于我最终使用的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设置的详细说明),您需要做什么 - 但它有详细记录,您只需要让您的用户按照说明进行操作。一旦设置正确,它就会很棒。

答案 2 :(得分:1)

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

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

  1. 在html中创建确切的格式标签页。
  2. 使用wickedPDF将html转换为pdf。
  3. 通常标签也包含条形码。

    总体解决方案是,

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

答案 3 :(得分:0)

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