Print.js javascript庫 實現(xiàn)頁面打印

Print.js javascript庫 實現(xiàn)頁面打印

官網(wǎng)地址

您可以從GitHub版本下載最新版本的Print.js

下載v1.0.61

npm 安裝

  npm install print-js --save

npm安裝時將庫導(dǎo)入項目

 import print from 'print-js'

首先,我們需要在頁面上包含Print.js庫和樣式

 <script src="print.js"></script>
  <link rel="stylesheet" type="text/css" href="print.css">

下面主要介紹一下我們要用的打印方法printJS();

printJS()將接受一個對象作為參數(shù),下面表格的參數(shù)則為該對象的屬性,通過控制屬性值來控制打印;

參數(shù) 默認(rèn)值 說明
printable: null 文檔來源:pdf或圖像的url,html元素的id或json數(shù)據(jù)的對象
type: PDF 可打印類型足删】沉模可用的打印選項包括:pdf鲸鹦,html限佩,image,json和raw-html罐柳。
header: null 用于HTML,Image或JSON打印的可選標(biāo)頭狰住。它將放在頁面頂部张吉。此屬性將接受文本或原始HTML
headerStyle: 'font-weight:300;' 要應(yīng)用于標(biāo)題文本的可選標(biāo)題樣式
maxWidth: 800 最大文檔寬度(像素)。根據(jù)需要更改此項转晰。在打印HTML芦拿,圖像或JSON時使用。
css: null 這允許我們傳遞一個或多個應(yīng)該應(yīng)用于正在打印的html的css文件URL查邢。值可以是包含單個URL的字符串蔗崎,也可以是包含多個URL的數(shù)組。
style: null 這允許我們傳遞一個字符串扰藕,該字符串應(yīng)該應(yīng)用于正在打印的html缓苛。
scanStyles: true 設(shè)置為false時,庫不會處理應(yīng)用于正在打印的html的樣式邓深。使用css參數(shù)時很有用未桥。
targetStyle: null 默認(rèn)情況下,在打印HTML元素時芥备,庫僅處理某些樣式冬耿。此選項允許您傳遞要處理的樣式數(shù)組。例如:['padding-top'萌壳,'border-bottom']
targetStyles: null targetStyle相同亦镶,這將處理任何一系列樣式。例如:['border'袱瓮,'padding']缤骨,將包括'border-bottom','border-top'尺借,'border-left'绊起,'border-right','padding-top'等燎斩。你也可以傳遞['*']來處理所有樣式
ignoreElements: [] 接受打印父html元素時應(yīng)忽略的html的id數(shù)組虱歪。
properties: null 在打印JSON時使用蜂绎。這些是對象屬性名稱。
gridHeaderStyle: 'font-weight:bold;' 打印JSON數(shù)據(jù)時網(wǎng)格標(biāo)題的可選樣式实蔽。
gridStyle: 'border: 1px solid lightgray; margin-bottom: -1px;' 打印JSON數(shù)據(jù)時網(wǎng)格行的可選樣式
repeatTableHeader: true 在打印JSON數(shù)據(jù)時使用荡碾。設(shè)置為時false,數(shù)據(jù)表標(biāo)題僅顯示在第一頁中局装。
showModal: null 啟用此選項可在檢索或處理大型PDF文件時顯示用戶反饋
modalMessage: 'Retrieving Document...' 當(dāng)向用戶顯示的消息showModal被設(shè)定為true坛吁。
onLoadingStart: null 加載PDF時要執(zhí)行的功能
onLoadingEnd: null 加載PDF后要執(zhí)行的功能
documentTitle: 'Document' 打印html,image或json時铐尚,它將顯示為文檔標(biāo)題拨脉。如果用戶嘗試將打印作業(yè)保存為pdf文件,它也將是文檔的名稱宣增。
fallbackPrintable: null 打印pdf時玫膀,如果瀏覽器不兼容(檢查瀏覽器兼容性表),庫將在新選項卡中打開pdf爹脾。這允許您傳遞要打開的不同pdf文檔帖旨,而不是傳遞給printable的原始文檔。如果您在備用pdf文件中注入javascript灵妨,這可能很有用解阅。
onPdfOpen : null 打印pdf時,如果瀏覽器不兼容(檢查瀏覽器兼容性表)泌霍,庫將在新選項卡中打開pdf货抄。可以在此處傳遞回調(diào)函數(shù)朱转,這將在發(fā)生這種情況時執(zhí)行蟹地。在您想要處理打印流程,更新用戶界面等的某些情況下藤为,它可能很有用怪与。
onPrintDialogClose: null 關(guān)閉瀏覽器打印對話框后執(zhí)行回調(diào)功能
onError: error => throw error 發(fā)生錯誤時要執(zhí)行的回調(diào)函數(shù)。
base64: false 在打印作為base64數(shù)據(jù)傳遞的PDF文檔時使用
honorMarginPadding(不建議使用): true 這用于保留或刪除正在打印的元素的填充和邊距缅疟。有時這些樣式設(shè)置在屏幕上很棒分别,但在打印時看起來很糟糕。您可以通過將其設(shè)置為false來刪除它窿吩。
honorColor(不建議使用) : false 要以彩色打印文本,請將此屬性設(shè)置為true错览。默認(rèn)情況下纫雁,所有文本都將以黑色打印。
font(不建議使用): 'TimesNewRoman' 打印HTML或JSON時使用的字體
font_size(不建議使用): '12pt' 打印HTML或JSON時使用的字體大小
imageStyle (不建議使用): 'width:100%;' 打印圖像時使用倾哺。接受包含要應(yīng)用于每個圖像的自定義樣式的字符串轧邪。
frameId: null print.js會將要打印的內(nèi)容復(fù)制到一個新的Frame中,此參數(shù)是frame的id值

