zoukankan      html  css  js  c++  java
  • 杰表打印跟乱码修改

            思路:将字符串使用jquery.qrcode.min.js转换为二维码。--  该出需要注意,如果要打印那二维码需要是<img>。否则只在页面显示,通过杰表打印的时候内容是空白的。
    在转换的时候遇到中文无法转换,和转换后识别为乱码的问题。最终的解决方法是引入js如下:
           <script type="text/javascript"
        src="${ctxStatic }/jquery/jquery-1.9.1.min.js"></script>
     <script type="text/javascript"
        src="${ctxStatic }/jquery/jquery.qrcode.min.js"></script>
    //   Object 引入杰表控件
    <OBJECT ID="jatoolsPrinter"
                CLASSID="CLSID:B43D3361-D075-4BE2-87FE-057188254255"
                codebase="jatoolsPrinter.cab#version=8,6,0,0"> </OBJECT>


    //  构建一个<div> 用于显示二维码测试,正式环境需要隐藏该div
    <div id="pageLoop"</>

    <script type="text/javascript">
            /* 该功能只能在IE浏览器中使用  */
                var arrayList = new Array("PS4手柄-016", "Wfgcomputer-645",
                        "四孔风机-014", "酷柏-038");  // 该出是测试多个二维码显示
                var oPageLoop = document.getElementById("pageLoop")
                for (var i = 0; i < arrayList.length; i++) {
                    $("#pageLoop")
                            .append(
                                    "<div id='page"
                                            + (i + 1)
                                            + "' style='150px;'><div style='font-size:10px;float:right;padding-left:2px;padding-top:10px;padding-right:5px;padding-bottom:5px;'>"
                                            + arrayList[i] + "</div></div>");

                }


    //用于转换为二维码 并将canvas转换为<img>  解决在打印预览界面显示内容为空的情况

                 for (var i = 0; i < arrayList.length; i++) {
                    jQuery('#page'+(i+1)).qrcode({ 50,height:50,text:toUtf8(arrayList[i])});  
                 var canvas = $('#page'+(i+1)+' canvas');
                var img = canvas[0].toDataURL("image/png");
                $('#page'+(i+1)).append("<img src='" + img + "'>");
                canvas.remove();
                }  



    //解决中文乱码问题

    function toUtf8(str) {
                    var out, i, len, c;
                    out = "";
                    len = str.length;
                    for (i = 0; i < len; i++) {
                        c = str.charCodeAt(i);
                        if ((c >= 0x0001) && (c <= 0x007F)) {
                            out += str.charAt(i);
                        } else if (c > 0x07FF) {
                            out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
                            out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
                            out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
                        } else {
                            out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
                            out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
                        }
                    }
                    return out;
                }

    //  杰表打印
    function print() {
                    var myDoc = {
                        settings : {
                            topMargin : 1,
                            leftMargin : 50,
                            bottomMargin : 1,
                            rightMargin : 50, // 单位是1/10 mm
                            orientation : 1
                        // 2横向  1纵向

                        },
                        documents : document, // 打印页面(div)们在本文档中  
                        copyrights : '杰创软件拥有版权  www.jatools.com' // 版权声明必须  
                    };
                    //jatoolsPrinter.printPreview(myDoc, false);print
                    jatoolsPrinter.printPreview(myDoc);
                }
  • 相关阅读:
    javaScript的一些兼容性问题
    JavaScript的基本规范
    数组去重的方法有哪些?
    封装on emit off方法(observer)
    对数据进行单元格合并处理的函数
    判断浏览器的内核的函数方法
    bootstrap与vue的区别是什么?(十七)
    Redis介绍及使用(八)
    mysql常用sql语法
    idea使用maven下载jar包,出现证书校验问题问题,unable to find valid certification path to requested target
  • 原文地址:https://www.cnblogs.com/a6948076/p/10006948.html
Copyright © 2011-2022 走看看