5

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

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

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

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

  • 创建一个可以隐藏打印所需的所有逻辑的 gem 吗?(是否有任何宝石已经这样做了?)

我会很感激每一条评论。

谢谢

克劳斯

4

4 回答 4

4

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

于 2011-04-07T01:05:40.910 回答
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 设置的详细说明) - 但它有很好的记录,您只需要让您的用户按照说明进行操作即可。一旦设置正确,它就可以很好地工作。
于 2011-04-11T02:20:53.140 回答
1

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

我们在 ROR 中使用 Zebra 打印机实现了标签打印,方法如下。

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

通常标签也包含条形码。

所以整体解决方案是,

  1. 使用 barbie gem 创建条形码。
  2. 使用条形码和需要在标签上的实际数据创建 html。
  3. 将 html 视图转换为 PDF。
于 2013-12-07T08:33:44.053 回答
0

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

于 2011-04-06T22:32:50.463 回答