使用那各VUE的打印功能(print.js)出現多打印一個空白頁的問題


最近這段時間,用VUE寫東西,有個打印功能。

百度了一下,鋪天蓋地的VUE打印的兩種實現方法。

很感激這些千篇一律的帖子,雖然不知道他們是否真的用過,還是只是復制粘貼。

至少這些帖子告訴我,是有兩個可以選擇的,並且多看幾篇帖子,總算把這兩個打印方法,都試了一遍。

下面簡單總結一下:

先說結論:請使用第二種方法,下載print.js到本地,然后放到項目中導入。原因后邊說。

 

一、使用vue-print-nb方法

具體的使用這里就不詳細說明了,因為網上真的太多太多了。千篇一律的。

在本地直接npm安裝一下就好。按照步驟一點一點來。

然后在自己項目的配置文件里import進來就可以了。

使用就更簡單了。選好區域直接調用即可。

打印效果超出預期的好。感謝這個插件的作者!

二、使用print.js方法

這個簡單的程度更不用說了。就是一個JS下載下來,直接放到項目中(libs目錄)

然后同樣import導入,並use就可以使用了。

使用方法同樣簡單,只是寫法上看着比第一種感覺上low那么一丟丟,但是真的是超級的簡單好用哦。

同時,效果上和第一個基本上一模一樣。

 

使用說完了,說說問題吧。

對比:

1、安裝和使用

方法一,需要npm安裝,說簡單也簡單,說復雜也復雜。並且所有項目參與者都要安裝,否則會報錯。

方法二,不需要做什么,只要有一個搞到項目中,其他人版本庫中拉代碼即可。維護簡單方便。

2、調試和維護

方法一,源碼相對屬於不直接公開的,想看需要到node_modules目錄去找,修改日后維護成本稍微高點。

方法二,源碼就一個print.js文件,在項目目錄中,隨時都可以看到,隨時可以修改調試,簡單方便。並且代碼還少哦。

3、使用時的BUG

方法一,存在跨域的BUG,就是link里邊的樣式路徑必須是相對路徑或者與站點同域,否則會垮掉。

方法二,目前沒有發現使用上的BUG。

 

最后,應用中碰到的問題

最開始使用的是方法一,看着高端。哈哈……但是本坑慘了,因為本地調試和測試環境都沒問題。所以一直也就沒有發現BUG。直到上線后,再測試才發現問題。因為生產環境CSS是走CDN的,域名不一致了,導致JS報錯。打印功能垮掉。

最終臨時下掉打印功能,還要想業務部門解釋。畢竟答應沒做到么。

接下來,解決問題。通過查看源碼,不斷調試驗證,最終發現,就是類似跨域的問題,導致讀取link里邊的文件失敗。報錯后終止了JS的執行。當然,BUG原因也找到了,改是能改,但是比較麻煩,畢竟源碼不在項目中。

然后,嘗試使用print.js來實現打印,先確認一下,至少不會有方法一的BUG,然后也做了各測試,確實沒有方法一的問題。所以最終我們現在使用這個。但是,因為還沒有正式使用,也沒有發現問題。

等以后用久了,再看看。不過,源碼在項目中,修改多少也方便點兒。

 

還有個問題,就是打印預覽時,發現多出一個空白頁,打印時也會真的打印一個空白頁出來。

經過各種折騰,真沒發現原因,網上搜索了一下,真心解決辦法很少,有一個說的不明不白,有一個說的是body的默認margin的默認值問題。

但是可惜,我這邊都不是,所以,在沒有辦法下,只能自己一點點的調試。什么情況下會有東西超出頁面。

不知道最終原因(原理),但是解決了,就是高度100%的問題。頁面打印部分有標簽高度設置了100%,但是視覺上沒有超出,打印時,莫名的就影響了,多出一個空白頁。

把這個高度100%刪除,就沒有空白頁了。

所以,出現空白頁,注意兩點:1、body的margin屬性改成0;2、找到height屬性為100%的嘗試修改成其他值或者刪除該屬性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM