由於打印機千差萬別,打印機執行的標准也不一樣,LODOP獲取的打印狀態碼也可能不同,安裝了個打印機驅動實際測試一下,測試的打印機驅動是Brother Color Type3 Class Driver。
用LODOP獲取打印機狀態碼,和打印機隊列的狀態對比一下,分別是打印機錯誤,正在排隊,和脫機。
1.該打印機隊列里該任務呈現的是:錯誤-正在打印
用LODOP獲取的打印狀態碼8210,狀態碼含義是 錯誤-正在打印
LODOP獲取的和打印機隊列一致。
2.該打印機隊列里該任務呈現的是:狀態是空,但是有打印任務,進入了隊列,正在排隊
用LODOP獲取的打印狀態碼0,狀態碼含義是 進入隊列
LODOP獲取的和打印機隊列一致。
3.該打印機隊列里該任務呈現的是:打印機脫機(手動設置了該打印機的脫機狀態)
用LODOP獲取的打印狀態碼0,狀態碼含義是 進入隊列
LODOP獲取的和打印機隊列一致,但是沒有獲取到脫機狀態。
所以用LODOP獲取某種打印機的狀態碼,建議實際測試一下,如果狀態碼不正確,應該是該打印機的標准不一樣,如果想要獲取打印成功,可以判斷job不在隊列,或直接判斷打印返回值加入隊列算成功,關於打印成功,這兩種,可查看本博客的另一篇博文:
注意:加上這句,LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS",true);,PRINTA的返回值才會是job代碼。不加這句,可以直接判斷PRINTA的返回值,通過該語句是否執行加入隊列,這種簡單的方法判斷打印成功。簡單方法:
測試代碼:
如本文中,獲取的狀態碼為8210,獲取的狀態碼含義是 錯誤-正在打印。
狀態碼是一個枚舉組合值,是數字合計值。例如:1-已暫停,2-錯誤,4-正刪除,8-進入隊列,16-正在打印........等
狀態碼除以1024,取余數,可以得到合計值,然后根據合計值可以對照信息找到狀態碼含義,LODOP本身可以直接獲取狀態碼含義,可以直接獲取本文的這個狀態碼含義。
8210/1024=8.017......(用電腦自帶的計算器算的結果)
8*1024=8192(可以整除出來的數值)
8210-8192=18(得到的余數)
18=2+16=錯誤+正在打印。所以該狀態碼代表的含義是錯誤,正在打印。
<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:prn1_preview()">獲取打印job代碼</a> <input type="text" id="T1" size="20" value=""><br> <a href="javascript:prn2_preview()">獲取打印狀態碼</a> <input type="text" id="T2" size="20" value=""><br> <a href="javascript:prn3_preview()">獲取打印狀態碼含義</a> <input type="text" id="T3" size="20" value=""><br> <script language="javascript" type="text/javascript"> var LODOP; //聲明為全局變量 function prn1_preview() {//獲取job代碼 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){document.getElementById('T1').value=Value;}; LODOP.PRINTA(); } else document.getElementById('T1').value=LODOP.PRINTA(); }; function prn2_preview() {//獲取打印狀態碼 LODOP=getLodop(); if (LODOP.CVERSION) CLODOP.On_Return=function(TaskID,Value){document.getElementById('T2').value=Value;}; var stResult=LODOP.GET_VALUE("PRINT_STATUS_ID",document.getElementById('T1').value); if (!LODOP.CVERSION) document.getElementById('T2').value=stResult; }; function prn3_preview() {//獲取該打印狀態碼的含義 LODOP=getLodop(); if (LODOP.CVERSION) CLODOP.On_Return=function(TaskID,Value){document.getElementById('T3').value=Value;}; var stResult=LODOP.GET_VALUE("PRINT_STATUS_TEXT",document.getElementById('T1').value); if (!LODOP.CVERSION) document.getElementById('T3').value=stResult; }; </script> </body>