示例

HTML打印

有時我們只想打印HTML頁面的選定部分刽脖,這可能很棘手。使用Print.js忌愚,我們可以輕松傳遞我們要打印的元素的id曲管。該元素可以是任何標(biāo)記,只要它具有唯一ID即可硕糊。該庫將嘗試將其打印得非常接近它在屏幕上的外觀院水,同時,它將為它創(chuàng)建一個打印機友好的格式简十。

<form method="post" action="#" id="printJS-form">
    ...
 </form>

 <button type="button" onclick="printJS('printJS-form', 'html')">
    Print Form
 </button>

向表單添加標(biāo)題

 <button type="button" onclick="printJS({ printable: 'printJS-form', type: 'html', header: '這是標(biāo)題內(nèi)容' })">
    打印
 </button>

html時候需要注意的事項:

直接采用默認(rèn)的參數(shù)打印html的時候如果打印內(nèi)容過多時候可能會非常慢檬某,這時候需要設(shè)置scanStyles:false,然后把css抽取出來,這樣速度就會非常的快螟蝙!

printJS({ printable: 'myHtmlElement', type: 'html', scanStyles: false, css: '/my_stylesheet.css' })

圖片的打印

通過傳遞圖像網(wǎng)址恢恼,Print.js可用于快速打印頁面上的任何圖像。當(dāng)您使用低分辨率版本的圖像在屏幕上顯示多個圖像時胰默,此功能非常有用场斑。當(dāng)用戶嘗試打印所選圖像時,您可以將高分辨率URL傳遞給Print.js牵署。

<img src="images/print-01.jpg" />
 printJS('圖片的url', 'image')

添加標(biāo)題

printJS({printable: 'images/print-01-highres.jpg', type: 'image', header: '這是標(biāo)題'})

打印多張圖片

 printJS({
  printable: ['images/print-01-highres.jpg', 'images/print-02-highres.jpg', 'images/print-03-highres.jpg'],
  type: 'image',
  header: '標(biāo)題僅顯示在第一張圖片',
  imageStyle: 'width:50%;margin-bottom:20px;'
 })

JSON的打印

一種簡單快捷的方法來打印動態(tài)數(shù)據(jù)或javascript對象數(shù)組漏隐。

