1. 程式人生 > >使用JS列印網頁內容及圖片

使用JS列印網頁內容及圖片

由於要列印繪製生成的圖片,於是選擇使用JS去列印,方法及遇到的問題如下:

目前在chrome核心瀏覽器和IE實驗成功,好用

指定部分內容列印

function doPrint() {
            bdhtml = window.document.body.innerHTML;
            sprnstr = "<!--startprint-->";
            eprnstr = "<!--endprint-->";
            prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr) + 17);
            prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));
            window.document.body.innerHTML = prnhtml;
            if (getExplorer() == "IE") {
                pagesetup_null();
            }
            window.print();
        }
我的需求是列印圖片,所以在我圖片的部分
<!--startprint-->
                    <img id="image_ZKZ" runat="server" src="" />
                    <!--endprint-->
增加了上述用於截斷字串的內容,這樣通過doPrint()方法就能夠擷取到指定的圖片內容了

這種情況下列印使用chrome是正常列印,並且沒有頁首頁尾,但是IE則仍然有,於是在 doPrint()   方法中使用了getExplorer()  方法來獲取瀏覽器型別,以及pagesetup_null()

 來去掉IE的頁首頁尾,兩個方法如下:

// 獲取瀏覽器
        function getExplorer() {
            var explorer = window.navigator.userAgent;
            //ie 
            if (explorer.indexOf("MSIE") >= 0) {
                return "IE";
            }
                //firefox 
            else if (explorer.indexOf("Firefox") >= 0) {
                return "Firefox";
            }
                //Chrome
            else if (explorer.indexOf("Chrome") >= 0) {
                return "Chrome";
            }
                //Opera
            else if (explorer.indexOf("Opera") >= 0) {
                return "Opera";
            }
                //Safari
            else if (explorer.indexOf("Safari") >= 0) {
                return "Safari";
            }
        }

// IE設定去除頁首頁尾
        function pagesetup_null() {
            var hkey_root, hkey_path, hkey_key;
            hkey_root = "HKEY_CURRENT_USER";
            hkey_path = "\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
            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) { }
        }

但是這樣列印IE的頁邊距比較寬,所以相對chrome有點被縮放的感覺,但是整體還可以沒有很誇張