lodop和c-lodop通过打印状态和任务不在队列获取打印成功
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
之前的博文有通过判断pirnt的返回值,判断加入队列算打印成功,建议使用这种简单的判断方法。 方法1:判断加入队列算成功(之前的相关博文:) 方法2:单独用这个PRINT_STATUS_OK判断 方法3:用PRINT_STATUS_OK和不在队列联合判断,或者单独判断不在队列。 目前市面上很多软件,包括本人用来打发票的开票软件,都没有提示打印成功的,试试上打印机本身如果缺纸卡纸或脱机等,打印机本身会有提示音或提示灯,windows系统一般会在右下角提示打印错误,所以不提示成功也是常见的。 这三种方法,都不是绝对的打印成功,但是近似打印成功 本文下面的图示中的成功,是我手动在队列删除任务的效果。查看log日志,可以看出这打印成功或删除是从任务不在队列里判断出来的。此时间不是打印成功时间,是我手动删除打印机队列该任务所用的时间。用手动删除队列任务模拟打印成功。 测试代码 : 里面包含的判断: 里面需要获取的返回值: 一个回调获取两个回调值,要加LODOP.On_Return_Remain=true;,否则一个回调后就销毁了。 测试代码 : <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>WEB打印控件LODOP</title> <script language="javascript" src="LodopFuncs.js"></script> </head> <body> <a href="javascript:PrintWait()">通过状态和不在队列打印测试是否成功</a><br> <script language="javascript" type="text/javascript"> var LODOP,P_ID="",TaskID1,TaskID2,t,c=0;//声明为全局变量 function PrintWait(){ if (c>0) {alert("正打印中...");return;} LODOP=getLodop(); LODOP.PRINT_INIT(""); LODOP.ADD_PRINT_TEXT(50,231,260,39,"打印的页面部分内容"); LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS",true); if (LODOP.CVERSION) { LODOP.On_Return=function(TaskID,Value){ P_ID=Value; console.log("该任务走的是c-lodop方式,job代码为"+P_ID); if (P_ID!="") { c=0;C_WaitFor();}; }; LODOP.PRINTA(); } else { P_ID=LODOP.PRINTA(); console.log("该任务走的是lodop插件方式,job代码为"+P_ID); if (P_ID!="") { c=0;WaitFor();}; }; } function WaitFor(){ c=c+1; console.log("正等待(JOB代码是"+P_ID+")打印结果:"+c+"秒"); t=setTimeout("WaitFor()",1000); if (LODOP.GET_VALUE("PRINT_STATUS_OK",P_ID)) { clearTimeout(t); console.log("走的lodop插件方式:PRINT_STATUS_OK判断为打印成功"); c=0; alert("打印成功!"); }if ((!LODOP.GET_VALUE("PRINT_STATUS_EXIST",P_ID))&&(c>0)) { clearTimeout(t); console.log("走的lodop插件方式:判断该该任务已经不在队列,已成功或删除任务"); c=0; alert("打印任务不在队列,成功或删除"); } else if (c>50){ clearTimeout(t); console.log("打印超过50秒没捕获到成功状态!"); c=0; alert("打印超过50秒没捕获到成功状态!"); }; }; function C_WaitFor(){ c=c+1; console.log("正等待(JOB代码是"+P_ID+")打印结果:"+c+"秒"); t=setTimeout("C_WaitFor()",1000); LODOP.On_Return_Remain=true; LODOP.On_Return=function(TaskID,Value){ if (TaskID==TaskID1){ if (Value==1){alert(TaskID+" "+Value); clearTimeout(t); console.log("走的c-lodop方式:PRINT_STATUS_OK判断为打印成功"); c=0; alert("打印成功!"); }; } else if (TaskID==TaskID2){ if (Value==0){ clearTimeout(t); console.log("走的c-lodop方式:判断该该任务已经不在队列,已成功或删除任务"); c=0; alert("打印任务不在队列,成功或删除"); }; }; }; TaskID1=LODOP.GET_VALUE("PRINT_STATUS_OK",P_ID); TaskID2=LODOP.GET_VALUE("PRINT_STATUS_EXIST",P_ID); if (c>50){ clearTimeout(t); console.log("打印超过50秒没捕获到成功状态!"); c=0; alert("打印超过50秒没捕获到成功状态!"); }; }; </script> </body> 图示:用手动删除任务模拟打印成功,任务不在队列算成功。
前面图片用了颜色区分各个部分,追着颜色看代码更清晰。 该文章在 2023/9/26 0:02:55 编辑过 |
关键字查询
相关文章
正在查询... |