• 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 try
    25 {
    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>
  • 相关阅读:
    分布式缓存负载均衡的规则处理:虚拟节点对一致性哈希的改进
    GoldenGate实时投递数据到大数据平台(6)– HDFS
    OGG 12.3中支持系统procedure复制的几点说明
    使用GoldenGate初始化的两种方式
    传统OGG与Microservice Architecture OGG的通信
    利用Oracle GoldenGate记录源系统所有表的操作
    GoldenGate实时投递数据到大数据平台(5)
    GoldenGate 12.2抽取Oracle 12c多租户配置过程
    GoldenGate实时投递数据到大数据平台(4)- ElasticSearch 2.x
    GoldenGate实时投递数据到大数据平台(3)- Apache Flume
  • 原文地址:https://www.cnblogs.com/jameslong/p/3745732.html
Copyright © 2020-2023  润新知