批量打印,同時打印多個頁面,有兩種思路:
第一種思路,將所有的頁面內容加載到一個頁面中,然后再打印。這種打印方式有幾個弊端,頁面的樣式會丟失,頁面太多同時加載到一個頁面中,數據量太大,響應時間很長,消耗的資源過大,很可能導致瀏覽器崩潰,最終打印失敗。針對這種打印方式的弊端,可以通過限制批量打印數量的方法來避免。但樣式的問題,似乎找不到解決方案。
第二種思路,調用每個頁面直接打印方法,逐個頁面打印。這種打印方式的弊端就是,調用每個頁面的打印方法都會彈出框,等待用戶確認打印才行。
1>第一種思路
第一步:將所有頁面通過iframe加載到一個頁面中,每個頁面一個iframe
第二部:抓取每個iframe中的內容,將其加載到一個新的窗口中,每個ifrmae中的內容在打印的時候都強制分頁
第三部:調用新窗口的打印方法。
代碼如下:
$(function () { //在iframe中顯示需要打印的頁面,設置iframe的高度為自適應高度 $("iframe").each(function () { $(this).load(function () { $(this).height($(this).contents()[0].body.scrollHeight); }); }); }); //將所有iframe中的內容都加載到一個新的窗口中,然后調用新窗口的打印方法 function printAll() { var win = window.open('about:blank'); var body = ""; $("iframe").each(function (i) { var pageNextStr = '<div style="page-break-after: always;"></div>'; var pageNext = $(pageNextStr); pageNext.append($(this).contents()[0].find("from")[0].innerHTML); body += pageNext[0].outerHTML; }); win.document.body.innerHTML += body; win.print(); win.close(); }
程序員的基礎教程:菜鳥程序員