LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

LODOP判断没成功发送任务-重打一下

admin
2023年9月28日 2:2 本文热度 459

一般情况下打印执行了PRINT()或PRINTA(),就会加入打印机队列,如果打印机脱机,就会在队列里排队,当打印机连上并取消脱机的时候,正在排队的任务就会打出,所以一般建议用是否加入队列来判断打印成功。
关于打印成功前面有相关博文:
LODOP获取打印机状态码和状态码含义测试LODOP获取打印成功,是否加入队列
由于打印机千差万别,状态码不一定准确,所以建议使用简单的方法判断打印成功,加入队列就算成功
但是如果是没成功加入队列,可以再重新打一下,上面有个博文是加入队列后成功或失败进行提示的,修改一下就能变成重打一次的,重打的时候注意是重打整个任务。
关于任务,参考本博客另一篇相关博文:Lodop打印语句最基本结构介绍(什么是一个任务)
即从初始化到打印语句是一个任务,一个任务有一个初始化语句一个打印语句。
除非设置了-设置打印完毕不清理打印信息相关语句,这个之后会有博文介绍(LODOP设置同一个任务发送到不同打印机),一个任务可以执行两次print,不设置的情况下一个任务执行一次print语句,否则不设置的情况下第二次的会清理了打印信息,打印出来就是空白的。

如下代码和图示,常见的错误写法,和正确的重打一次的写法。
由于PRINT直接发送到队列,而且一般都会成功,很难模拟到失败的可能,所以这里用的是PRINTA,这个和PRINT的返回值是一样的,区别就是PRINTA在打印前会弹出打印机选择框,这里点取消,模拟没有成功加入打印机队列。出现漏任务,先用最新版测试下,一般不会出现漏打,如果打印百个任务或千个任务偶尔出现漏任务且无规律,观察队列确认是少了任务,可试试重打一次,但是建议先用最新版对比测试。
代码:

<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()">判断打印是否成功,不成功再次重打一下的错误写法</a><br>
<a href="javascript:prn2()">判断打印是否成功,不成功再次重打一下的正确写法</a><br>
<script language="javascript" type="text/javascript">  
   var LODOP; //声明为全局变量
   function createPrintPage() {      
       LODOP
=getLodop();        
       LODOP.PRINT_INIT(
"打印控件功能演示_Lodop功能_名片");  
       LODOP.SET_PRINT_PAGESIZE(
1,300,500,"");
       LODOP.ADD_PRINT_TEXT(
37,5,100,20,"新加文本1");
       LODOP.ADD_PRINT_SHAPE(
5,92,7,100,60,0,1,"#000000");
   };  
   
function prn1() {//没有重打任务,错误写法(一个任务只能有一个print)(除非设置打印完不清理打印信息,详见他博文)
       LODOP=getLodop();
       LODOP.PRINT_INIT(
"");
       LODOP.ADD_PRINT_TEXT(
4,62,150,40,"一个文本");
       
//云打印C-Lodop返回结果用回调函数:
       if (LODOP.CVERSION) {
           CLODOP.On_Return
=function(TaskID,Value){ if (Value) alert("已发出实际打印命令!"); else {alert("没有发出实际打印命令!重试打印"); LODOP.PRINTA();}};
           LODOP.PRINTA();
           
return;
       };
       
//控件返回结果用语句本身:
       if (LODOP.PRINTA())
          alert(
"已发出实际打印命令!");
       
else
         alert(
"没有发出实际打印命令!重试打印");
         LODOP.PRINTA();
   };
   
function prn2() {//重打任务,正确写法,重打整任务
       LODOP=getLodop();
       LODOP.PRINT_INIT(
"");
       LODOP.ADD_PRINT_TEXT(
4,62,150,40,"一个文本");
       
//云打印C-Lodop返回结果用回调函数:
       if (LODOP.CVERSION) {
           CLODOP.On_Return
=function(TaskID,Value){if(Value) alert("已发出实际打印命令!"); else {alert("没有发出实际打印命令!重试打印");createPrintPage(); LODOP.PRINTA();}};
           LODOP.PRINTA();
           
return;
       };
       
//控件返回结果用语句本身:
       if (LODOP.PRINTA())
          alert(
"已发出实际打印命令!");
       
else
         alert(
"没有发出实际打印命令!重试打印");
         createPrintPage();
         LODOP.PRINTA();
   };
</script>
</body>

图示:

 


该文章在 2023/9/28 2:02:08 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved