LODOP中打印机的选择有优先级的存在,如果程序中指定的是错误的打印机,那么会走下一个优先级,这样,就可能存在选择了打印机无效,从默认打印机打印出来了,可以在代码里加判断避免这一点。

打印机优先级简介:
第一优先级:SET_PRINTER_INDEX等程序代码里指定的打印机。
第二优先级:上次在预览界面的打印设置中选择的打印机,Lodop按任务名对应记忆下来。
第三优先级:操作系统选择的默认打印机。
默认打印机优先级最低,当前两个优先级不存在或没生效时,会走最低的默认打印机优先级。

可以在预览或打印前,判断一下打印机是否存在,决定是否执行预览或打印命令,这种方法可避免走优先级输出到不必要的打印机上。

以下是lodop和c-lodop测试判断和不判断的区别和结果。(以PREVIEW预览为例)

lodop插件方式、不加判断:(弹出两次,一次提示不存在,关闭后弹出预览窗口)
第一步:弹出提示 打印机“(具体打印机名称或序号)”不存在。
第二步:关闭提示,点确定或叉号,弹出预览窗口。

lodop插件方式、加判断:(弹出一次,提示打印机不存在,不会弹出预览窗口)
弹出提示 打印机“(具体打印机名称或序号)”不存在。
不再弹出预览窗口。

c-lodop方式、不加判断:(弹出一次,弹出预览窗口)
弹出预览窗口。

c-lodop方式、加判断:(弹出0次,什么也不弹出)
不弹出预览窗口。

由于没设置任务名,也没上次预览的记录,所以当程序里指定一个错误的不存在的打印机的时候,以上测试中弹出预览的均为默认打印机,也就是走了其他优先级。
这样,如果打印的时候打印机不存在,就会出现在其他打印机打印的情况。

加了判断后的效果:
lodop弹出 打印机“(具体打印机名称或序号)”不存在,c-lodop什么也不弹出。
加了判断后,两者都不再走其他优先级进行预览或打印,避免了在其他打印机输出的情况。

具体方法:在打印或预览前判断一下打印机是否存在,不存在不执行打印方法,存在再执行。
if (LODOP.SET_PRINTER_INDEX("打印机名或序号"))//不存在的打印机
LODOP.PREVIEW();//判断为假,不执行该句

测试代码:

本人本机Brother Color Type3 Class Driver存在,在该打印机名称后面加了个1,Brother Color Type3 Class Driver1这个名称的打印机名称就不存在了。

<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()">打印预览</a><br>
<a href="javascript:prn2_preview()">打印预览(加了判断的)</a><br>
<script language="javascript" type="text/javascript">
var LODOP; //声明为全局变量
function prn1_preview() {
LODOP=getLodop();
LODOP.PRINT_INITA(12,13,500,300,"");
LODOP.SET_PRINTER_INDEX("Brother Color Type3 Class Driver1");//不存在的打印机
LODOP.ADD_PRINT_TEXT(10,10,100,20,"新加文本1");
LODOP.PREVIEW();
};
function prn2_preview() {
LODOP=getLodop();
LODOP.PRINT_INITA(12,13,500,300,"");
LODOP.ADD_PRINT_TEXT(10,10,100,20,"新加文本1");
if (LODOP.SET_PRINTER_INDEX("Brother Color Type3 Class Driver1"))//不存在的打印机
LODOP.PREVIEW();
};
</script>
</body>

图示:

