• 技术文章 >web前端 >Vue.js

    实例讲解vue如何实现打印小票

    藏色散人藏色散人2022-11-13 16:46:05转载333
    vue也能实现打印小票?那具体怎么实现呢?下面就带大家详细了解一下怎么通过安装 lodop 打印控件,实现打印小票,本文附有详细实例代码哦,希望对需要的朋友大家有所帮助,欢迎学习!

    大前端成长进阶课程:进入学习

    vue实现打印小票

    lodop 打印控件

    安装 lodop 打印控件(学习视频分享:vue视频教程

    lodop地址: http://www.c-lodop.com/download.html

    LodopFuncs.js 引入项目

    //==本JS是加载Lodop插件或Web打印服务CLodop/Lodop7的综合示例,可直接使用,建议理解后融入自己程序==
    
    //用双端口加载主JS文件Lodop.js(或CLodopfuncs.js兼容老版本)以防其中某端口被占:
    
    var  MainJS  =  "CLodopfuncs.js",
    
     URL_WS1  =  "ws://localhost:8000/"  +  MainJS,                //ws用8000/18000
    
     URL_WS2  =  "ws://localhost:18000/"  +  MainJS,
    
     URL_HTTP1  =  "http://localhost:8000/"  +  MainJS,              //http用8000/18000
    
     URL_HTTP2  =  "http://localhost:18000/"  +  MainJS,
    
     URL_HTTP3  =  "https://localhost.lodop.net:8443/"  +  MainJS; //https用8000/8443
    
    var  CreatedOKLodopObject, CLodopIsLocal, LoadJsState;
    
    //==判断是否需要CLodop(那些不支持插件的浏览器):==
    
    export  function  needCLodop() {
    
     try {
    
     var  ua  =  navigator.userAgent;
    
     if (ua.match(/Windows\sPhone/i) ||
    
     ua.match(/iPhone|iPod|iPad/i) ||
    
     ua.match(/Android/i) ||
    
     ua.match(/Edge\D?\d+/i))
    
     return  true;
    
     var  verTrident  =  ua.match(/Trident\D?\d+/i);
    
     var  verIE  =  ua.match(/MSIE\D?\d+/i);
    
     var  verOPR  =  ua.match(/OPR\D?\d+/i);
    
     var  verFF  =  ua.match(/Firefox\D?\d+/i);
    
     var  x64  =  ua.match(/x64/i);
    
     if ((!verTrident) && (!verIE) && (x64)) return  true;
    
     else  if (verFF) {
    
     verFF  =  verFF[0].match(/\d+/);
    
     if ((verFF[0] >=  41) || (x64)) return  true;
    
    } else  if (verOPR) {
    
     verOPR  =  verOPR[0].match(/\d+/);
    
     if (verOPR[0] >=  32) return  true;
    
    } else  if ((!verTrident) && (!verIE)) {
    
     var  verChrome  =  ua.match(/Chrome\D?\d+/i);
    
     if (verChrome) {
    
     verChrome  =  verChrome[0].match(/\d+/);
    
     if (verChrome[0] >=  41) return  true;
    
                }
    
            }
    
     return  false;
    
    } catch (err) {
    
     return  true;
    
        }
    
    }
    
    //==检查加载成功与否,如没成功则用http(s)再试==
    
    //==低版本CLODOP6.561/Lodop7.043及前)用本方法==
    
    export  function  checkOrTryHttp() {
    
     if (window.getCLodop) {
    
     LoadJsState  =  "complete";
    
     return  true;
    
        }
    
     if (LoadJsState  ==  "loadingB"  ||  LoadJsState  ==  "complete") return;
    
     LoadJsState  =  "loadingB";
    
     var  head  =  document.head  ||  document.getElementsByTagName("head")[0] ||  document.documentElement;
    
     var  JS1  =  document.createElement("script")
    
    , JS2  =  document.createElement("script")
    
    , JS3  =  document.createElement("script");
    
     JS1.src  =  URL_HTTP1;
    
     JS2.src  =  URL_HTTP2;
    
     JS3.src  =  URL_HTTP3;
    
     JS1.onload  =  JS2.onload  =  JS3.onload  =  JS2.onerror  =  JS3.onerror  =  function () { LoadJsState  =  "complete"; }
    
     JS1.onerror  =  function (e) {
    
     if (window.location.protocol  !==  'https:')
    
     head.insertBefore(JS2, head.firstChild); else
    
     head.insertBefore(JS3, head.firstChild);
    
        }
    
     head.insertBefore(JS1, head.firstChild);
    
    }
    
    //==加载Lodop对象的主过程:==
    
    (function  loadCLodop() {
    
     if (!needCLodop()) return;
    
     CLodopIsLocal  =  !!((URL_WS1  +  URL_WS2).match(/\/\/localho|\/\/127.0.0./i));
    
     LoadJsState  =  "loadingA";
    
     if (!window.WebSocket  &&  window.MozWebSocket) window.WebSocket  =  window.MozWebSocket;
    
     //ws方式速度快(小于200ms)且可避免CORS错误,但要求Lodop版本足够新:
    
     try {
    
     var  WSK1  =  new  WebSocket(URL_WS1);
    
     WSK1.onopen  =  function (e) { setTimeout("checkOrTryHttp();", 200); }
    
     WSK1.onmessage  =  function (e) { if (!window.getCLodop) eval(e.data); }
    
     WSK1.onerror  =  function (e) {
    
     var  WSK2  =  new  WebSocket(URL_WS2);
    
     WSK2.onopen  =  function (e) { setTimeout("checkOrTryHttp();", 200); }
    
     WSK2.onmessage  =  function (e) { if (!window.getCLodop) eval(e.data); }
    
     WSK2.onerror  =  function (e) { checkOrTryHttp(); }
    
            }
    
    } catch (e) {
    
     checkOrTryHttp();
    
        }
    
    })();
    
    //==获取LODOP对象主过程,判断是否安装、需否升级:==
    
    export  function  getLodop(oOBJECT, oEMBED) {
    
     var  strFontTag  =  "<br><font color='#FF00FF'>打印控件";
    
     var  strLodopInstall  =  strFontTag  +  "未安装!点击这里<a href='install_lodop32.exe' target='_self'>执行安装</a>";
    
     var  strLodopUpdate  =  strFontTag  +  "需要升级!点击这里<a href='install_lodop32.exe' target='_self'>执行升级</a>";
    
     var  strLodop64Install  =  strFontTag  +  "未安装!点击这里<a href='install_lodop64.exe' target='_self'>执行安装</a>";
    
     var  strLodop64Update  =  strFontTag  +  "需要升级!点击这里<a href='install_lodop64.exe' target='_self'>执行升级</a>";
    
     var  strCLodopInstallA  =  "<br><font color='#FF00FF'>Web打印服务CLodop未安装启动,点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>下载执行安装</a>";
    
     var  strCLodopInstallB  =  "<br>(若此前已安装过,可<a href='CLodop.protocol:setup' target='_self'>点这里直接再次启动</a>)";
    
     var  strCLodopUpdate  =  "<br><font color='#FF00FF'>Web打印服务CLodop需升级!点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>";
    
     var  strLodop7FontTag  =  "<br><font color='#FF00FF'>Web打印服务Lodop7";
    
     var  strLodop7HrefX86  =  "点击这里<a href='Lodop7_Linux_X86_64.tar.gz' target='_self'>下载安装</a>(下载后解压,点击lodop文件开始执行)";
    
     var  strLodop7HrefARM  =  "点击这里<a href='Lodop7_Linux_ARM64.tar.gz'  target='_self'>下载安装</a>(下载后解压,点击lodop文件开始执行)";
    
     var  strLodop7Install_X86  =  strLodop7FontTag  +  "未安装启动,"  +  strLodop7HrefX86;
    
     var  strLodop7Install_ARM  =  strLodop7FontTag  +  "未安装启动,"  +  strLodop7HrefARM;
    
     var  strLodop7Update_X86  =  strLodop7FontTag  +  "需升级,"  +  strLodop7HrefX86;
    
     var  strLodop7Update_ARM  =  strLodop7FontTag  +  "需升级,"  +  strLodop7HrefARM;
    
     var  strInstallOK  =  ",成功后请刷新本页面或重启浏览器。</font>";
    
     var  LODOP;
    
     try {
    
     var  isWinIE  = (/MSIE/i.test(navigator.userAgent)) || (/Trident/i.test(navigator.userAgent));
    
     var  isWinIE64  =  isWinIE  && (/x64/i.test(navigator.userAgent));
    
     var  isLinuxX86  = (/Linux/i.test(navigator.platform)) && (/x86/i.test(navigator.platform));
    
     var  isLinuxARM  = (/Linux/i.test(navigator.platform)) && (/aarch/i.test(navigator.platform));
    
     if (needCLodop() ||  isLinuxX86  ||  isLinuxARM) {
    
     try {
    
     LODOP  = window.getCLodop();
    
    } catch (err) { }
    
     if (!LODOP  &&  LoadJsState  !==  "complete") {
    
     if (!LoadJsState)
    
     alert("未曾加载Lodop主JS文件,请先调用loadCLodop过程."); else
    
     alert("网页还没下载完毕,请稍等一下再操作.");
    
     return;
    
                }
    
     var  strAlertMessage;
    
     if (!LODOP) {
    
     if (isLinuxX86)
    
     strAlertMessage  =  strLodop7Install_X86;
    
     else  if (isLinuxARM)
    
     strAlertMessage  =  strLodop7Install_ARM;
    
     else
    
     strAlertMessage  =  strCLodopInstallA  + (CLodopIsLocal  ?  strCLodopInstallB  :  "");
    
     document.body.innerHTML = strAlertMessage + strInstallOK + document.body.innerHTML;
    
     return;
    
    } else {
    
     if (isLinuxX86  &&  LODOP.CVERSION <  "7.0.4.3")
    
     strAlertMessage  =  strLodop7Update_X86;
    
     else  if (isLinuxARM  &&  LODOP.CVERSION <  "7.0.4.3")
    
     strAlertMessage  =  strLodop7Update_ARM;
    
     else  if (CLODOP.CVERSION <  "6.5.7.0")
    
     strAlertMessage  =  strCLodopUpdate;
    
     if (strAlertMessage)
    
     document.body.innerHTML  =  strAlertMessage  +  strInstallOK  +  document.body.innerHTML;
    
                }
    
    } else {
    
     //==如果页面有Lodop插件就直接使用,否则新建:==
    
     if (oOBJECT  ||  oEMBED) {
    
     if (isWinIE)
    
     LODOP  = oOBJECT;
    
     else
    
     LODOP  =  oEMBED;
    
    } else  if (!CreatedOKLodopObject) {
    
     LODOP  =  document.createElement("object");
    
     LODOP.setAttribute("width", 0);
    
     LODOP.setAttribute("height", 0);
    
     LODOP.setAttribute("style", "position:absolute;left:0px;top:-100px;width:0px;height:0px;");
    
     if (isWinIE)
    
     LODOP.setAttribute("classid", "clsid:2105C259-1E0C-4534-8141-A753534CB4CA");
    
     else
    
     LODOP.setAttribute("type", "application/x-print-lodop");
    
     document.documentElement.appendChild(LODOP);
    
     CreatedOKLodopObject  =  LODOP;
    
    } else
    
     LODOP  =  CreatedOKLodopObject;
    
     //==Lodop插件未安装时提示下载地址:==
    
     if ((!LODOP) || (!LODOP.VERSION)) {
    
     document.body.innerHTML  = (isWinIE64  ?  strLodop64Install  :  strLodopInstall) +  strInstallOK  +  document.body.innerHTML;
    
     return  LODOP;
    
                }
    
     if (LODOP.VERSION <  "6.2.2.6") {
    
     document.body.innerHTML  = (isWinIE64  ?  strLodop64Update  :  strLodopUpdate) +  strInstallOK  +  document.body.innerHTML;
    
                }
    
            }
    
     //===如下空白位置适合调用统一功能(如注册语句、语言选择等):=======================
    
     //===============================================================================
    
     return  LODOP;
    
    } catch (err) {
    
     alert("getLodop出错:"  +  err);
    
        }
    
    }

    去掉测试版本

    myPreview1() {
    
     // this.CreateImage();
    
     // this.LODOP.PRINT();
    
     let  LODOP  =  getLodop();
    
     console.log(' LODOP', LODOP)
    
     var  strHTML  =  document.getElementById("box").innerHTML;
    
     LODOP.PRINT_INIT("")
    
     LODOP.SET_LICENSES("", "EE0887D00FCC7D29375A695F728489A6", "C94CEE276DB2187AE6B65D56B3FC2848", ""); //去掉测试版本
    
     // LODOP.SET_PRINT_PAGESIZE(3, "80mm", "10mm", "CreateCustomPage"); //80打印机不需要加这行
    
     LODOP.SET_PRINT_STYLE("FontSize", 15); // 设置打印字体
    
     LODOP.SET_PRINT_STYLE("Bold", 1); // 设置加粗
    
     LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT", "Height:90%");
    
     LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT", "Full-Width");
    
     LODOP.ADD_PRINT_HTM(10, 10, "90%", "70%", strHTML);
    
     LODOP.PRINT();//
    
     // this.LODOP.PREVIEW()
    
            },

    以上就是实例讲解vue如何实现打印小票的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:Vue
    上一篇:深入了解Vue中的动态组件 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 浅析Vue中插槽Slot的作用和具名插槽• 浅析Vue项目中怎么用Pinia状态管理工具• 浅析Vue中父子组件间怎么通信(父传子|子传父)• 一文搞懂vue2 diff算法(附图)• 深入了解Vue中的动态组件
    1/1

    PHP中文网