JasperReport中QR码集成

12

我正在使用JAVA为我的账单桌面应用程序生成JasperReport报表,但在jasper 6.0.3版本中,我无法在报表中看到QR Code图标;在预览中它显示了QR Code,但在实际报表中却没有。

请问有人能够提供关于QR Code的JAR文件和相关建议吗?

2个回答

24
我很晚才写我的答案。但我认为zxing是生成QR码的最佳开源库。在这里,我将写出如何使用Java中的zxing库生成QR码。我正在使用iReport作为设计工具。
步骤1:在iReport的类路径中添加2个jar文件(工具 > 选项 > iReport标签页 > 类路径标签页 > 添加Jar
a)来自https://mvnrepository.com/artifact/com.google.zxing/core/3.3.1zxing-core b)来自https://mvnrepository.com/artifact/com.google.zxing/javase/3.3.1zxing-javase 注意:您可以选择最新的jar。我正在使用截至当前日期的最新版本。 在类路径中添加jar的屏幕截图 步骤2:创建一个参数/字段(根据您的需求)。我正在使用一个参数,叫做qrCode
步骤3:从iReport设计器的面板中拖放一个图像(在Windows中,可通过Shift + ctrl + 8访问)。选择取消(我们不需要静态图像)。
步骤4:通过单击图像来选择该图像。您将看到右侧的属性选项卡。
a)选择Expression Classjava.awt.Image b)单击Image Expression属性。并填写表达式:
com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage(
    new com.google.zxing.qrcode.QRCodeWriter().encode(
        $P{qrCode},
        com.google.zxing.BarcodeFormat.QR_CODE, 300, 300
    )
)
< p >< em >注意:如果您想使用 < code >field 代替< code >parameter,只需在表达式中用 < code >field 替换 < code >parameter。

步骤截图

第5步:编译报告并运行。

要了解不同的用法,请查看文章“使用zxing在Java中生成QR码”


$P{qrCode}参数的数据类型是什么?它是字符串吗? - Julius Prayogo
3
是的,它是 java.lang.String 数据类型。 - Kamal Singh
为了避免“找到空内容”错误,您可以将图像打印表达式设置为$P {qrCode}!= null && $P {qrCode} .length()> 0 - kojot
我遇到了这个错误:java.lang.NoSuchMethodError: net.sf.jasperreports.engine.util.JRImageLoader.getInstance(Lnet/sf/jasperreports/engine/JasperReportsContext;)Lnet/sf/jasperreports/engine/util/JRImageLoader; at net.sf.jasperreports.engine.RenderableUtil.getRenderable(RenderableUtil.java:173) - sg552

4

最终我找到了这个问题的答案,

我们需要使用jar文件来导入内置的jasperReport QR Code。这些是生成带有Jasper报告的QR Code所需的jar文件。

enter image description here

此外,这些jar文件可用于Jasper报告,而没有任何异常情况。

然后,我们必须从Jasper报告元素中拖放QR-Code。然后,我们可以使用xml定义指定的参数。

       <componentElement>
            <reportElement x="547" y="-5" width="115" height="83" uuid="f5bf25f8-2967-4e4e-bfa2-7879a3275e1c"/>
            <jr:QRCode xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
                <jr:codeExpression><![CDATA["Customer No: " + $F{CUST_NO}]]></jr:codeExpression>
            </jr:QRCode>
        </componentElement>

这对我有效。


org.xml.sax.SAXParseException; lineNumber: 70; columnNumber: 236; cvc-complex-type.2.4.a: 在元素 'jr:QRCode' 开始处发现无效内容。应该是其中之一 '{"http://jasperreports.sourceforge.net/jasperreports":component}'。 - Irfan Nasim
我也遇到了同样的错误。有什么解决办法吗? - mou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接