关于JasperReport的基础应用参考:
成都创新互联公司-专业网站定制、快速模板网站建设、高性价比南充网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式南充网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖南充地区。费用合理售后完善,10余年实体公司更值得信赖。IReport+JasperReport+Applet报表打印
应用IReport+JasperReport处理含中文二维码的思路与过程。
在报表中展现二维条码。
适应扫描器操作处理(中文转义)。
结合JS使用条码。
第一部分 在报表中展现二维条码:
参考:iReport中产生二维条码(QR Code)
思路:应用zxing工具包生成二维码的图形,并写入在IReport报表的图像组件中。
步骤1:下载core.jar和javase.jar。
步骤2:引入IReport。
打开iReport,“工具”—“选项”—“classpath”,然后“Add JAR”,选择上面提到的两个jar文件。
图片1:
加入图像组件,并设定内容表达式,图片2:
图像组件的表达式内容:
com.google.zxing.client.j2se.MatrixToImageWriter.toBufferedImage(
new com.google.zxing.qrcode.QRCodeWriter().encode(
new String($P{Code}.getBytes("UTF-8"), "ISO-8859-1")
,com.google.zxing.BarcodeFormat.QR_CODE,100,100))
即:将报表参数Code进行转码(处理中文乱码问题)后进行QRCode编码并写入缓存的图像对象中。
同时,为了便于在运行时分析,我们建立1个文本框,表达式输入为:
new String($P{Code}.getBytes("UTF-8"), "ISO-8859-1")
即:将报表参数Code进行转码结果输入至文本框。
运行效果,图片3:参数Code输入“测试汉字1”
此时的二维码在手机上微信进行扫描的话,可以识别的。图片4:
若基于手机作为终端的话,这样已经可以使用了,若使用扫描器进行读取的话则存在新的问题。
第二部分 适应扫描器操作处理
扫描器处理二维条码一般会模拟键盘输入,而中文内容无法直接被键盘处理。在图片3的运行效果图中,文本框内显示的乱码内容,就是扫描器接收反馈的内容,即基于键盘输入模拟的扫描器是无法正确处理二维码中文内容的。
考虑一个曲线救国的办法,将中文内容的“UTF-8编码串”转为字符形式的“ISO-8859-1”编码,将二维码的编码内容修改为,同时加入新的文本框显示响应内容:
java.net.URLEncoder.encode(
new String($P{Code}.getBytes("UTF-8"), "ISO-8859-1")
,"ISO8859-1")
同时为了便于调试,增加回显文本框,表达式为:
java.net.URLDecoder.decode(
java.net.URLEncoder.encode(
new String($P{Code}.getBytes("UTF-8"), "ISO-8859-1")
,"ISO8859-1")
, "utf-8")
如图片5:
其运行效果如图片6:
至此中文内容以其UTF-8编码串的内容出现在了二维码中。
第三部分 结合JS使用条码
应用条码扫描器模拟键盘输入后,网页文本框内将会得到条码值,本例中值为“%E6%B5%8B%E8%AF%95%E6%B1%89%E5%AD%971”
应用javascript函数decodeURIComponent即可回复其中文内容,图片7:
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。