【问题标题】:QR Code integration in jasperReportjasperReport 中的二维码集成
【发布时间】:2015-04-22 01:37:39
【问题描述】:

我正在使用 JAVA 为我的计费桌面应用程序生成 JasperReport,但是在 jasper 6.0.3 版本的报告中看不到二维码图标;在预览中它显示的是二维码,但不是在真实报告中。

任何人都可以提出这个想法和二维码 JAR 文件吗?

【问题讨论】:

    标签: jasper-reports qr-code


    【解决方案1】:

    我写我的答案很晚。但我认为zxing是最好的生成二维码的开源库。在这里,我正在写如何使用 Java 中的 zxing 库生成 QR 码。我正在使用 iReport 作为设计工具。

    第一步:在iReport的类路径中添加2个jar文件(Tools > Options > iReport Tab > Classpath Tab > 添加罐子)

    a) zxing-core 来自 https://mvnrepository.com/artifact/com.google.zxing/core/3.3.1

    b) zxing-javase 来自 https://mvnrepository.com/artifact/com.google.zxing/javase/3.3.1

    注意:您可以选择最新的 jar。我正在使用最新的日期

    Screen shot of adding jar in class path

    第 2 步:创建参数/字段(根据您的需要)。我正在使用一个参数。让我们称之为 qrCode

    第 3 步:从 iReport 设计器的调色板面板拖放图像(在 windows 中可通过Shift + ctrl + 8 访问)。并选择Cancel(我们不想要静态图片)。

    第 4 步:通过单击选择图像。您将在右侧看到属性选项卡。

    a) 选择 Expression Class 作为 java.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
        )
    )
    

    注意:如果你想使用field 而不是parameter,只需将表达式中的parameter 替换为field

    Screen shot of steps

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

    要了解不同的用法,请查看帖子Generate QR code in Java using zxing

    【讨论】:

    • 什么是 $P{qrCode} 参数数据类型?是字符串吗?
    • @Julius Prayogo 是的,它属于 java.lang.String 数据类型。
    • 为避免Found empty contents 错误,您可以将图像打印时表达式设置为$P{qrCode} != null && $P{qrCode}.length() > 0
    • 我收到此错误: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)
    【解决方案2】:

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

    我们需要使用jar文件来导入内置的jasperReport二维码 这些是使用 Jasper 报告生成 QR 码的 jar 文件。

    这个 jar 文件也适用于 jasper 报告,没有任何例外。

    然后我们必须从碧玉报告元素中拖放二维码。然后我们可以使用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>
    

    它对我有用。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多