获取打印机列表可以放在onload事件里,如过当前是使用的c-lodop,由于websoket链接需要时间,一进入页面可能会报错,被准备好或网页没下载完成等,也可以在点击事件里让用户获取打印机。
之前写过两个在页面选择打印机的博文:
Lodop在页面获取打印机列表 选择打印机预览 
C-Lodop获取打印机列表Create_Printer_List(c-lodop独有的方法,集中打印,AO打印可以用这个方法)
都是早期写的博文,搬运到新博客的,没有代码,这里重新介绍一下第一个博文的那种lodop和c-lodop通用的方法,选择打印机也可以不在页面加载的时候获取,点击后获取打印机列表然后选择。
正常情况下点击一次,获取到打印机列表,用户就可以选择打印机了,但是用户也可能手滑或者点了多次等原因,为了避免重新装载打印机到列表里,可以判断为不为空的时候就不再装载了。

在onload理论原来写的这个获取打印机列表方法:(由于之前写过,不再放这个的图)后面的有按钮获取的图。其实和按钮获取的方法是一样的,就是一个在onload理论,一个按钮点击获取。
代码:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WEB打印控件LODOP</title>
<script language="javascript" src="LodopFuncs.js"></script>
</head>
选择打印机:<select id="PrinterList" size="1"></select>
<a href="javascript:prn1_preview()">打印预览</a><br>
<script language="javascript" type="text/javascript">
var LODOP; //声明为全局变量
window.onload=function(){creatPrintList();}
function creatPrintList(){
LODOP=getLodop();
var iPrinterCount=LODOP.GET_PRINTER_COUNT();
for(var i=0;i<iPrinterCount;i++){
var option=document.createElement('option');
option.innerHTML=LODOP.GET_PRINTER_NAME(i);
option.value=i;
document.getElementById('PrinterList').appendChild(option);
};
};
function prn1_preview() {
LODOP=getLodop();
LODOP.PRINT_INIT("");
LODOP.SET_PRINTER_INDEX(document.getElementById("PrinterList").value);
LODOP.SET_PRINT_PAGESIZE(1,300,500,"");
LODOP.ADD_PRINT_TEXT(4,62,150,40,"文字");
LODOP.PREVIEW();
};
</script>
</body>

在点击按钮里获取打印机列表:判断为空,就不再重新装载。
此外在实际应用的时候,考虑到用户可能的操作,都需要加一些判断,如前面的很多在文本框填写,然后打印的博文,都需要判断是否为空,用户也可能什么也不填写就打印等。

代码:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WEB打印控件LODOP</title>
<script language="javascript" src="LodopFuncs.js"></script>
<style>
</style>
</head>
<input type="button" value="选择打印机" onclick="creatPrintList()" > <select id="PrinterList" size="1" style="margin-top:10px;"></select>
<input type="button" value="选择打印机" onclick="creatPrintList2()" > <select id="PrinterList2" size="1" style="margin-top:10px;"></select> <script language="javascript" type="text/javascript">
var LODOP; //声明为全局变量
function creatPrintList(){
LODOP=getLodop();
var iPrinterCount=LODOP.GET_PRINTER_COUNT();
for(var i=0;i<iPrinterCount;i++){
var option=document.createElement('option');
option.innerHTML=LODOP.GET_PRINTER_NAME(i);
option.value=i;
document.getElementById('PrinterList').appendChild(option);
};
document.getElementById('PrinterList').style.display='block';
}; function creatPrintList2(){
if (document.getElementById('PrinterList2').innerHTML!="") return;
//点第二次以上,在列表已经填充不为空情况下,不再执行后面的代码,直接返回,避免重新装载打印机。
LODOP=getLodop();
var iPrinterCount=LODOP.GET_PRINTER_COUNT();
for(var i=0;i<iPrinterCount;i++){
var option=document.createElement('option');
option.innerHTML=LODOP.GET_PRINTER_NAME(i);
option.value=i;
document.getElementById('PrinterList2').appendChild(option);
};
document.getElementById('PrinterList2').style.display='block';
};
function prn1_preview() {
LODOP=getLodop();
LODOP.PRINT_INIT("");
LODOP.SET_PRINTER_INDEX(document.getElementById("PrinterList").value);
LODOP.SET_PRINT_PAGESIZE(1,300,500,"");
LODOP.ADD_PRINT_TEXT(4,62,150,40,"文字");
LODOP.PREVIEW();
};
</script>
</body>

图示:

LODOP在页面让客户选择打印机的更多相关文章

  1. Lodop在页面获取打印机列表 选择打印机预览

    利用GET_PRINTER_COUNT,获取打印机个数,然后用GET_PRINTER_NAME(intPrinterIndex);循环获取打印机名称,添加到list列表里,可以让用户在页面就选择打印机 ...

  2. C# Lodop与C-Lopdop选择打印机

    原文:https://www.cnblogs.com/huaxie/p/9766886.html https://www.cnblogs.com/huaxie/p/10857490.html http ...

  3. asp.net调用Lodop实现页面打印或局部打印,可进行打印设置或预览

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebPrint.aspx.cs ...

  4. Android较低版本(<5.2) 页面默认Select选择框效果的BUG解决

    Bug描述: 使用低版本安卓(<5.2),在微信上打开网页,点击下拉框,会出现如下图所示的用来展示select选项的弹出框: 在选项较少的时候,可以向下滑动,将选项滑到底部 滑动前: 滑动后: ...

  5. CentOS6.9-zabbix3.2启动失败原因及页面没有mysql选择项

     环境内核信息: [root@zabbix- ~]# uname -a Linux lodboyedu- -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_64 ...

  6. Lodop输出页面input文本框的最新值

    默认使用Lodop打印页面上的文本框等,会发现虽然页面上文本框输入了值,打印预览却是空的,这是由于没有把最新的值传入Lodop. 如图,演示的是Lodop如何输出文本框内的新值,这里整个页面只有inp ...

  7. 关于其它模块的设计,有非常多须要自己去构建和完毕,在这里就简单地举几个样例来看看其它模块的设计。我们要做的就是有更改password模块,客户选择模块和关于本软件模块。更改password模块用来更改管理员的password,客户选择对话框模块用来选择已加入的客户,关于本软件模块用来说明客户管理系统的一些必要信息和制作人的信息。

            五,其它模块设计         关于其它模块的设计,有非常多须要自己去构建和完毕,在这里就简单地举几个样例来看看其它模块的设计. 我们要做的就是有更改password模块.客户选择模 ...

  8. LODOP中预览界面查看打印机的可打区域具体值

    LODOP在打印预览的时候,如果选择的打印机是真实打印机,会发现可能会有虚线,不同打印机虚线的位置不同,这个虚线是打印机的可打区域,Lodop无法控制. 可打区域,顾名思义,就是打印机可以打印的区域, ...

  9. lodop同一页面一次性打印多次

    怎么让打印机打印双份?lodop有设置吗?SET_PRINT_COPIES名称:设置打印份数格式:SET_PRINT_COPIES(intCopies)功能:设置本次打印的份数结果:返回逻辑结果,成功 ...

随机推荐

  1. redis五中数据类型

    MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加 ...

  2. DateTime函数

    一.初始化: DateTime dt = , , ); DateTime dt1 = DateTime.Now; DateTime dt2 = DateTime.Today; DateTime dt3 ...

  3. Java并发包--ConcurrentHashMap原理解析

    ConcurrentHashMap实现原理及源码分析   ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参 ...

  4. 洛谷P2221 高速公路【线段树】

    题目:https://www.luogu.org/problemnew/show/P2221 题意:有n个节点排成一条链,相邻节点之间有一条路. C u v val表示从u到v的路径上的每条边权值都加 ...

  5. The 2019 China Collegiate Programming Contest Harbin Site J. Justifying the Conjecture

    链接: https://codeforces.com/gym/102394/problem/J 题意: The great mathematician DreamGrid proposes a con ...

  6. LaTex编译时出错:PK font *** could not be created

    参考https://blog.csdn.net/dancing11/article/details/60978642 在用TeXworks (Miktex) 编译OSA投稿模板时,遇到错误PK fon ...

  7. 四十三.MongoDB副本集 MongoDB文档管理

    一.部署MongoDB副本集 1.1 启用副本集配置并指定集群名称 rs1 1.2 定义集群成员列表 部署好机器51,52,53:51上配置 bind_ip=192.168.4.51(要改) port ...

  8. CF455C Civilization

    嘟嘟嘟 水题一道,某谷又恶意评分. 合并无非是将两棵树的直径的中点连一块,记原来两棵树的直径为\(d_1, d_2\),那么新的树的直径就是\(max(d_1, d_2, \lceil \frac{d ...

  9. centos 7 yum 安装 mysql glib 安装 mysql

    centos 7 YUM 在线安装版 1.wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm 下载 2.rpm ...

  10. 找不到编译器:wepy-compiler-less

    npm install less 后再 npm install wepy-compiler-less 解决