首页 > 代码库 > IE下实现打印功能

IE下实现打印功能

先贴代码:

<html>
<head>
    <style type="text/css">
        *{margin:0px;padding:0px;}
        .noprint{margin:20px 0px;}
        .noprint input{padding:5px 10px;margin:10px 5px;}
        #p{display:none;}
    </style>
    
    <!--该样式表设置的是打印时的样式,要放到其他style的下面,否则会被覆盖-->
    <style media="print">
        .noprint { display : none;}
        #p{display:block;}
    </style>

    <script>
        function doPrintSetup() {
            IEPrinter.setup();
        }
        function doPrintPreview() {
            IEPrinter.preview();
        }
        function doPrint() {
            IEPrinter.print();
        }
        
        ////边距设置时要注意数值单位
        var IEPrinter = (function(){
            var HKEY_Root, HKEY_Path, HKEY_Key
                ,HKEY_Root = "HKEY_CURRENT_USER"
                ,HKEY_Path = "\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"
                ,Wsh,PRINT_SETTING={},printWB;
            
            window.onload= Init;
            
            ////保存默认值
            function Init(){
                ////生成Object标签
                
                var html = "<object id=‘printWB‘ classid=‘clsid:8856F961-340A-11D0-A96B-00C04FD705A2‘ style=‘none‘></object>";
                document.body.innerHTML += html;
                printWB = document.getElementById("printWB");
                try {
                    Wsh = new ActiveXObject("WScript.Shell");
                }catch (e) {
                    return alert("请使用IE浏览器");
                }
                
                //页眉
                PRINT_SETTING.Header = ReadReg("header");
                //页脚
                PRINT_SETTING.Footer = ReadReg("footer");
                //下页边距
                PRINT_SETTING.MarginBottom = ReadReg("margin_bottom");
                //左页边距
                PRINT_SETTING.MarginLeft = ReadReg("margin_left");
                HKEY_Key = "margin_right";
                //右页边距
                PRINT_SETTING.MarginRight = ReadReg("margin_right");
                //上页边距
                PRINT_SETTING.MarginTop = ReadReg("margin_top");
                //【启用缩小字体填充】yes|no
                PRINT_SETTING.ShrinkToFit = ReadReg("Shrink_To_Fit");
                //【打印背景颜色和图像】yes|no
                PRINT_SETTING.PrintBackground = ReadReg("Print_Background");
            }
            
            function SetPrintOpt(opt) {
                //设置页眉
                SetReg("header",opt.Header);
                //设置页脚
                SetReg("footer",opt.Footer);
                //设置下页边距
                SetReg("footer",opt.MarginBottom);
                //设置左页边距
                SetReg("margin_left",opt.MarginLeft);
                //设置右页边距
                SetReg("margin_right",opt.MarginRight);
                //设置上页边距
                SetReg("margin_top",opt.MarginTop);
                //设置【启用缩小字体填充】
                SetReg("Shrink_To_Fit",opt.ShrinkToFit);
                //设置【打印背景颜色和图像】
                SetReg("Print_Background",opt.PrintBackground);
            }
            
            function ReadReg(key){
                return Wsh.RegRead(HKEY_Root + HKEY_Path + key);
            }
            
            function SetReg(key,val){
                Wsh.RegWrite(HKEY_Root + HKEY_Path + key,val);
            }
            
            return {
                setInitOption:SetPrintOpt
                ////打开打印设置窗口
                ,setup:function(){
                    printWB.ExecWB(8, 1);
                }
                ,preview:function(){
                    printWB.ExecWB(7, 1);
                }
                ,print:function(){
                    printWB.ExecWB(6, 6);
                }
            };
        }());
    </script>
</head>
<body>
    <div id="noprint" class="noprint">
        <p>点击【打印】按钮前要更改浏览器设置:IE7及IE8用户,请先选择浏览器的“工具”-->“Internet选项”-->“安全”-->“自定义级别”中的</p>
        <p>“对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本”以及“下载未签名的ActiveX控件”设置为“启用”或“提示”。</p>
        <p>IE8以上用户,请先选择浏览器右上角的设置按钮然后选择“Internet选项”,后续操作同上。</p>
        <hr />
        
        <input type="button" value="打印设置" onclick="doPrintSetup();" />
        <input type="button" value="打印预览" onclick="doPrintPreview();" />
        <input type="button" value="打印准考证" onclick="doPrint();" />
    </div>
    <p id="p">ppp</p>
    <span>spannnn</span>
</body>
</html>

着重点有这么几个

1.

<style media="print">
   .noprint { display : none;}
   #p{display:block;}
</style>

该标签设置的样式只针对打印时的效果,所以可以设置某些打印时要隐藏,或者只有打印时才显示的内容。而且该标签最好放到其他样式表的后面,否则会被覆盖。

2.使用打印功能要对浏览器做相应的设置才可以。

IE7及IE8:“工具”-->“Internet选项”-->“安全”-->“自定义级别”中的“对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本”以及“下载未签名的ActiveX控件”设置为“启用”或“提示”。
IE8以上用户,请先选择浏览器右上角的设置按钮然后选择“Internet选项”,后续操作同上。