溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Ireport+JS處理掃描中文二維碼

發(fā)布時間:2020-07-19 20:33:07 來源:網(wǎng)絡(luò) 閱讀:2828 作者:小伙伴伴 欄目:開發(fā)技術(shù)

關(guān)于JasperReport的基礎(chǔ)應(yīng)用參考:

IReport+JasperReport+Applet報表打印


應(yīng)用IReport+JasperReport處理含中文二維碼的思路與過程。

  1. 在報表中展現(xiàn)二維條碼。

  2. 適應(yīng)掃描器操作處理(中文轉(zhuǎn)義)。

  3. 結(jié)合JS使用條碼。


第一部分 在報表中展現(xiàn)二維條碼:

    參考:iReport中產(chǎn)生二維條碼(QR Code)

    思路:應(yīng)用zxing工具包生成二維碼的圖形,并寫入在IReport報表的圖像組件中。

    步驟1:下載core.jar和javase.jar。

    步驟2:引入IReport。

    打開iReport,“工具”—“選項”—“classpath”,然后“Add JAR”,選擇上面提到的兩個jar文件。

    圖片1:

  Ireport+JS處理掃描中文二維碼  

    加入圖像組件,并設(shè)定內(nèi)容表達式,圖片2:

    Ireport+JS處理掃描中文二維碼

    圖像組件的表達式內(nèi)容:

    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))

    即:將報表參數(shù)Code進行轉(zhuǎn)碼(處理中文亂碼問題)后進行QRCode編碼并寫入緩存的圖像對象中。

    同時,為了便于在運行時分析,我們建立1個文本框,表達式輸入為:

        new String($P{Code}.getBytes("UTF-8"), "ISO-8859-1")

    即:將報表參數(shù)Code進行轉(zhuǎn)碼結(jié)果輸入至文本框。

    

    運行效果,圖片3:參數(shù)Code輸入“測試漢字1”

    Ireport+JS處理掃描中文二維碼

    此時的二維碼在手機上微信進行掃描的話,可以識別的。圖片4:

    Ireport+JS處理掃描中文二維碼

    若基于手機作為終端的話,這樣已經(jīng)可以使用了,若使用掃描器進行讀取的話則存在新的問題。


第二部分 適應(yīng)掃描器操作處理

    掃描器處理二維條碼一般會模擬鍵盤輸入,而中文內(nèi)容無法直接被鍵盤處理。在圖片3的運行效果圖中,文本框內(nèi)顯示的亂碼內(nèi)容,就是掃描器接收反饋的內(nèi)容,即基于鍵盤輸入模擬的掃描器是無法正確處理二維碼中文內(nèi)容的。

    考慮一個曲線救國的辦法,將中文內(nèi)容的“UTF-8編碼串”轉(zhuǎn)為字符形式的“ISO-8859-1”編碼,將二維碼的編碼內(nèi)容修改為,同時加入新的文本框顯示響應(yīng)內(nèi)容:

    java.net.URLEncoder.encode(

        new String($P{Code}.getBytes("UTF-8"), "ISO-8859-1")   

    ,"ISO8859-1")

    同時為了便于調(diào)試,增加回顯文本框,表達式為:

    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處理掃描中文二維碼

至此中文內(nèi)容以其UTF-8編碼串的內(nèi)容出現(xiàn)在了二維碼中。



第三部分 結(jié)合JS使用條碼

    應(yīng)用條碼掃描器模擬鍵盤輸入后,網(wǎng)頁文本框內(nèi)將會得到條碼值,本例中值為“%E6%B5%8B%E8%AF%95%E6%B1%89%E5%AD%971”

    應(yīng)用javascript函數(shù)decodeURIComponent即可回復(fù)其中文內(nèi)容,圖片7:

Ireport+JS處理掃描中文二維碼



向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI