您的位置:首页 > 其它

浏览器控制打印机在线打印

2012-04-15 16:56 225 查看
一、直接使用window.print()

<script>
function print() {
bdhtml=window.document.body.innerHTML;
sprnstr="<!--startprint-->";
eprnstr="<!--endprint-->";
prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17); //17为sprnstr的length
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
window.document.body.innerHTML=prnhtml;
window.print();
location.reload();
}
</script>

<!--startprint-->
<div>要打印的内容...</div>
<!--endprint-->
<input type="button" value="打印" onclick="print();" />


二、使用IE内置的浏览器控件WebBrowser(无需用户下载)

注:要在IE的"Internet选项——安全——自定义级别——把对没有标记为安全的ActiveX控件进行初始化和脚本运行,设置为启用"

<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" id="WebBrowser1" width="0" height="0" VIEWASTEXT></OBJECT>

<script>
var HKEY_Root,HKEY_Path,HKEY_Key;
HKEY_Root="HKEY_CURRENT_USER";
HKEY_Path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
var head,foot,top,bottom,left,right;

//取得页面打印设置的原参数数据
function PageSetup_temp(){
try{
var Wsh=new ActiveXObject("WScript.Shell");
HKEY_Key="header";
//取得页眉默认
head = Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);
HKEY_Key="footer";
//取得页脚默认值
foot = Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);
HKEY_Key="margin_bottom";
//取得下页边距
bottom = Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);
HKEY_Key="margin_left";
//取得左页边距
left = Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);
HKEY_Key="margin_right";
//取得右页边距
right = Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);
HKEY_Key="margin_top";
//取得上页边距
top = Wsh.RegRead(HKEY_Root+HKEY_Path+HKEY_Key);

Wsh = null;
}
catch(e){
//alert("不允许使用ActiveX控件!");
}
}

//设置网页打印的页眉页脚和页边距
function PageSetup_Null(){
try{
var Wsh=new ActiveXObject("WScript.Shell");
HKEY_Key="header";
//设置页眉(为空)
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");
HKEY_Key="footer";
//设置页脚(为空)
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");
HKEY_Key="margin_bottom";
//设置下页边距(0)
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0");
HKEY_Key="margin_left";
//设置左页边距(0)
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0");
HKEY_Key="margin_right";
//设置右页边距(0)
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0");
HKEY_Key="margin_top";
//设置上页边距(8)
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0");

Wsh = null;
}
catch(e){
//alert("不允许使用ActiveX控件");
}
}

//设置网页打印的页眉页脚和页边距为默认值
function PageSetup_Default(){
try{
var Wsh=new ActiveXObject("WScript.Shell");
HKEY_Key="header";
//还原页眉
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,head);
HKEY_Key="footer";
//还原页脚
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,foot);
HKEY_Key="margin_bottom";
//还原下页边距
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,bottom);
HKEY_Key="margin_left";
//还原左页边距
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,left);
HKEY_Key="margin_right";
//还原右页边距
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,right);
HKEY_Key="margin_top";
//还原上页边距
Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,top);

Wsh = null;
}
catch(e){
//alert("不允许使用ActiveX控件");
}
}

//使用顺序
function printorder(){
PageSetup_temp();//取得默认值
PageSetup_Null();//设置页面
WebBrowser1.execwb(6,6);//打印页面
PageSetup_Default();//还原页面设置
window.close();
}
</script>

<script>
/*
* 打印
*/
function print(){
PageSetup_temp();//取得默认值
PageSetup_Null();//设置页面
WebBrowser1.ExecWB(6,1);//直接打印
PageSetup_Default();//还原页面设置
setTimeout("printClose()", 5000); //这里延时要长点,要先等打印后再关闭
}

/*
* 打印预览
*/
function printPreview(){
PageSetup_temp();//取得默认值
PageSetup_Null();//设置页面
WebBrowser1.ExecWB(7, 1);//打印预览
PageSetup_Default();//还原页面设置
setTimeout("printClose()", 100); //没有延时不会自动关闭
}

/*
* 打印设置
*/
function printSetting(){
WebBrowser1.ExecWB(8,1);
}

/*
* 关闭打印页面
*/
function printClose(){
WebBrowser1.ExecWB(45,1); //关闭窗体无提示
}
</script>

<!-- 我是将内容放在新页面中打印的 -->
<body>
<div>要打印的内容</div>
<div>
<input type="button" value="打印" onclick="print()" />
<input type="button" value="打印预览" onclick="printPreview()" />
<input type="button" value="打印设置" onclick="printSetting()" />
</div>
</body>


关于这个组件还有其他的用法,列举如下:

WebBrowser.ExecWB(1,1); //打开
Web.ExecWB(2,1); //关闭现在所有的IE窗口,并打开一个新窗口
Web.ExecWB(4,1); //保存网页
Web.ExecWB(6,1); //打印
Web.ExecWB(7,1); //打印预览
Web.ExecWB(8,1); //打印页面设置
Web.ExecWB(10,1); //查看页面属性
Web.ExecWB(15,1); //好像是撤销,有待确认
Web.ExecWB(17,1); //全选
Web.ExecWB(22,1); //刷新
Web.ExecWB(45,1); //关闭窗体无提示


打印时会把整个页面都打印出来的,页面里面有什么东西就打印出来,我们有时候只需要打印数据表格,这时我们就要写一个样式了,把不想打印的部份隐藏起来:

<style type="text/css" media="print">
.noprint {
display: none;
}
</style>

<!-- 然后使用样式就可以 -->
<p class="noprint">不需要打印的地方</p>


转载:http://tiwson.iteye.com/blog/617976
http://www.cnblogs.com/samlin/archive/2008/04/13/1151265.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: