1. 程式人生 > >網頁pdf列印——window.print()

網頁pdf列印——window.print()

瀏覽器核心是提供了列印功能的,只要在控制檯呼叫window.print()方法就可以將網頁列印成pdf檔案到我們選擇的路徑,但是列印的內容和格式可能不是我們想要的。所以寫這篇部落格介紹一種通用的方法:

下面是整個demo的程式碼:

<html>
<head>
            <script src="./js/jquery-1.7.2.min.js"></script>
</head>
<script>
      //頁面開啟時就初始化第一頁
      $(function (){
            $("body"
).append("<div class='page'; style='page-break-after:always; background-color:red; width:700px'></div>"); }); //開啟新頁面的方法,在body中插入新的div,並且設定屬性 page-break-after:always function newPage(){ $("body").append("<br><div class='page'; style='page-break-after:always; background-color:red; width:700px'></div>"
); } //向頁面中插入內容,如果頁面高度大於200,就換新的一頁 function insert(){ if( $(".page:last").outerHeight()>200){ newPage() }else{ $(".page:last").append("<p>ertyuiopgehrtasbsdfghsfadhfdjadsfgh</p>"); } } //點選列印時,替換innerHTML內容並呼叫瀏覽器列印方法
function printPage(){ $("body").append("<!--endprint-->");//列印之前新增結尾標誌 bdhtml=window.document.body.innerHTML; //獲取到頁面html sprnstr="<!--startprint-->"; eprnstr="<!--endprint-->"; //找到兩個標籤 prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17); prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr)); //切除標籤以外的東西 window.document.body.innerHTML=prnhtml; window.print(); window.document.body.innerHTML=bdhtml;//將頁面重新改回原始樣式 window.location.href=window.location.href; //此處是業務需要 由於有動態生成資料 直接返回樣式會亂 所以手動重新整理了一下 }
</script> <body> <input type="button" onclick="printPage()" value="列印"/> <input type="button" onclick="insert()" value="插入"/> <input type="button" onclick="newPage()" value="下一頁"/> <!--startprint--> </body> </html>

這裡有幾個比較重要的地方

  1. page-break-after:always
  2. window.print();
  3. sprnstr=”<!--startprint-->“;
    eprnstr="<!--endprint-->“;

1、page-break-after:always

如果只是單純呼叫window.print();這個方法的話,瀏覽器會把整個網頁拿下來,從上到下渲染到pdf上面,如果一頁不夠會主動再起一頁。page-break-after:always這個屬性的作用就是告訴瀏覽器,看到這個屬性的標籤後請直接給我再起一頁,不管上一頁有沒有排滿。這個屬性有利於我們控制自己的頁面的樣式。
所以我們每一頁的開始應該要加上這個屬性,這樣就能按照我們的意願去分頁了

2、window.print();

這個是核心方法,沒什麼好說的。呼叫它就會將瀏覽器中innerHTML中的內容列印。

3、sprnstr=”<!--startprint-->“; eprnstr="<!--endprint-->“;

這兩個是我們人為設定的節點,這兩個節點之間就是點選列印按鈕後要列印的內容,其他部分會被忽略。相當於是將網頁中我們不需要列印的地方擷取掉了。比如我這個deno中的按鈕就是我不需要的。我將它放在這兩個標籤外面就可以了。具體實現方式如下:

            bdhtml=window.document.body.innerHTML;  //獲取到頁面html
            sprnstr="<!--startprint-->";
            eprnstr="<!--endprint-->"; //找到兩個標籤
            prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);
            prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr)); //切除標籤以外的東西
            window.document.body.innerHTML=prnhtml;

相關推薦

網頁pdf列印——window.print()

瀏覽器核心是提供了列印功能的,只要在控制檯呼叫window.print()方法就可以將網頁列印成pdf檔案到我們選擇的路徑,但是列印的內容和格式可能不是我們想要的。所以寫這篇部落格介紹一種通用的方法: 下面是整個demo的程式碼: <html>

瀏覽器區域性列印:Window.print()--無需外掛,相容IE

Window.print()很強大好不好 ,外掛啥的咱們不稀罕 區域性列印通過樣式和呼叫方法隱藏,詳情見註釋 <html> <head> <meta charset="UTF-8"> <meta http-equiv='Con

頁面區域性列印:Window.print()--無需外掛,相容IE

Window.print()很強大好不好 ,外掛啥的咱們不稀罕 區域性列印通過樣式和呼叫方法隱藏,詳情見註釋 <html> <head> <meta charset="UTF-8"> <meta http

網頁列印的簡單實現 + window.print

網頁列印的簡單實現 最經在做一個web小專案的時候,需要從網頁中打印出表格資料。 由於是第一次接觸網頁列印,所以從網路搜尋了很久,鑑於專案要求的列印功能比較簡單,最終放棄了諸多的開源專案,而是選擇了利用HTML+CSS實現列印功能。 列印整個網頁頁面 這

