2

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

4

6 回答 6

3

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

于 2009-10-15T23:50:19.810 回答
3

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

  1. 烧烤条形码对象不必要地与 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 以将其扩展到其他打印机语言

于 2012-06-14T08:28:50.927 回答
2

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

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

于 2009-09-29T14:14:36.333 回答
1

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

于 2009-08-20T17:45:57.597 回答
0

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

于 2009-08-20T13:43:50.777 回答
0

你应该试试 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

关于斑马

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

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

于 2012-09-06T03:23:53.283 回答