一般情况下打印执行了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>

图示:

LODOP判断没成功发送任务-重打一下的更多相关文章

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

    之前博文介绍过获取打印机状态码 LODOP获取打印机状态码和状态码含义测试,但是打印机种类千差万别,状态码不一定准确,特别是打印成功的状态码,获取任务不在队列,可以判断打印成功,删除任务也是任务不在队 ...

  2. socket异步通信-如何设置成非阻塞模式、非阻塞模式下判断connect成功(失败)、判断recv/recvfrom成功(失败)、判断send/sendto

    socket异步通信-如何设置成非阻塞模式.非阻塞模式下判断connect成功(失败).判断recv/recvfrom成功(失败).判断send/sendto 博客分类: Linux Socket s ...

  3. fstream 中判断是否成功打开文件

    from: http://blog.csdn.NET/zhtsuc/article/details/2938614 关于C++ fstream的一个容易使用出错的地方 关于c++ 中 文件流的两个类, ...

  4. TestNG 判断文件下载成功

    用WatchService写一个方法放在onTestStart()方法里监听文件夹的变化. 但是判断下载成功还需要写一个方法, 用来判断什么时候文件从.xlsx.rcdownload改成.xlsx才行 ...

  5. 第8课 Thinkphp 5 update判断修改成功与失败 Thinkphp5商城第四季

    没有修改数据时,判断修改成功与失败 如果提交时的数据库里之前的数据一样(即没有修改就提交表单),会返回0,此时 判断修改成功用$save !== false 这样才会提示修改成功. $save=db( ...

  6. lodop判断是否打印成功

    需要引用js <script src="js/jquery-3.3.1.js"></script> <script src="js/Lodo ...

  7. java判断邮件是否发送成功

    http://www.cnblogs.com/winner-0715/p/5136392.html

  8. xcopy拷贝判断是否成功 robocopy排除子目录

    xcopy \\172.16.22.65\server\*.* C:\Inetpub\wwwroot\Server /h /r /s /yif %errorlevel% neq 0 echo copy ...

  9. 宝塔https部署没成功的原因排查

    今天ytkah在迁移一个客户网站的时候出了点问题,网站从旧的服务器(windows)换到新的服务器(阿里云centos 7,已经安装了宝塔面板),网站之前有用comodo的ssl证书,因为快要过期了, ...

随机推荐

  1. UVA 1613 K度图染色

    题目 \(dfs+\)证明. 对于题目描述,可以发现\(K\)其实就是大于等于原图中最大度数的最小奇数,因为如果原图度数最大为奇数,则最多颜色肯定为K,而如果原图最大度数为偶数,则\(K\)又是奇数, ...

  2. 【golang】使用rpcx不指定tags报错 undefined: serverplugin.ConsulRegisterPlugin

    为了避免引入不必要的库, rpcx采用了 Go 条件编译 的特性, 你可以只引入必要的特性. 比如你只使用 etcd 作为注册中心的时候, 你不希望引入 consul.zookeeper相关的库,你需 ...

  3. npropress进度条插件的使用

    官网下载地址:http://ricostacruz.com/nprogress/ npropress.css /* Make clicks pass-through */ #nprogress { p ...

  4. 让img图片像背景一样显示

    如何让图片像背景一样显示呢? 这里需要用到object-fit属性 MDN地址:https://developer.mozilla.org/zh-CN/docs/Web/CSS/object-fit ...

  5. A2T和T2A,===string和CString互转 方法一:--用宏的方式

    USES_CONVERSION它是在堆栈上分配空间的,也就是说你在你在函数未结束就不会被释放掉.所有要注意不要在一个函数中用while循环执行它,不然栈空间就马上会分配完(栈空间一般只有2M,很小). ...

  6. CFD计算过程发散诸多原因分析【转载】

    转载自: http://blog.sina.com.cn/s/blog_5fdfa7e601010rkx.html 今天探讨引起CFD计算过程中发散的一些原因.cfd计算是将描述物理问题的偏微分方程转 ...

  7. Unity 2018 Game Development in 24 Hours Sams Teach Yourself 3rd Edition

    最新的Unity2018自学教材,如果新入坑Unity,直接从2018开始看吧! 点击下载提取码:tngj

  8. Spring源码解析--IOC根容器Beanfactory详解

    BeanFactory和FactoryBean的联系和区别 BeanFactory是整个Spring容器的根容器,里面描述了在所有的子类或子接口当中对容器的处理原则和职责,包括生命周期的一些约定. F ...

  9. 天池移动推荐算法赛--https://github.com/PnYuan/Tianchi-BigData

    参考: https://blog.csdn.net/Snoopy_Yuan/article/details/75808006

  10. 如何使用eclipse创建简单的servlet

    Servlet是一种基于java开发的服务器程序,可以对外公布服务,如果是浏览器应用,可以通过浏览器打开网址的方式查看服务.创建servlet要继承httpservlet,并且在web.xml中配置拦 ...