2012-01-17 55 views
6

库/工具使用: 1)碧玉报告 2)iReport的 3)的Java碧玉报告 - 自定义条码生成

我已经产生了一些标准条码为我的报告,但这个时候,我试图生成一个自定义条形码,为此我有一个字体文件custom-barcode.ttf。截至目前,iReport支持2个条形码库 - Barcode4j和Barbecue,它们不支持我需要的自定义条形码。任何想法开始,没有太多的开销使用一些新的库(我已经使用Barcode4j)?

顺便说一句,我知道类似的问题(custom barcode font)已经在这个网站上。

+0

如果您有custom-barcode.ttf,那么就像在报告中使用文本元素并使用此字体一样简单? – mdahlman 2012-01-17 19:02:11

+0

mdahlman,我通过iReport设计器安装字体并将文本字段拖放到报告并设置pdfEmbedded属性之前查看了此内容。我的尝试并不完整,但不知何故,这没有意义。无论如何,我会再试一次并回复你。 – bchetty 2012-01-17 19:17:04

回答

2

刚刚尝试@ mdahlman的答案,它的工作。我使用barcode39 font(免费)和Jaspersoft烧烤产生值"CODE123"Sample Barcode

使用字体设置大小不是很容易,但结果是相同的。我使用我的Android手机上的条码扫描器验证了条码(可以看到它在视觉上也类似)。这个原因对我有用,可能同样的原因@ bchetty的测试不起作用,是因为Barcode39没有检查位。这是一个1对1的翻译,除了在数据后面加上前导和尾随星号(*)。如果你想使用ttf来生成一个带有校验位的条形码类型,那么你需要一个函数(如你所提到的外部jar)来对它进行编码。 Barcode39不需要功能,因为它只是"*" + V${data} + "*"

+0

我没有验证你的答案,但我知道你说的是正确的。所以,选择你的答案作为答案。谢谢。 :) – bchetty 2012-05-11 22:39:43

1

鉴于您有自定义barcode.ttf,它可以被视为文本。所以,你的步骤是这样的:

  1. 创建iReport的字体扩展定制barcode.ttf。
  2. 使用相关表达式在报告中创建文本字段。
  3. 将文本字段的字体设置为“自定义条形码”(或任何您称之为字体扩展名)。播放字体大小以获得所需的输出。

对条形码使用自定义字体可能被认为是一种黑客行为。但它在简单性方面缺乏灵活性。

+0

mdahlman,我的客户的要求已更改。所以,我无法开始工作。所以,对于迟到的回应感到抱歉。无论如何,我想要这个答案,因此赏金。我只是试过这个,它的工作。所以,非常感谢你的答案。我在尝试这个问题之前就试过了,但不知何故,我无法在预览中看到条形码,因为我预览了HTML。我将其更改为PDF预览,并且工作正常。 :) – bchetty 2012-02-13 20:17:19

+0

mdahlman,我有机会使用条形码扫描仪测试它,并使用上述逻辑生成的条形码无法识别。所以,这不是答案。我一直想知道这一点,就好像生成条形码很容易,为什么有人会使用大量的jar文件作为依赖关系来生成条形码?无论如何,上面的逻辑会生成某种条形码(因为字体),但它不是真的可以被机器读取。 – bchetty 2012-02-17 11:37:17

+0

使用字体生成条形码确实是一种破解(正如我之前提到的)。如果您将文本设为粗体或斜体怎么办?这对条形码没有意义。如果HTML客户端没有这种字体(几乎总是这样),该怎么办?那么你不能在HTML中使用它。更清洁的解决方案是生成图像。这就是barcode4j和烧烤和ZXing这样做的原因。但这是一个不同的工作级别(Java编码)。考虑到你有一个声称生成条形码的.ttf的起点......那么你需要将它应用到文本字段。 – mdahlman 2012-02-20 15:29:34