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

關於JasperReport的基礎應用參考:javascript

IReport+JasperReport+Applet報表打印
html


應用IReport+JasperReport處理含中文二維碼的思路與過程。java

  1. 在報表中展示二維條碼。緩存

  2. 適應掃描器操做處理(中文轉義)。
    微信

  3. 結合JS使用條碼。ide


第一部分 在報表中展示二維條碼:函數

    參考:iReport中產生二維條碼(QR Code)工具

    思路:應用zxing工具包生成二維碼的圖形,並寫入在IReport報表的圖像組件中。測試

    步驟1:下載core.jarjavase.jargoogle

    步驟2:引入IReport。

    打開iReport,「工具」—「選項」—「classpath」,而後「Add JAR」,選擇上面提到的兩個jar文件。

    圖片1:

  wKiom1gpeA7ClTKEAAEF7vjEgxc192.png-wh_50  

    加入圖像組件,並設定內容表達式,圖片2:

    wKiom1gpeA-hdpvGAAEg7GcKMlQ824.png-wh_50

    圖像組件的表達式內容:

    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」

    wKioL1gpeBDSmz71AAC2-NVGW9I941.png-wh_50

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

    wKioL1gpeaXgRDqUAACPm2O__ZU998.png-wh_50

    若基於手機做爲終端的話,這樣已經能夠使用了,若使用掃描器進行讀取的話則存在新的問題。


第二部分 適應掃描器操做處理

    掃描器處理二維條碼通常會模擬鍵盤輸入,而中文內容沒法直接被鍵盤處理。在圖片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:

wKiom1gpeBHACjmoAAC2hll0TDA696.png-wh_50

其運行效果如圖片6:

wKioL1gpeBHzvvW2AADjdhwnYBo235.png-wh_50

至此中文內容以其UTF-8編碼串的內容出如今了二維碼中。



第三部分 結合JS使用條碼

    應用條碼掃描器模擬鍵盤輸入後,網頁文本框內將會獲得條碼值,本例中值爲「%E6%B5%8B%E8%AF%95%E6%B1%89%E5%AD%971」

    應用javascript函數decodeURIComponent便可回覆其中文內容,圖片7:

wKiom1gpeBKzT_x1AABcjXblRVk476.png-wh_50

相關文章
相關標籤/搜索