LODOP获取打印机状态码和状态码含义测试

由于打印机千差万别,打印机执行的标准也不一样,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的返回值,通过该语句是否执行加入队列,这种简单的方法判断打印成功。简单方法:  

LODOP获取打印成功,是否加入队列

测试代码:

如本文中,获取的状态码为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>

 

原文地址:https://www.cnblogs.com/huaxie/p/10174903.html