window.print()列印網頁中指定內容的實現方法

方法一: 正常情況下的列印是使用 window.print(); 直接整頁列印,但如果需要列印網頁中定義的部分內容,則可使用如下的方法: 1、在頁面的程式碼頭部處加入JavaScript: <script language=javascript> functio

前端網頁列印外掛print.js(可匯出pdf)

在前端開發中,想列印當前網頁的指定區域內容,或將網頁匯出為多頁的PDF,可以藉助print.js實現,該外掛輕量、簡單、手動引入、不依賴其他庫。示範專案github:https://github.com/lemoncool/print-demo。列印或匯出PDF後效果很好,下圖是對比圖: 關於print.

window.print()頁面列印之表格內容分頁填充進行分頁列印

   windwow.print()用於列印當前視窗的內容,很簡便,可當內容特殊並且列印有特殊需求的時候就要繞個圈了。下面是需要列印的表格:     當資料量少的時候像上面的表格一樣,中間的內容只有5條資料,打印出來在紙上會有空白,不太好。中間內

Js通過window.print();實現列印

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>消費記錄PDF<

window.print 頁面列印

window.print(); window.print()  實際上,是瀏覽器列印功能選單的一種程式呼叫。與點選列印功能選單一樣,不能精確分頁,不能設定紙型,套打的問題更加無從談起,只不過,可以讓使用者不用去點選單,直接點選網頁中的一個按鈕,或一個連結裡面呼叫罷了。事實上,很多使用者都是採用這種方式列印,但

指定window.print 列印區域

第一種方法:指定不列印區域 使用CSS,定義一個.noprint的class,將不列印的內容放入這個class內。 細如下: ? 1 2 3 <style media=print

JavaScript中window.print()列印

       JavaScript中使用window.print()列印方法時,列印的是當前頁的所有內容,所以如果直接在當前頁使用此列印方法應先儲存當前頁面再把列印部分替換當前頁面執行完之後再替換回來;或者新開啟一個頁面,把所列印的部分

網頁列印PDF檔案

在網頁上列印pdf檔案,有兩種方式:可以是在java後端通過呼叫iText PDF的jar包的方法實現PDF列印;也可以在前端呼叫lodop外掛列印pdf檔案. PDF檔案的內容可以是表格,圖片等等,也可以用於列印二維碼,條形碼,成績單等資訊. 方法一:java後端 如

利用JQuery在網頁列印PDF

專案需求是這樣的,在HTML網頁上點選列印,然後彈出chrome列印視窗,視窗中是後臺生成的PDF檔案。其中PDF檔案是由後臺servlet生成的。 第一種想法是,點選列印時,彈出一個新的視窗 window.open(url,"_blank");//url為

最簡單的列印方法window.print()

程式碼如下: function preview() {     bdhtml = window.document.body.innerHTML;     sprnstr = " ";   

使用jqprint()實現列印,封裝window.print()

可以輕鬆實現列印網頁上的某個區域請注意!很多朋友遇到 Cannot read property 'opera' of undefined 錯誤問題是juqery版本相容問題解決方法:加入遷移輔助外掛 jquery-migrate-1.0.0.js可解決版本問題引入<sc

window.print()打印頁面指定內容(使用iframe保證原頁面不失效)

class code order 一個 ctype ... html中 -c content 使用window.print()時會出現兩個問題: (1)直接使用window.print() 打印的是整頁內容-->無法實現打印指定區域 (2)打印時替換body中的內

python 2.7 命令列列印print、str()、repr()

**1.**Python列印值(命令列列印):會保持該值在python程式碼中的狀態,不是使用者所希望看到的狀態 >>> "hello" 'hello' #python打印出的值是給python理解的。python理解為字串,所以帶引號 **2.**P

怎麼用Python Flask模板jinja2在網頁列印顯示16進位制數?

問題:Python列表(或者字典等)資料本身是10進位制,現在需要以16進位制輸出顯示在網頁上 解決: Python Flask框架中 模板jinja2的If 表示式和過濾器 假設我有一個字典index, index['addr']是我要列印在網頁上的元素,本身是字串,需要用int()過濾器將

TP結合Prince 來用PDF列印

今天老大讓我用Tp+css+html賴實現列印技術,中間遇到了一些困難,在老大的幫助下終於解決了。現在吧出現的問題總結一下: 1.路徑問題: Prince下載檔案可不能放在Tp裡面(這個很容易出問題)貌似只能用絕對路勁來進行訪問(這個是後來才發現的)。、 2.在頁面顯示的時候也要注意,因為

pdfmake 0.1.40 釋出,PDF 列印解決方案

   pdfmake 0.1.40 已釋出,pdfmake 是基於客戶端和服務端的 PDF 列印解決方案,基於 JavaScript 開發,提供強大的排版引擎。 更新內容: updated default Roboto font to latest version 2.13