JS打印打印制定区域内容

来源:互联网 发布:淘宝客默认佣金是多少 编辑:程序博客网 时间:2024/05/17 08:57

JS打印指定区域内容

  很多时候,我们在做系统的时候要做打印功能,打印在js中其实很简单,不过这个很简单的代码并不能满足我们的特定需求,比如我们需要打印的表单在很多文字的中间,或者文字中包含一些广告或者图片什么的,这就很难用:window.print();这时,我们就要分区域的打印,将需要打印的内容提取出来让打印机知道,而不是一股脑的全部打印!

下面是两种实现的方法:

  第一种:区域划分法。将要打印的部分用特殊的字符标记起来进行打印。这样下来还是有页眉和页脚,可以写去页眉页脚的方法放进去。JS 实现简单的页面局部打印

复制代码
 1 function preview(oper) {  2 if (oper < 10){  3 bdhtml=window.document.body.innerHTML;//获取当前页的html代码  4 sprnstr="<!--startprint"+oper+"-->";//设置打印开始区域  5 eprnstr="<!--endprint"+oper+"-->";//设置打印结束区域  6 prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //从开始代码向后取html  7  8 prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html  9 window.document.body.innerHTML=prnhtml; 10 window.print(); 11 window.document.body.innerHTML=bdhtml; 12 13 }14  else{ 15 window.print(); 16 } 17 18 } 
复制代码

  使用时,将页面内要打印的内容加入中间<!--startprint1-->XXXXX<!--endprint1-->,再加个打印按纽 onclick=preview(1)

  第二中:组件法。WebBrowser是IE内置的浏览器控件,无需用户下载。

  WebBrowser控件 :
  <object ID='wb' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object> //放进<body>中
  WebBrowder控件的方法 :

1 //打印2 wb.ExecWB(6,1);3 //打印设置4 wb.ExecWB(8,1);5 //打印预览6 wb.ExecWB(7,1); 

  关于这个组件还有其他的用法,列举如下:
  wb.ExecWB(1,1) 打开
  wb.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
  wb.ExecWB(4,1) 保存网页
  wb.ExecWB(6,1) 打印
  wb.ExecWB(7,1) 打印预览
  wb.ExecWB(8,1) 打印页面设置
  wb.ExecWB(10,1) 查看页面属性
  wb.ExecWB(15,1) 好像是撤销,有待确认
  wb.ExecWB(17,1) 全选
  wb.ExecWB(22,1) 刷新
  wb.ExecWB(45,1) 关闭窗体无提示
  但是打印是会把整个页面都打印出来的,页面里面有什么东西就打印出来,我们有时候只需要打印数据表格,这时我们就要写一个样式了。把不想打印的部份隐藏起来:
样式内容:

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

  然后使用样式就可以: <p class="noprint">不需要打印的地方</p> ,代码如下:

复制代码
 1 <script language="javascript"> 2 function printsetup()...{ 3 // 打印页面设置 4 wb.execwb(8,1); 5 } 6 function printpreview()...{ 7 // 打印页面预览 8  9 wb.execwb(7,1);10 11 }12 13 function printit()14 ...{15 if (confirm('确定打印吗?')) ...{16 wb.execwb(6,6)17 }18 }19 </script> 
复制代码
1 <OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0></OBJECT>2 <input type=button name=button_print value="打印" class="noprint" onclick="javascript:printit()">3 <input type=button name=button_setup value="打印页面设置" class="noprint" onclick="javascript:printsetup();">4 <input type=button name=button_show value="打印预览" class="noprint" onclick="javascript:printpreview();">

  下面是去除页脚页眉的js代码,代码如下:

复制代码
 1 <script> 2 var HKEY_Root,HKEY_Path,HKEY_Key; 3 HKEY_Root="HKEY_CURRENT_USER"; 4 HKEY_Path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"; 5 //设置网页打印的页眉页脚为空 6 function PageSetup_Null() 7 { 8 try 9 {10 var Wsh=new ActiveXObject("WScript.Shell");11 HKEY_Key="header";12 Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");13 HKEY_Key="footer";14 Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"");15 }16 catch(e)17 {18 19 }20 }21 //设置网页打印的页眉页脚为默认值22 function PageSetup_Default()23 {24 try25 {26 var Wsh=new ActiveXObject("WScript.Shell");27 HKEY_Key="header";28 Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P");29 HKEY_Key="footer";30 Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&u&b&d");31 }32 catch(e)33 {}34 }35 36 </script>
复制代码

  注意有可能执行时,会出现没有效果的错误,这时原因是可能你的浏览器限制了active对象的创建,只要取消限制就好了,取消方法如下:打开你的ie浏览器internet选项—— 安全—— 自定义级别—— 把对没有标记为安全的activex控件进行初始化和脚本运行设置为启用,这样在加打印按钮的时候,只要加个事件触发就好了。



http://www.cnblogs.com/dudumao/archive/2012/10/04/2711571.html谢谢,学习了

0 0
原创粉丝点击