var  someJSONdata = [
    {
       name: 'John Doe',
       email: 'john@doe.com',
       phone: '111-111-1111'
    },
    {
       name: 'Barry Allen',
       email: 'barry@flash.com',
       phone: '222-222-2222'
    },
    {
       name: 'Cool Dude',
       email: 'cool@dude.com',
       phone: '333-333-3333'
    }
 ]

<button type="button" 
onclick="printJS({printable: someJSONdata, properties: ['name', 'email', 'phone'], type: 'json'})">
    打印
 </button>

自定義css來設(shè)置數(shù)據(jù)網(wǎng)格的樣式:

 <button type="button" onclick="printJS({
        printable: someJSONdata,
        properties: ['name', 'email', 'phone'],
        type: 'json',
        gridHeaderStyle: 'color: red;  border: 2px solid #3971A5;',
        gridStyle: 'border: 2px solid #3971A5;'
    })">
    打印
 </button>

自定義發(fā)送對象數(shù)組的表頭文本

 <button type="button" onclick="printJS({
        printable: someJSONdata,
        properties: [
        { field: 'name', displayName: '自定義表頭'},
        { field: 'email', displayName: '自定義表頭'},
        { field: 'phone', displayName: '自定義表頭'}
        ],
        type: 'json'
        })">
   打印
 </button>

JSON,HTML和圖像打印可以接收原始HTML標(biāo)頭

<button type="button" onclick="printJS({
        printable: someJSONdata,
        type: 'json',
        properties: ['name', 'email', 'phone'],
        header: '<h3 class="custom-h3">My custom header</h3>',
        style: '.custom-h3 { color: red; }'
      })">
    Print header raw html
</button>

感謝WwJoyous的分享

浪客行1213的簡書


xhh
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碟刺,一起剝皮案震驚了整個濱河市锁保,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌半沽,老刑警劉巖爽柒,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異者填,居然都是意外死亡浩村,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門占哟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來心墅,“玉大人,你說我怎么就攤上這事榨乎≡踉铮” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵蜜暑,是天一觀的道長铐姚。 經(jīng)常有香客問我,道長肛捍,這世上最難降的妖魔是什么隐绵? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任之众,我火速辦了婚禮,結(jié)果婚禮上依许,老公的妹妹穿的比我還像新娘棺禾。我一直安慰自己,他們只是感情好峭跳,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布膘婶。 她就那樣靜靜地躺著,像睡著了一般坦康。 火紅的嫁衣襯著肌膚如雪竣付。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天滞欠,我揣著相機與錄音古胆,去河邊找鬼。 笑死筛璧,一個胖子當(dāng)著我的面吹牛逸绎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播夭谤,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼棺牧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了朗儒?” 一聲冷哼從身側(cè)響起颊乘,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎醉锄,沒想到半個月后乏悄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡恳不,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年檩小,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烟勋。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡规求,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卵惦,到底是詐尸還是另有隱情阻肿,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布沮尿,位于F島的核電站丛塌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜姨伤,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望庸疾。 院中可真熱鬧乍楚,春花似錦、人聲如沸届慈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽金顿。三九已至臊泌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間揍拆,已是汗流浹背渠概。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嫂拴,地道東北人播揪。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像筒狠,于是被迫代替她去往敵國和親猪狈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 概要 64學(xué)時 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,095評論 0 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5辩恼? 答:HTML5是最新的HTML標(biāo)準(zhǔn)雇庙。 注意:講述HT...
    kismetajun閱讀 27,422評論 1 45
  • 在iOS 4.2和以后,應(yīng)用程序可以添加對本地打印機的打印內(nèi)容的支持灶伊。盡管并非所有應(yīng)用程序都需要打印支持疆前,但是如果...
    陵無山閱讀 3,577評論 0 4
  • 33、JS中的本地存儲 把一些信息存儲在當(dāng)前瀏覽器指定域下的某一個地方(存儲到物理硬盤中)1谁帕、不能跨瀏覽器傳輸:在...
    萌妹撒閱讀 2,071評論 0 2
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,089評論 1 32