javascript页面打印

打印本身比较简单,但要考虑到具体的需求。比如

1. 多浏览器:

if (isIE()) {
    //打印预览
    WebBrowser1.execWB(7, 1);
}
else {
    window.print();
}

如代码所示, IE浏览器与其他浏览器的使用的方式是不一样的,如在chrome浏览器中使用window.print显示的是打印预览,而在IE中显示的是打印界面(选择打印机),如果想在IE中显示打印预览,则需要在代码中增加如下的标签,在使用如上的WebBrowser1.

<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>

 

2. 局部打印。

一般js打印功能其实就是调用的页面的打印功能, 所以默认是打印整个页面,也就是document.body。如果要打印部分页面的话,可以有三种方案:

一是把要打印的DIV区域赋值给document.body, 待打印完成后,再还原。代码如下:

 var bodyHtml = document.body.innerHTML;//获取当前页的html代码
 var divPrint = document.getElementById('divprint');

 if (divPrint) {
       document.body.innerHTML = divPrint.innerHTML;
       if (isIE()) {
           if (WebBrowser1) {
                 //打印预览
                 WebBrowser1.execWB(7, 1);
           } 
           window.close();
       }
       else {
            window.print();
       }
  }
 document.body.innerHTML = bodyHtml;   

二是把要打印的区域在新的页面中打开,再执行打印。

   这里有个小提示,在新的页面中打开,我的处理方法是打开新页面时,隐藏要打印的页面,直接弹出打印预览,打印完成后直接关闭窗口,这样体验会好些。

三是使用CSS样式,这样就不打印指定样式的DIV,如下代码

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

 

3. 取消页眉页角

打印预览时我们会发现,页眉页角的东西不是我们想要的,如果想要去掉的,最好的方式还是通过页面设置

如果是IE浏览器的话,可以通过代码来设置,但是需要对浏览器进行设置。

代码如下:

这段代码是从网上找地,特此说明!!!

var hkey_root,hkey_path,hkey_key;
hkey_root="HKEY_CURRENT_USER";
hkey_path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";


//网页打印时清空页眉页脚
function pagesetup_null() {
    try {
        var RegWsh = new ActiveXObject("WScript.Shell");

        hkey_key = "header"
        RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "")
        hkey_key = "footer"
        RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "")
    } catch (e) {
        console.dir(e);
    }
}
function pagesetup_default() {
    try {
        var RegWsh = new ActiveXObject("WScript.Shell")
        hkey_key = "header"
        RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "&w&b页码,&p/&P")
        hkey_key = "footer"
        RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "&u&b&d")
    } catch (e)  {
        console.dir(e);
    }
}

 

posted @ 2017-04-05 16:01  二奎  阅读(281)  评论(0编辑  收藏  举报