【问题标题】:Java print barcode labelsJava 打印条码标签
【发布时间】:2009-08-20 13:19:58
【问题描述】:

有人可以指出使用 Java 打印条形码标签的正确方向吗?我可以使用烧烤库 (http://barbecue.sourceforge.net/) 将它们生成为图像的条形码,但我需要一种方法将图像(和人类可读的标题)放入 Avery 文档模板中进行打印。

【问题讨论】:

标签: java templates printing label barcode


【解决方案1】:

iText 库支持几乎所有可以想象的条形码。您可以生成 pdf 并保存或在内部打印。

【讨论】:

    【解决方案2】:

    我建议使用barcode4j 库而不是烧烤,原因有两个:

    1. Barbecue 条形码对象不必要地与 Java UI 组件耦合(例如 Barcode 类扩展了 JComponent)。如果未使用 Java UI,这会创建不必要的依赖关系,例如用于基于批处理或命令行的应用程序。如果他们想在 Java UI 中使用他们的条形码类,他们应该使用聚合而不是继承。

    2. Barcode4J 看起来目前受支持 - 版本 2.0 已发布,版权日期为 2012 年

    然后,您将遇到将条形码转换为您的打印机可以理解的格式的问题。为此,我建议 openlabelprint.org (我写的!) - 这是另一个使用barcode4j 并提供的开源项目:

    • 使用 SVG(可缩放矢量图形 - 一种开放的 w3c 标准)和

    • 定义标签布局的工具
    • 从barcode4j 光栅化到SVG 的位图(以及SVG 中的周围标签布局)(openlabelprint 将优秀的Apache SVG Batik Java 库应用于光栅化以及其他SVG 任务)

      李>
    • 使用 ZPL 低级语言在 Zebra 打印机上打印位图。 openlabelprint 有一个内置实用程序,可将 png 位图转换为 ZPL,并通过标准 Java 打印机系统将其发送到 Zebra 打印机。尽管某些非 Zebra 品牌支持 ZPL,但 openlabelprint 还提供 API 以将其扩展到其他打印机语言

    【讨论】:

      【解决方案3】:

      我正在使用 java 打印条形码,但我使用的打印机具有用于打印条形码的预编程功能。所以我只是告诉打印机要打印什么代码,其余的由它来完成。如果您愿意为打印机付费,它可能会为您节省一些时间。

      这可能对你有用也可能没用,但我想我会提到它。

      【讨论】:

        【解决方案4】:

        我认为您必须用尺子测量您的 Avery 标签页,然后在您的 Java 代码中,您必须创建一个完整的 Letter/A4/任何页面来打印并将该页面上的条形码图像偏移到适当的位置根据您用尺子测量的位置。

        【讨论】:

        • 他们经常使用 Avery 公司,因为它是标准尺寸。这些数字应该已经为您写在某个地方,但无论如何,测量它们应该有效!
        【解决方案5】:

        您是否尝试过打印从“烧烤”获得的图像?

        【讨论】:

        • 我可以打印,但无法打印到模板上的特定位置(至少我知道)。
        【解决方案6】:

        你应该试试 JZebra 这是一个小程序,对你来说是一个很好的起点,看看 java 源代码。

        http://code.google.com/p/jzebra/

        对于斑马,这个简单的指南将为您提供帮助。 关于这个 Zebra 命令

        N
        q609
        Q203,26
        B26,26,0,UA0,2,2,152,B,"777777"
        A253,56,0,3,1,1,N,"JHON3:16"
        A253,26,0,3,1,1,N,"JESUSLOVESYOU"
        A253,86,0,3,1,1,N,"TEST TEST TEST"
        A253,116,0,3,1,1,N,"ANOTHER TEST"
        A253,146,0,3,1,1,N,"SOME LETTERS"
        P1,1
        

        在 JZebra 上

             var applet = document.jzebra;
             if (applet != null) {
        applet.append("N\n");
        applet.append("q609\n");
        applet.append("Q203,26\n");
         applet.append("B26,26,0,UA0,2,2,152,B,\"777777\"\n");
        applet.append("A253,56,0,3,1,1,N,\"JHON3:16\"\n");
        applet.append("A253,26,0,3,1,1,N,\"JESUSLOVESYOU\"\n");
        applet.append("A253,86,0,3,1,1,N,\"TEST TEST TEST\"\n");
        applet.append("A253,116,0,3,1,1,N,\"ANOTHER TEST\"\n");
        applet.append("A253,146,0,3,1,1,N,\"SOME LETTERS\"\n");
        applet.append("P1,1\n");}
        

        明确这一点:

        EPL 是每行一个命令。一个命令以一个命令标识符开始,通常是一个字母,后跟一个逗号分隔的特定于该命令的参数列表。您可以在 EPL2 编程文档中查找这些命令中的每一个。这是上例中命令的英文版本。

        1. 发送初始换行可确保任何先前的 命令已提交。
        2. [N] 清除图像缓冲区。这是重要的一步 通常应该是任何 EPL 文档中的第一个命令; 谁知道上一个作业让打印机处于什么状态。
        3. [q] 将标签宽度设置为 609 点(3 英寸标签 x 203 dpi = 609 点宽)。
        4. [Q] 将标签高度设置为 203 点(1 英寸标签),使用 26 标签之间的点间距。 (打印机可能会自动 有道理,但这并没有什么坏处。)
        5. [B] 绘制值为“777777”的 UPC-A 条码 x = 26 点(1/8 英寸),y = 26 点(1/8 英寸),带窄条 宽度为 2 点,高度为 152 点(3/4 英寸)。 (这 标签坐标系的原点是左上角 标签。)
        6. [A] 在以下位置绘制文本“JESUSLOVESYOU” x = 253 点(3/4 英寸),y = 26 点(1/8 英寸) 打印机字体“3”,正常水平和垂直缩放, 也没有花哨的黑白效果。

        所有的起跑线都是相似的。 10. [P] 一张标签打印一份。

        【讨论】:

          猜你喜欢
          • 2018-09-29
          • 2010-09-14
          • 1970-01-01
          • 1970-01-01
          • 2019-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-09-27
          相关资源
          最近更新 更多