最近遇到一个问题,客户方一台机器上连了很多打印机,让我们可以在进行不同业务的时候调用不同的打印机打印,找了很多资料,终于拼凑出能够解决的方法。
思路:通过修改默认打印机,进行打印,之后再把默认打印机改回原来的以便不影响客户的使用。
大体代码如下:
var defaultPrinter='${defaultPrinter}';//默认打印机(通过后台传过来的)
var printName='${printName}';//实际打印机(通过后台传过来的,页面上有个下拉框,列出了全部打印机名字)
var localtor=new ActiveXObject("WbemScripting.SWbemLocator");
var service=localtor.ConnectServer(".");
var properties=service.ExecQuery("SELECT * FROM Win32_Printer");
//修改成指定打印机
var e=new Enumerator(properties);
for(;!e.atEnd();e.moveNext()){
var p=e.item();
if(p.Name==printName){
p.setDefaultPrinter();
break;
}
}
execScript('document.getElementById("WebBrowser").execwb 6, 2, 3','vbscript');
//改回原默认打印机
var el=new Enumerator(properties);
for(;!el.atEnd();el.moveNext()){
var p=el.item();
if(p.Name==defaultPrinter){
p.setDefaultPrinter();
break;
}
}
页面代码,包括显示所有打印机下拉列表
html:
<input type="checkbox" id="defaultPrinter" name="defaultPrinter" checked="checked" onclick="isSelectPrinter()"/>使用默认打印机
<div id="showPrinterList" style="position: absolute; top: 106.5mm; left: 143mm;">
请选择打印机:
<select id="printer" name="printer" style="font-size: 12px;height: 16px;"></select>
</div>
js:
//给checkbox和select赋值,赋值用的是jquery
function getPrintInfo(){
//系统信息获取
var localtor=new ActiveXObject("WbemScripting.SWbemLocator");
var service=localtor.ConnectServer(".");
//取得默认打印机
var defaultPrint;
var defPrint=service.ExecQuery("SELECT * FROM Win32_Printer Where Default = TRUE");
var e=new Enumerator(defPrint);
for(;!e.atEnd();e.moveNext()){
var p=e.item();
defaultPrint=p.Name
}
var properties=service.ExecQuery("SELECT * FROM Win32_Printer");
var e=new Enumerator(properties);
for(;!e.atEnd();e.moveNext()){
var p=e.item();
if(p.Name==defaultPrint){
$('#defaultPrinter').val(p.Name);
}
$("#printer").append("<option value='"+p.Name+"'>"+p.Name+"</option>");
}
}
大体思路就是这样,由于本人也是第一次写,多以很多地方还可以优化,希望各位优化之后,回来再告诉我,十分感谢!
分享到:
相关推荐
通过前台代码用于打印页面带有指定的水印内容,用于防伪和表明出处。所给代码是简易版的HTML页面,包含2部分,主体内容和附加水印
js自定义区域打印,实现自定义区域打印,js调用打印机实现打印
该文件中是一段js调用 浏览器的 打印功能 实践, 其中 详细的说明和注释。 但是 如果你需要调用起打印机 的话, 则需要用户先行 绑定打印机设备, 确保可以在打印页面选择打印机, 适用大部分浏览器。
js打印,将数据读取到打印页面,用js截取,从而实现打印指定模块!打印的时候如果页面数据过多,打印机可以自动分页打印!我的是hp的打印机,下载的朋友可以试试!注意,本人声明:这个并不是针对于打印分页而写,...
IE浏览器中访问COM口收发数据,可以访问com口打印机、GSM 猫、手机、串口扫描枪等设备,支持使用HEX 字节发送接收,更好地支持各种COM口设备,可以用于web系统中访问串口或者虚拟串口的硬件设备。
这是在网上找的一个打印的控件,还比较不错,可以指定打印机名称进行打印,并且不会像JS里面的window.print()会弹出选择打印机这个框,这一特点正好满足我的需求,现在上传上来供大家研究
最新版本Lodop打印控件,可用于单页打印,多页连续打印。可设置符合产品需求的打印样式和设计
控件功能强大,却简单易用,所有调用如同JavaScript扩展语句, 主要接口函数如下: PRINT_INIT 打印初始化 SET_PRINT_PAGESIZE 设定纸张大小 ADD_PRINT_HTM 增加超文本项 ADD_PRINT_TEXT 增加纯文本项 ADD_PRINT_TABLE ...
web打印的好东西,千万不要错过,10分解决你Web打印问题,内附多种打印实例,简单实用,只能设置10分资源分,真想要50分!!! 专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码生成复杂打印页。 控件功能...
<br/>功能介绍: 1 设置页眉页脚 2 指定纸张大小 3 设置纸张方向 4 设置页边距 5 选择指定的打印机 6 无需用户确认,JS直接调用打印预览 7 无需用户确认,JS直接调用打印...
主要介绍了vue实现打印功能的两种方法,文中通过两种方法给大家介绍了指定不打印区域的解决方法,需要的朋友可以参考下
17如何发打印机指令或直接读写端口见样例十七 18如何打印幅面高度不固定的票据见样例十八 19如何内嵌显示及预览时包含背景图见样例十九 20如何强制分页并预览多页卡片见样例二十 21如何控制打印维护的功能权限见样例...
JavaScript打印页面指定div区域原理:使用window.open()在浏览器打开一个新的页面(window), 使用 window.[removed]()将指定div区域的内容写入新窗口文档,document.close()关闭文档,使用window.print()调用打印机...
ReYoPrint是一个ActiveX WEB打印控件(96k,支持windows7及IE8,带数字签名), 这个控件主要实现对打印参数的控制,ReYoPrint使用户通过JavaScript脚本可以控制分页,页眉页脚,页边距,打印方向,自定义纸张,直接...
>可以不显示票据,直接指定票据的url,进行打印。 >支持票据及其附件的批量打印。 >可以取得本机中的可用打印机,可用纸张类型列表,帮您设计出更友好的参数设置界面。 >与您项目采用的技术标准无关,j2ee,.net...
Lodop设计者对WEB下的打印开发任务进行了分类汇总,高度抽象,设计出仅用几个功能函数,就可实现复杂的打印任务,尽量减少使用者的知识累赘。控件发布包有3个系统文件组成,全部功能用几个控件参数和2组功能函数来...
>支持javascript设置打印参数,如输出打印机,页型,打印方向等 ,这使操作人员可以轻轻松松点击打印就可以了,不需要每次打印前手动修改这些参数。 >某一票据的打印时打印参数自动保留,待下一次打印同一票据时,...
主要目的是允许从本地网络中的任何设备进行更快的打印(例如,与Google Cloud Print相比)和简单的打印服务器API GET /printers获取可用打印机的列表。 返回对象的JSON数组POST /print print-打印指定的URL。 请求...