前端使用lodop如何获取打印状态 您所在的位置:网站首页 lodop打印机设置 前端使用lodop如何获取打印状态

前端使用lodop如何获取打印状态

2023-11-10 22:57| 来源: 网络整理| 查看: 265

前面已经说过,如何简单使用lodop了,今天说一下如何获得lodop的打印状态?

在教程里面找了半天,摸索出来了一套。

template:

        job码 打印 预览

data:

  

        bb:` Document 交通会 大萨达所大所大萨达所大所所大萨达所大所 `,        jobCode:'1',//job码 printStatus:0,//打印状态 methods:      createPrintCode(){ LODOP = getLodop(); // 打印初始化 LODOP.PRINT_INIT("打印任务名称"); // 设置字体 LODOP.SET_PRINT_STYLE("FontSize",18); // 设置加粗 LODOP.SET_PRINT_STYLE("Bold",1); // 设置纸张大小 打印方向/width/height LODOP.SET_PRINT_PAGESIZE(0,"100mm","100mm","商品标签"); //在指定位置加文本 // LODOP.ADD_PRINT_TEXT(50,"20%",260,39,"打印页面部分内容"); // 增加超文本项top/left/width/height(高度自适应,设小了有效,大了无效) LODOP.ADD_PRINT_HTM("20mm","10mm","80mm","600mm",document.getElementById("printarea").innerHTML); }, print(){//打印 var self=this; this.createPrintCode(); LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS",true);//执行该语句之后,PRINT指令不再返回那个所谓“打印成功” if (LODOP.CVERSION) {//判断c_lodop是否存在,安装了c-lodop就会存在 LODOP.On_Return=function(TaskID,Value){ console.log("TaskID:"+TaskID); console.log("Value:"+Value);//job代码 self.jobCode=Value; var timer = setInterval(function(){ console.log("每次轮询的状态:"+self.printStatus); if(self.printStatus!=0||self.printStatus!=false){ clearInterval(timer); return; } self.getStatusValue(Value); },300); }; LODOP.PRINT(); return; } else{ console.log("c-lodop出错了"); } }, getStatusValue(job){//根据job代码,获取是否打印成功 var self=this; LODOP.On_Return=function(TaskID,Value){ console.log("TaskID:"+TaskID); console.log("打印成功状态:"+Value);//打印成功状态 self.printStatus=Value; }; LODOP.GET_VALUE("PRINT_STATUS_OK",job); }, preview(){//预览 this.createPrintCode(); // 预览 LODOP.PREVIEW(); // 直接打印 // LODOP.PRINT(); },

下面来简单说一下,lodop插件可以实现静默打印,免费的时候,静默打印会带水印。

调起静默打印很简单,但是如何知道打印机打印成功呢?

看了看,lodop的例子,我们可以获得打印状态,如果想更智能点,需要去循环查询此状态,一旦返回成功的状态,我们就可以进行下一步处理了!!

第一次调用: LODOP.On_Return=function(TaskID,Value){},就是给lodop加了个回调函数,TaskID:代表任务id,value是job代码,我也不大理解job代码,不过用它可以去查询,打印状态!!

那么,这个job代码在哪用呢?看上面代码可以知道,在getStatusValue(job)方法中用到了它,这个方法里又一次给lodop加了个回调函数,参数和第一次调用名字完全一样,但是加完这个回调函数后,下面还写了一句代码:

LODOP.GET_VALUE("PRINT_STATUS_OK",job);这句代码是 根据job代码 查询打印状态的,调用完这句后,就会触发那个回调函数了,嗯此时的回调内 反回来的value值,就是打印的状态(成功:1或true 失败:0或false),这个值可以用一个全局变量接住,当我们点击打印时,就循环查询这个状态,一旦,返回的状态时成功状态,那么终止循环查询。

 具体可以参考,教程的45讲

 

判断本地c-lodop服务是否启动,可以在

LODOP = getLodop();后加一个判断

如果c-lodop服务没启动,这个值就会是undefined

如果启动了,会有值!!!

 

判断打印机是否忙碌:“PRINT_STATUS_BUSY”

getStatusValue(valueName,job){//根据job代码,获取是否打印成功 var self=this; LODOP.On_Return=function(TaskID,Value){ console.log("TaskID:"+TaskID); console.log(valueName+":"+Value); self.printStatus=Value; }; LODOP.GET_VALUE(“PRINT_STATUS_BUSY”,job); },

 

 

 下面,再上一个完整的demo,在vue中使用:

job码 打印 预览 重复打印 分页连续打印 正在打印中... var LODOP; export default {// 实验代码 watch:{ }, data(){ return { // 实验代码 bb:`DOCTYPE html> Document xx xx市 `, cc:`DOCTYPE html> Document xx xx市 `, printList:[],//打印数组 printStatus:0,//打印状态 shadowShow:false,//遮罩显示与否 count:1,//打印份数 // 实验代码 } }, created(){ this.printList.push(this.bb); this.printList.push(this.cc); console.log(this.printList) }, mounted(){ }, methods:{ createPrintCode(count,htmlStr){ var self=this; LODOP = getLodop(); return new Promise(function(resolve,reject){ if (LODOP.CVERSION) {//是否能检测到c-lodop的版本号 if(!LODOP){//c-lodop如果没启动,则不能打印 alert("请启动c-lodop服务"); return; } // 打印初始化 LODOP.PRINT_INIT("打印任务名称"); if(count){//设置重复打印要放在初始化后面 LODOP.SET_PRINT_COPIES(count); } // 设置纸张大小 打印方向/width/height LODOP.SET_PRINT_PAGESIZE(0,"100mm","100mm","商品标签"); // 增加超文本项top/left/width/height(高度自适应,设小了有效,大了无效) LODOP.ADD_PRINT_HTM("40mm","10mm","80mm","600mm",htmlStr); resolve(); } else{ alert("请下载c-lodop"); } }) }, breakPagetPrint(htmlList=[]){//分页连续打印 var self=this; if(htmlList.length==0){return}; self.shadowShow=true; LODOP = getLodop(); if (LODOP.CVERSION) {//是否能检测到c-lodop的版本号 if(!LODOP){//c-lodop如果没启动,则不能打印 alert("请启动c-lodop服务"); return; } LODOP.PRINT_INIT("分页打印任务");//初始化在循环中 // 设置纸张大小 打印方向/width/height LODOP.SET_PRINT_PAGESIZE(0,"100mm","100mm","商品标签"); // 增加超文本项top/left/width/height(高度自适应,设小了有效,大了无效) for(let i=0,len=htmlList.length;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有