LODOP设置打印机不存在不打印的更多相关文章

  1. LODOP纸张/打印机/份数/打印方向/双面打印 简短问答

    纸张#如何设置纸张纸张设置,参考样例5 http://www.c-lodop.com/demolist/PrintSample5.html纸张的一些优先级 http://www.c-lodop.com ...

  2. LODOP设置同一个任务发送到不同打印机

    前面的博文Lodop打印语句最基本结构介绍(什么是一个任务),一个任务只能有一个打印语句(最后PRINT,PRINTA,PREVIEW等),如果执行多个,LODOP会弹出多次,C-LODOP会提示窗口 ...

  3. LODOP设置打印份数及是否逐份输出

    LODOP中通过SET_PRINT_COPIES可以设置打印份数,例如:LODOP.SET_PRINT_COPIES(2);//指定份数为2份 如果一个任务里有多页,打印份数的时候,有两种输出方式,一 ...

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

    由于打印机千差万别,打印机执行的标准也不一样,LODOP获取的打印状态码也可能不同,安装了个打印机驱动实际测试一下,测试的打印机驱动是Brother Color Type3 Class Driver. ...

  5. LODOP不同打印机出现偏移问题

    方法简单描述:1.精确套打,设置以纸张边缘为基点,可避免不同可打区域不同带了的影响.2.不同客户端打印机位置差异,可通过打印维护调整,结果在客户端本地.或调整打印机初始位置(本人使用的金税盘的开票软件 ...

  6. LODOP设置纸张无效问题

    有的打印机不支持自定义纸张,或不支持当前设置的纸张尺寸,会造成纸张尺寸和代码里设置的尺寸不一致的情况.现象:1.代码一样,纸张语句设置正确,有的打印机纸张正常,有的打印机不正常.2.代码一样,纸张语句 ...

  7. LODOP设置判断后执行哪个

    LODOP的语句是普通的语句,可以通过JS判断确定要执行哪个,或通过循环循环执行一些语句.如果需要执行某些打印项在哪些条件下不打印,不需要通过代码删除打印项,类似LODOP.SET_PRINT_STY ...

  8. Java实现POS打印机自定义无驱打印

    Java实现POS打印机自定义无驱打印 热敏打印机使用越来越广泛,而安装驱动相当复杂,万幸的是,几乎所有的热敏打印机都支持ESC/P指令,参考网络上一些资料后,在此整理了一份自定义打印的方案 • 打印 ...

  9. 设置打印机共享,适用Win7、Vista、xp,不用密码

    此处以HP M1213nf为例,其他型号大同小异. 1.设置打印机共享: "开始"→  "控制面板"→  "设备和打印机" 2.找到&quo ...

随机推荐

  1. 深度学习框架PyTorch一书的学习-第三章-Tensor和autograd-1-Tensor

    参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 Tensor Tensor可以是一个数 ...

  2. syzkaller 资料集合

    搭建 1.Setup: Ubuntu host, QEMU vm, x86-64 kernel https://github.com/google/syzkaller/blob/master/docs ...

  3. GFF高仿QQ客户端及服务器

    一.GFF简介 GFF是仿QQ界面,通信基于SAEA.MessageSocket.SAEA.Http.SAEA.MVC实现包含客户端和服务器的程序,源码完全公开,项目源码地址:https://gith ...

  4. 修改构造器默认prototype后,新实例的constructor指向问题和解决办法

    Chrome中调试 源码: 构造器  function Dog(){this.tail=true} 构造新实例 var benji= new Dog(); var rusty=new Dog(); 新 ...

  5. Java消息中间件入门笔记 - ActiveMQ篇

    入门 消息中间件带来的好处: 1)解耦:系统解耦 2)异步:异步执行 3)横向扩展 4)安全可靠 5)顺序保证 栗子: 通过服务调用让其它系统感知事件发生 系统之间高耦合 程序执行效率低 通过消息中间 ...

  6. 窥探ASP.Net MVC底层原理 实现跨越Session的分布式TempData

    1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时缓存数据或者页面之间传递消息.也都知道TempData是用Session来实现的,既 ...

  7. [书籍]重温《Framework Design Guidelines》

    1. 前言 最近重温了<Framework Design Guidelines>. <Framework Design Guidelines>中文名称为<.NET设计规范 ...

  8. 使用webview几种常见的hybrid通信方式

    js 与原生之间的通信: 1.JSbridge::(webviewJavascriptBridge)一种js与原生native通信的机制,可以h5与native互调: 2.Cordova: 核心就是原 ...

  9. pandas数据的分组与分列

    读入数据:  数据分组:我们可以看到num这列它的数字在0-20之间变化,我们可以对其增加一列,用来对其分组 df['新增一列的名称']=pd.cut(df['要分组的列'],要分组的区间,新增一列后 ...

  10. anaconda 出现add 。。。进不去

    找到.condarc 文件  C:\Users\leiyi内 把里面内容替换为 channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pk ...