整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          文本,Vue實現打印的方式,打印機的種類有多少,瀏覽器打印html

          印機打印的三種方式、適用各種web框架(vue.js/web打印/報表打印)_嗶哩嗶哩_bilibili

          Vue實現打印的方式

          第一種打印的方式html 打印

          1、谷歌瀏覽器自帶的功能,Ctrl + P,會彈出打印預覽界面

          2、JavaScrpit的方法也可以彈出同樣的頁面,可以選擇全部打印和局部打印

          3、第二種打印的方法是

          4、優秀的web打印插件通常支持模版設計功能

          5、我們通常要設計好插件的打印模版

          6、

          7、第三種是指令打印

          8、指令打印是通過打印插件向打印機發送指令

          9、可以向打印機端口或驅動發送原始指令

          10、條碼打印機,RFID打印機就有很好的支持

          11、指令打印的優勢是打印的速度和穩定

          具體使用-----12、為了實現局部打印,需要在Vue項目中引用組件

          ---------------------------------------------------------------------------------------------

          如何使用在Vue項目輸入npm i vue-print-nb

          安裝后在Vue項目中進行引入

          import Print from 'vue-print-nb'

          先在項目中進行跑一跑

          再在打印機中添加打印按鈕 <button v-print>

          選擇打印會覆蓋整個頁面

          會整個打印全部頁面

          如果想要實現局部打?。?/h1>

          局部打印HTML的寫法,標簽寫著id

          局部打印的寫法,這里寫了局部打印的內容

          點擊打印就可以簡單實現局部打印的功能

          -----------------------------------------------------------------------------------------------------------------------------

          方法2,插件打印,老牌的C-LODOP,很多電商后臺和快遞后臺都在用這個

          官網地址

          www.lodnp.net/download.html

          這里有來跟C-

          用來跟C-Lodop通訊的JavaScript的包

          將loadop.js引用到的web框架中

          在index頁面中,引入打印的方法,import {}

          接著設計兩個打印設計的按鈕

          新建打印模版

          打印設計用來調用C-Lodop的設計窗口


          打印預覽就是設計一個模版

          提供一些常用的空間控件

          條形碼,二維碼,html頁面預覽等

          添加一個超文本框作為標題欄

          接著是打印名稱

          設計完可以直接關閉窗體

          預覽窗體中可以直接進行打印

          也可以添加LODOP.PRINT()函數進行打印

          指令打印的方法


          ?

          印就是把頁面上的文字、圖片等可見數據通過打印機等輸出在紙張上的操作,瀏覽器基本都自帶打印功能。在你需要打印的頁面中按下組合鍵“Ctrl+p”就可以調用打印功能,它會把該頁面中的所有可見內容(即window.document.body.innerHTML中的內容)都輸出到打印中。當然如果你的網頁版面太大可能會出現無法正確打印文件,比如出現打印不全(超出可打印的范圍被切除)或者部分內容缺失(部分內容丟失)。這時候我們就需要選擇更大的紙張來打印頁面了,默認紙張尺寸為A4大小。

          vue-print-nb打印

          如果你想打印指定區域的內容那么就需要在項目中自己實現打印功能了,Vue中實現打印功能目前有兩種比較常用的方法,一種是通過組件vue-print-nb來實現。直接通過命令安裝:npm i vue-print-nb -S ,在main.js中進行全局注冊組件。在需要打印內容的區域設置id,然后通過v-print來綁定該id實現對指定區域的內容進行打印。

          當然如果你想配置更多的參數我們也可以通過v-print綁定對象,在對象中我們可以為打印設定以下屬性:id、standard、extraHead、extraCss、popTitle和endCallback,具體的注釋我在代碼中有說明了。打印默認會顯示頁眉和頁腳信息,你可以在打印界面自行取消勾選,也可以在直接定義css樣式來隱藏頁眉和頁腳:@page{margin: 5mm; /* 設置打印中的打印邊距*/} 。

          vuePlugs_printjs插件打印

          該插件提供了一個print.js文件(我將該文件放在項目中的src/assets目錄下),同樣在main.js中將其引入到項目中來。通過ref屬性定位打印內容區域,vuePlugs_printjs更強大的一點就是即使內容在打印區域內也可以通過添加class="no-print"樣式來屏蔽該元素中的內容。

          打印二維碼

          前面通過文章Vue實戰063:常見的幾種二維碼生成方法和保存至本地我們已經知道如何生成二維碼了,這里我選用了vue-qr組件來生成二維碼圖像。接下來我們來打印這個二維碼,這里我們只要在需要打印二維碼的DOM標簽上添加ref屬性來定位打印區域,再通過一個按鈕來觸發打印功能即可。

          遇到的問題

          如果你用qrcode生成二維碼的時候你就會發現在打印的時候該二維碼并不會被顯示,因為qrcode是通過canvas標簽繪制的二維碼圖像,canvas繪制圖像是異步執行的需加載完資源才會調用drawImage方法來繪制圖像。打印功能是將指定區域的代碼寫入到新的窗口中進行輸出的,再寫入canvas標簽時只是拿到了對應的標簽并沒有進行圖像繪制自然就無法顯示了。

          解決方案

          用img圖像替換掉canvas畫布,在調用打印之前調用canvas的toDataURL()方法將canvas數據轉換成圖片格式,創建一個img的標簽元素并將toDataURL生成的數據賦給img標簽的src屬性,獲取畫布的父標簽并把img標簽內容加載到該父標簽中同時刪除畫布標簽內容,接著再執行打印功能即可。

          ?總結:

          以上兩種方式操作起來都很簡單,個人比較喜歡vuePlugs_printjs插件,因為可控性相對強些可以過濾掉一些不需要輸出的內容。以上內容是小編給大家分享的Vue指定區域打印功能的實現(附示例),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。更多Vue實戰技巧可以參考專欄:Vue實戰系列,在此也非常感謝大家對小編的支持!



          天小編在教課的時候,發現很多剛剛接觸這個領域的同學對一些小的細節部分還是存在疑惑,網上的很多博客也只是只貼出了代碼,并不了解是什么意思,小編今天就具體的來給大家講一講如何在vue-cli的環境下實現web的打印指定區域的內容(文字或者表格圖表),讓大家在學習的過程中少走一些彎路。

          走起,先看效果圖:


          如何實現上訴需求呢,咱們來一一講解,首先咱們先把代碼切分為四個部分:

          1.創建一個構造函數Print

          2.給Print的prototype添加需要用到的方法

          3.聲明一個常量MyPlugin為它添加方法,將Print方法掛載到Vue原型鏈上

          4.export導出MyPlugin



          第一步 創建一個構造函數Print,默認接受兩個參數,一個是打印的指定區,一個是自定義頁眉的標題。 要注意哦,有些同學這里可能會不懂這個判斷的意思,因為這里的this是指向Vue的通過instanceof來判斷這時候的this是否為Print的子類,如果不是,就通過new操作符調用,使this指向Print本身。


          然后這里做一個容錯,判斷一下傳進來的dom是否為object、是否有nodeType和nodeName這兩個屬性,如果沒有,證明不是一個節點,那就取dom下的$el,然后把處理過后的dom和name分別賦值給this.dom和this.name,方便在prototype里隨時取值同時執行初始化方法。



          第二步 給Print的prototype添加需要用到的方法,init方法里為了實現打印并且自定義標題,我們需要重新獲取到樣式和頁面元素,展示到一個新的html里面,最后通過writeIframe方法完成咱們最終打印的效果。


          getStyle方法里,自定義一個空字符串,通過querySelectorAll方法獲取到當前頁面全部的style和link標簽,并且通過循環拿到每一個的outerHTML(純文本形式)最后通過return暴露出來



          getHtml方法主要是特殊處理一下input、textarea、select、canvas把前三個打value值重新獲取通過innerHTML的方法展現出來,把canvas畫布轉換成圖片的格式展現出來。


          然后進入下一步setHeader方法,來自定義頁眉的標題。這里是因為在DOM上,input、textarea、select中的值并沒有在元素內,只有純文本才可以被print(),同樣打印也不支持canvas。所以咱們需要重新處理一下,使里面的值也可以被打印出來~



          在這一步,咱們實際上是重新創建了一個html標簽和title,然后通過克隆出要打印的區域,添加到新創建的html當中。然后return出這個新頁面里的全部純文本元素。這個時候已經咱們需要打印的html和自定義標題已經出來了。這里同學們千萬要注意,因為打印的默認標題是頁面里的title,如果直接改變原頁面的title來實現自定義標題效果的話,會造成原頁面的title錯亂。



          這個時候回到init方法,content就是咱們全部需要輸入的標簽。執行writeIframe方法,這里面主要是通過document.open來打開一個新文檔,document.write來編寫文檔的內容,document.close來關閉文檔操作使其內容可以顯示出來。


          然后紅線圈出的地方有一個獲取全部類名為isNeedRemove的操作,是因為之前在把canvas轉換成圖片的時候,給每個的后面都插入了一個轉換后的img這里為了讓圖形不出現兩個的情況,需要刪除所有類名為isNeedRemove的節點,同時執行最終的打印方法。



          這里的frameWindow形參其實就是咱們需要調用到的window,通過try catch來保證結果在一個控制范圍內,如果成功運行調用window下的print方法,失敗則拋出異常。



          最終將寫好的方法添加到vue的原型鏈上,在公共的main.js 里通過import引入,Vue.use掛載,然后在想要使用的組件內直接通過this.$print()使用即可


          好啦~今天講到這里希望大家對這個web前端來實現打印的方法有一個新的理解,希望能給到大家一些幫助~咱們下期再見。


          主站蜘蛛池模板: 一区二区在线播放视频| 亚洲av午夜福利精品一区人妖| 国产成人av一区二区三区不卡| 色狠狠一区二区三区香蕉蜜桃| 无码国产精品一区二区免费I6| 中文字幕一区二区三区日韩精品| 日韩色视频一区二区三区亚洲| 精品一区二区三区四区在线播放| 插我一区二区在线观看| 视频一区视频二区制服丝袜| 日本精品视频一区二区| 亚洲av无码一区二区三区在线播放| 久久成人国产精品一区二区| 美女免费视频一区二区| 日本丰满少妇一区二区三区| 国产精品成人一区无码| 国产精品伦子一区二区三区 | 久久免费精品一区二区| 一区二区三区在线免费| 视频在线一区二区| 亚洲国产一区视频| 国产情侣一区二区三区| 真实国产乱子伦精品一区二区三区| 一区二区三区91| 人妻少妇精品一区二区三区| 台湾无码AV一区二区三区| 鲁丝片一区二区三区免费| 亚洲成AV人片一区二区| 中文字幕一区二区三区在线观看| 精品无码AV一区二区三区不卡| 亚洲第一区视频在线观看 | 精品无码综合一区| 国产精品无圣光一区二区| 中文字幕一区二区人妻| 色偷偷av一区二区三区| 亚洲国产欧美国产综合一区 | 国产成人无码一区二区在线播放 | 日本一区二区三区精品国产| 一区二区三区免费精品视频| 国产在线精品一区二区三区直播| 蜜桃传媒视频麻豆第一区|