1)javascript版本,缺陷直接打印不能实现。
使用document.all.WebBrowser.ExecWB(6,6)
2)javascript实现2,缺陷:需要装打印机驱动
用javascript 在客户端直接打印输出,
这个方案的思路是用windows的FileSystemObject,打开COM1或者LPT1,然后就把指令写进去就可以了,代码片断如下:
<script Language=JavaScript>
function print_onclick() {
var objfs = new ActiveXObject("Scripting.FileSystemObject");
var objprinter=objfs.CreateTextFile("COM1:",true);
objprinter.Write(String.fromCharCode(0x1B) + "@");
objprinter.Writeline("_________________");
objprinter.Writeline("| 您打印的数据是飞龙环保网址:http://www.hnjnd.com/") ;
objprinter.Writeline("|________________|") ;
objprinter.Close();
}
</script>
这样就可以直接打印了。这样打印的相同的内容几乎是马上就完成了,基本不用等待,比40s的时间不知道快了多少倍。
3)用VBscript.缺陷:企业开发中用的越来越少吧
6=OLECMDID_PRINT 2=OLECMDEXECOPT_DONTPROMPTUSER, 2+1=PRINT_WAITFORCOMPLETION + PRINT_DONTBOTHERUSER WB.ExecWB 6, 2, 3, 0 <HTML> <HEAD> <OBJECT ID="WB" WIDTH="0" HEIGHT="0" CLASSID="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT> <SCRIPT LANGUAGE="VBScript"> Sub window_onunload On Error Resume Next Set WB = nothing End Sub Sub vbPrintPage ( x , y , z ) OLECMDID_PRINT = 6 OLECMDEXECOPT_DODEFAULT = 0 OLECMDEXECOPT_PROMPTUSER = 1 OLECMDEXECOPT_DONTPROMPTUSER = 2 On Error Resume Next WB.ExecWB x, y, z, 0 End Sub </SCRIPT> </HEAD> <BODY> <TABLE BORDER=1><TR><TD> <INPUT TYPE="BUTTON" VALUE="Print" ONCLICK="vbPrintPage 6, 2, 3"><BR> <INPUT TYPE="BUTTON" VALUE="Preview" ONCLICK="vbPrintPage 7, 1, 0"><BR> <INPUT TYPE="BUTTON" VALUE="Page Setup" ONCLICK="vbPrintPage 8, 1, 0"><BR> </TD> <TD bgcolor="green">Print Test </TD></TR></TABLE> </BODY> </HTML>
4)另外补充两个知识:
1页面打印的时候当调用“页面设置”命令,则页面html页面会停止加载,也就是说打印机设置和html加载时同步的,不是异步的。
2document.execCommand(Stop)命令可以停止页面加载,继续加载命令还在研究中