最近遇到一个问题,客户方一台机器上连了很多打印机,让我们可以在进行不同业务的时候调用不同的打印机打印,找了很多资料,终于拼凑出能够解决的方法。
思路:通过修改默认打印机,进行打印,之后再把默认打印机改回原来的以便不影响客户的使用。
大体代码如下:
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>");
}
}
大体思路就是这样,由于本人也是第一次写,多以很多地方还可以优化,希望各位优化之后,回来再告诉我,十分感谢!
分享到:
相关推荐
在本文中,我们将讨论如何在 Web 应用程序中指定打印机进行打印。这个问题是许多开发者面临的挑战,因为在 Web 应用程序中,无法直接访问客户端的打印机。为了解决这个问题,我们可以使用一些 trick 来实现指定...
这种方式通常需要服务器端编程,如Java的iText库生成PDF,或者Node.js的pdfkit等库,以及客户端的JavaScript来处理文件下载和打印。 在实际开发中,考虑到兼容性和安全性问题,开发者可能需要结合多种技术来实现这...
在JavaScript(JS)中调用打印机并实现Web打印功能是一项重要的技术,特别是在开发网页应用程序时。Web打印机的设计和开发涉及到多个层面,包括浏览器兼容性、用户交互以及打印样式控制等。下面将详细介绍这一领域的...
本文将深入探讨如何利用`jQuery`调用打印机打印功能,以及相关知识点。 首先,我们需要理解浏览器的打印机制。在Web环境下,打印通常是通过调用浏览器的`window.print()`方法来实现的。这个方法会弹出一个打印预览...
在JavaScript(JS)中直接调用Word文档进行打印主要涉及到Web应用程序与本地文件系统的交互以及浏览器的安全限制。本文将深入探讨这一主题,并提供一些实现这一功能的方法。 首先,理解JavaScript在浏览器环境中的...
前端JS打印是指在网页中使用JavaScript来调用打印机进行打印。这种方式比较适用于在浏览器中实现打印功能。不过,根据描述,在当前环境中,只有Internet Explorer浏览器支持这种打印方式。如果想要实现远程打印机...
同时,考虑到兼容性和稳定性,需要对蓝牙打印机的不同型号和品牌进行适配,因为不同打印机可能支持的指令集有所不同。 在提供的`wx-bluetooth-print-demo-master`项目中,应该包含了实现这些功能的示例代码,开发者...
在JavaScript中,可以使用window.print()方法来唤起系统的打印对话框,让用户选择打印机并进行打印操作。这对于开发在线银行系统或其他需要直接从网页打印存折的应用来说非常实用。不过,js调用打印机时需要注意隐私...
JS打印WEB页面与打印预览是指在WEB页面中使用JavaScript语言来实现页面的打印和预览功能。以下是实现这个功能的三种方法: 第一种方法:使用CSS隐藏不打印内容 在这个方法中,我们可以使用CSS来隐藏不需要打印的...
本文将深入探讨“云端打印”这一主题,以及如何调用接口获取打印机列表,以便进行默认或指定打印机的PDF图片打印。 首先,我们要理解什么是云打印。云打印是一种基于云计算的服务,用户可以通过互联网访问,无需...
在JavaScript中,可以使用`window.print()`方法来触发浏览器的打印对话框,用户可以选择合适的打印机和打印设置,然后进行打印。但是,`window.print()`方法默认会打印整个网页,包括不必要的头部、尾部以及侧边栏等...
本文将深入探讨如何通过蓝牙连接Android设备到ESC/POS热敏打印机,并利用ESC/POS指令进行文本和图片的打印。 首先,我们需要理解Android蓝牙连接的基本流程。在蓝牙连接ESC/POS打印机时,Android设备扮演客户端...
接下来,使用 JavaScript 初始化 `typewriter.js`,指定要打印的元素ID和相关配置: ```javascript var typewriter = new Typewriter('#myTypewriter', { strings: ['console.log("Hello, World!");'], start...
通过前台代码用于打印页面带有指定的水印内容,用于防伪和表明出处。所给代码是简易版的HTML页面,包含2部分,主体内容和附加水印
js打印,将数据读取到打印页面,用js截取,从而实现打印指定模块!打印的时候如果页面数据过多,打印机可以自动分页打印!我的是hp的打印机,下载的朋友可以试试!注意,本人声明:这个并不是针对于打印分页而写,...
创建一个Socket实例,指定协议类型(TCP或UDP)和IP地址,然后使用Connect方法连接到打印机的IP和端口。 接着,我们需要理解ESC/POS指令集。ESC/POS是 Epson 提出的一种打印机控制语言,广泛应用于各种点阵式、热敏...
TSC打印机驱动是专为这些设备设计的软件,使得用户可以通过各种操作系统进行打印任务。 `TSCLib.dll`是TSC打印机驱动的一部分,它是一个动态链接库(Dynamic Link Library),用于在Windows操作系统中提供底层的...
这是JavaScript中最基础的打印功能,通过在JavaScript代码中调用`window.print()`,浏览器会弹出打印对话框,用户可以选择打印机设置并进行打印。此函数适用于整个网页或当前视图的内容。 2. **CSS媒体查询**: ...
2. 在JavaScript中调用JsPrint提供的方法,指定要打印的DOM元素。例如,如果你有一个ID为"printArea"的DIV: ```javascript var printOptions = { elements: ['#printArea'], header: '打印标题', footer: '打印...
调用`EnumPrinters`时,你需要指定一些参数,例如打印机类型(本地、网络等)和打印机信息级别,以便获取所需的具体数据。 ```cpp BOOL EnumPrinters( DWORD Flags, // 操作类型 LPCTSTR pName, // 计算机名 ...