mas*_*oud 14 java barcode jasper-reports ireport zxing
我想在我的页面中放一个条形码并可以预览它.条形码生成器是google.zxing,我的报告工具是iReport.
但我不知道,如何配置Image Expression和Expression Class在iReport中的图像.
这两个关键思想首先是编写一些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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这充满了硬编码的丑陋,但关键的想法都显示出来了.然后你需要像这样定义报告:
select 'some text' as barcode_text
我将其包括在内只是为了强调我的scriptlet对字段名称进行硬编码barcode_text.(这是不好的.)BarCodeImage的类型.此名称在scriptlet中也是硬编码的.(这同样糟糕.)java.awt.image.BufferedImageSystem$V{BarCodeImage}.结果是生成的JasperReport中的快乐QR码:

我记得一个我见过的样本,它做得更干净.它实际上包含一个很好的插件,因此您可以轻松地将此功能轻松地安装到iReport中.如果我可以追踪到这一点,那么我将更新这篇文章.但在此之前,这至少涵盖了所有关键点.
| 归档时间: |
|
| 查看次数: |
10827 次 |
| 最近记录: |