温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Ireport+JS处理扫描中文二维码

发布时间:2020-07-19 20:33:07 来源:网络 阅读:2837 作者:小伙伴伴 栏目:开发技术

关于JasperReport的基础应用参考:

IReport+JasperReport+Applet报表打印


应用IReport+JasperReport处理含中文二维码的思路与过程。

  1. 在报表中展现二维条码。

  2. 适应扫描器操作处理(中文转义)。

  3. 结合JS使用条码。


第一部分 在报表中展现二维条码:

    参考:iReport中产生二维条码(QR Code)

    思路:应用zxing工具包生成二维码的图形,并写入在IReport报表的图像组件中。

    步骤1:下载core.jar和javase.jar。

    步骤2:引入IReport。

    打开iReport,“工具”—“选项”—“classpath”,然后“Add JAR”,选择上面提到的两个jar文件。

    图片1:

  Ireport+JS处理扫描中文二维码  

    加入图像组件,并设定内容表达式,图片2:

    Ireport+JS处理扫描中文二维码

    图像组件的表达式内容:

    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”

    Ireport+JS处理扫描中文二维码

    此时的二维码在手机上微信进行扫描的话,可以识别的。图片4:

    Ireport+JS处理扫描中文二维码

    若基于手机作为终端的话,这样已经可以使用了,若使用扫描器进行读取的话则存在新的问题。


第二部分 适应扫描器操作处理

    扫描器处理二维条码一般会模拟键盘输入,而中文内容无法直接被键盘处理。在图片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:

Ireport+JS处理扫描中文二维码

其运行效果如图片6:

Ireport+JS处理扫描中文二维码

至此中文内容以其UTF-8编码串的内容出现在了二维码中。



第三部分 结合JS使用条码

    应用条码扫描器模拟键盘输入后,网页文本框内将会得到条码值,本例中值为“%E6%B5%8B%E8%AF%95%E6%B1%89%E5%AD%971”

    应用javascript函数decodeURIComponent即可回复其中文内容,图片7:

Ireport+JS处理扫描中文二维码



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI