lodop和c-lodop通過打印狀態(tài)和任務(wù)不在隊列獲取打印成功
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
之前的博文有通過判斷pirnt的返回值,判斷加入隊列算打印成功,建議使用這種簡單的判斷方法。 方法1:判斷加入隊列算成功(之前的相關(guān)博文:) 方法2:單獨用這個PRINT_STATUS_OK判斷 方法3:用PRINT_STATUS_OK和不在隊列聯(lián)合判斷,或者單獨判斷不在隊列。 目前市面上很多軟件,包括本人用來打發(fā)票的開票軟件,都沒有提示打印成功的,試試上打印機(jī)本身如果缺紙卡紙或脫機(jī)等,打印機(jī)本身會有提示音或提示燈,windows系統(tǒng)一般會在右下角提示打印錯誤,所以不提示成功也是常見的。 這三種方法,都不是絕對的打印成功,但是近似打印成功 本文下面的圖示中的成功,是我手動在隊列刪除任務(wù)的效果。查看log日志,可以看出這打印成功或刪除是從任務(wù)不在隊列里判斷出來的。此時間不是打印成功時間,是我手動刪除打印機(jī)隊列該任務(wù)所用的時間。用手動刪除隊列任務(wù)模擬打印成功。 測試代碼 : 里面包含的判斷: 里面需要獲取的返回值: 一個回調(diào)獲取兩個回調(diào)值,要加LODOP.On_Return_Remain=true;,否則一個回調(diào)后就銷毀了。 測試代碼 : <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()">通過狀態(tài)和不在隊列打印測試是否成功</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,"打印的頁面部分內(nèi)容"); LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS",true); if (LODOP.CVERSION) { LODOP.On_Return=function(TaskID,Value){ P_ID=Value; console.log("該任務(wù)走的是c-lodop方式,job代碼為"+P_ID); if (P_ID!="") { c=0;C_WaitFor();}; }; LODOP.PRINTA(); } else { P_ID=LODOP.PRINTA(); console.log("該任務(wù)走的是lodop插件方式,job代碼為"+P_ID); if (P_ID!="") { c=0;WaitFor();}; }; } function WaitFor(){ c=c+1; console.log("正等待(JOB代碼是"+P_ID+")打印結(jié)果:"+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插件方式:判斷該該任務(wù)已經(jīng)不在隊列,已成功或刪除任務(wù)"); c=0; alert("打印任務(wù)不在隊列,成功或刪除"); } else if (c>50){ clearTimeout(t); console.log("打印超過50秒沒捕獲到成功狀態(tài)!"); c=0; alert("打印超過50秒沒捕獲到成功狀態(tài)!"); }; }; function C_WaitFor(){ c=c+1; console.log("正等待(JOB代碼是"+P_ID+")打印結(jié)果:"+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方式:判斷該該任務(wù)已經(jīng)不在隊列,已成功或刪除任務(wù)"); c=0; alert("打印任務(wù)不在隊列,成功或刪除"); }; }; }; 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秒沒捕獲到成功狀態(tài)!"); c=0; alert("打印超過50秒沒捕獲到成功狀態(tài)!"); }; }; </script> </body> 圖示:用手動刪除任務(wù)模擬打印成功,任務(wù)不在隊列算成功。
前面圖片用了顏色區(qū)分各個部分,追著顏色看代碼更清晰。 該文章在 2023/9/26 0:02:55 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |