Java Jasper报告-自定义条形码生成

Java Jasper报告-自定义条形码生成,java,jasper-reports,ireport,barcode,Java,Jasper Reports,Ireport,Barcode,使用的库/工具: 1) 贾斯珀报道 2) iReport 3) 爪哇 我已经为我的报告生成了一些标准条形码,但这次,我尝试生成一个自定义条形码,其中有一个字体文件custom-barcode.ttf。到目前为止,iReport支持2个条形码库——Barcode4j和Barbike,它们不支持我需要的自定义条形码。有什么想法可以开始使用,而不需要使用一些新的库(我已经在使用Barcode4j了) 顺便说一句,我知道这个网站上已经存在一个类似的问题()。鉴于你有custom-barcode.ttf,

使用的库/工具: 1) 贾斯珀报道 2) iReport 3) 爪哇

我已经为我的报告生成了一些标准条形码,但这次,我尝试生成一个自定义条形码,其中有一个字体文件custom-barcode.ttf。到目前为止,iReport支持2个条形码库——Barcode4j和Barbike,它们不支持我需要的自定义条形码。有什么想法可以开始使用,而不需要使用一些新的库(我已经在使用Barcode4j了)


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

鉴于你有custom-barcode.ttf,它实际上可以被视为文本。因此,您的步骤如下所示:

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

  • 为条形码使用自定义字体可能会被认为是一种黑客行为。但它在灵活性上的不足在于它的简单性。

    刚刚尝试了@mdahlman的答案,它成功了。我使用(免费)和Jaspersoft烧烤生成了值
    “CODE123”


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

    如果您有custom-barcode.ttf,那么它是否像在报告中放入文本元素并使用此字体一样简单,之前,我通过iReport designer安装字体,将文本字段拉到报表上,并设置pdfEmbedded属性来研究这个问题。我的尝试还没有完成,但不知怎么的,那没有意义。不管怎样,我会再试一次,然后再打给你。mdahlman,我客户的要求改变了。所以,我没法做这件事。所以,很抱歉反应太晚。不管怎么说,我想得到一个答案,从而得到赏金。我刚试过这个,效果很好。所以,非常感谢你的回答。在我对这个问题悬赏之前我也试过了,但不知怎么的,我在预览中看不到条形码,因为我没有看到HTML预览。我把它改为PDF预览版,效果很好。:)mdahlman,我有机会用条形码扫描器对其进行测试,使用上述逻辑生成的条形码是无法理解的。所以,这不是答案。我一直想知道这一点,就好像生成条形码那么容易,为什么有人会使用大量的jars文件作为依赖项来生成条形码?无论如何,上面的逻辑生成某种条形码(因为字体),但机器无法真正读取。使用字体生成条形码确实是一种黑客行为(正如我最初提到的)。如果您将文本设置为粗体或斜体,该怎么办?这对条形码没有意义。如果HTML客户端没有这种字体(几乎总是这样),该怎么办?那么您不能在HTML中使用它。一个更干净的解决方案是生成图像。这就是为什么barcode4j、烧烤和ZXing这样做的原因。但这是一个不同的工作级别(Java编码)。考虑到你有一个.ttf的起点,它声称可以生成条形码。。。然后你需要将它应用到一个文本字段。我没有验证你的答案,但我知道你说的是正确的。所以,选择您的答案作为答案。谢谢。:)