gpt4 book ai didi

java - iReport 中的 google.zxing 条形码生成器

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:08 28 4
gpt4 key购买 nike

我想在我的页面中放置一个条形码并可以预览它。条形码生成器是 google.zxing,我的报告工具是 iReport

但我不知道如何在iReport中配置图像的Image ExpressionExpression Class

最佳答案

两个关键的想法是首先编写一些 Java 代码来创建相关图像,然后设计报告以适本地引用此代码。也许生成图像的最简单方法是在这样的 scriptlet 中:

package com.jaspersoft.alliances.mdahlman;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;

public class QRCodeScriptlet extends JRDefaultScriptlet {
public void afterDetailEval() throws JRScriptletException {
QRCodeWriter writer = new QRCodeWriter();
BitMatrix matrix = null;
try {
matrix = writer.encode(getFieldValue("barcode_text").toString(), BarcodeFormat.QR_CODE, 256, 256);
this.setVariableValue("BarCodeImage", MatrixToImageWriter.toBufferedImage(matrix) );
} catch (WriterException e) {
e.printStackTrace();
}
}
}

这充满了硬编码的丑陋之处,但关键思想都显示出来了。然后你需要像这样定义报告:

  1. 示例查询:选择“some text”作为 barcode_text我包含这个只是为了强调我的 scriptlet 对字段名称 barcode_text 进行硬编码这一点。 (这很糟糕。)
  2. 变量:类型为 java.awt.image.BufferedImageBarCodeImage,计算 System。此名称也在 scriptlet 中进行了硬编码。 (这同样糟糕。)
  3. 添加到 iReport 的类路径:
    • 编译好的scriptlet .jar文件
    • core.jar(来自ZXing)
    • javase.jar(来自ZXing)
  4. 使用表达式 $V{BarCodeImage} 将图像元素添加到报表。

结果是您生成的 JasperReport 中的快乐二维码:

Generated QR-Code

我记得我见过的一个示例,它可以更干净地处理事情。它实际上包括一个很好的插件,因此您可以轻松地将此功能安装到 iReport 中,而无需付出太多努力。如果我能找到它,那么我会更新这篇文章。但在此之前,这至少涵盖了所有关键点。

关于java - iReport 中的 google.zxing 条形码生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7626013/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com