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. mongo中游标

    1.手动循环访问游标 mongo中我们常用的查询方式db.collection.find()方法其实返回的就是游标,只不过我们并未给返回的游标分配变量,我们所看到的的查询数据也就是游标自动迭代得出的( ...

  2. Java NIO6:选择器1——理论篇

    一.选择器 选择器提供选择执行已经就绪的任务的能力,这使得多元I/O成为了可能,就绪执行和多元选择使得单线程能够有效地同时管理多个I/O通道. 某种程度上来说,理解选择器比理解缓冲区和通道类更困难一些 ...

  3. C语言中数组变量和指针变量

    指针变量为什么需要类型? 数组变量和指针变量在使用sizeof时不同,sizeof(数组变量)是数组长度,sizeof(指针变量)是存储int的字节长度4或者8(64bit). 数组变量在参数传递中, ...

  4. ODPS-Java-SDK快速入门

    一.简介 核心接口包括:AliyunAccount,MaxCompute(SDK中使用原名ODPS)等常见对象组件 更多参见文档:https://help.aliyun.com/document_de ...

  5. Android so注入(inject)和Hook技术学习(三)——Got表hook之导出表hook

    前文介绍了导入表hook,现在来说下导出表的hook.导出表的hook的流程如下.1.获取动态库基值 void* get_module_base(pid_t pid, const char* modu ...

  6. [Spark][Python][DataFrame][Write]DataFrame写入的例子

    [Spark][Python][DataFrame][Write]DataFrame写入的例子 $ hdfs dfs -cat people.json {"name":" ...

  7. Ubuntu中libprotobuf版本冲突的解决方案

    先说解决方法: 因为我出现这个比较奇特,我再下面环境中的第一个项目有这个问题,但是不知道怎么瞎折腾就搞定了,不报这个异常了 不论是Qt Creator直接运行Debug或者Release都没问题 但是 ...

  8. 命令行创建mysql数据库指定编码方法

    GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; UTF8: CREATE DATABASE t ...

  9. ASP.NET Core 添加区域步骤(详细)

    1 前言 早就想总结一下,但是没时间,这次有时间了,就详细的把步骤写出来. 2 步骤 2.1 添加区域 右键项目->添加->区域,如图1: 区域名称:Ceshi 添加完之后解决方案管理器会 ...

  10. Jenkins - SSH认证方式拉取Git代码

    1.本地生成密钥 [root@root ~] ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which ...