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 編輯過 |
關鍵字查詢
相關文章
正在查詢... |