html2canvas導出圖片模糊


最近在做將html渲染的界面導出為圖片或者pdf文件

 

實現思路有三(另外還有需要后台配合的,沒有研究就不寫了):

一:用系統或者聊天工具的截屏功能,這和代碼就沒關系了,但優點是不需要前端任何操作,也不需要后台任何配合;

二:用插件html2canvas庫,優點是不需要后端配合;

三:也是插件dom-to-image,和方式二一樣不需要后台操作;

 

其中dom-to-image不支持ie和edge瀏覽器,但效率要比html2canvas高一丟丟,bug也少,但就因為不兼容edge或者是因為bug少搜索到的信息也較少,要不是項目必須兼容edge我就用它了!

html2canvas的bug多:什么導出是空白了,丟失dom了,頁面卡死了,問題太多了:

 

現在就來細數html2canvas的缺陷:

1. 導出會空白偶爾出現,還沒處理,有空再說;

2. 丟失dom,導出的圖片缺少一些頁碼信息:追蹤下發現a標簽包裹的文本內容導出來就丟失,那有啥辦法,替換標簽唄,替換成span標簽然后把樣式搞過去就o了;

3. 頁面卡死:本來項目就大,插件里邊還遞歸dom樹copy節點,所以變得非常卡,谷歌和火狐瀏覽器導出一個界面需要4-6秒,edge導出一個界面需要6-8分鍾,所以給用戶的感覺就是我的edge咋卡死了?這個也還沒解決;

4. 然后是導出界面模糊,網上也有很多解決方式,但這些方式只是給了個思路,你要是不看版本直接copy就會發現:圖片是清晰了,但怎么不全了?或者是空白了一大片!下面細說下解決思路:

  a.轉化時候傳入配置參數,新建一個canvas的dom對象,對象放大兩倍,然后還有個配置參數叫sacle就是縮放比例,這個縮放比例默認會按照瀏覽器的像素密度去執行,當然你也可以指定,例如現在就指定為2,

  b.剛好畫布放大兩倍,縮放也是2,導出的圖片就剛剛好不留白也不缺失;

  c. 具體代碼就不粘了,還是那句話,用任何第三方的東西,就去看人家的文檔,別網上瞎幾把搜,文檔解決不了了就去看源碼,網上搜不算好漢!

接下來沾幾個我試了但不行的解決方案:

1. 這個dpi這個配置項都已經廢棄了,傳了也沒用,這個方案的及俄國是截取的圖片只有1/4,

2.沒找到,就是這個作者寫的時候應該還不支持promise,你能直接copy過來用?

假裝是圖片

 

over!

 


免責聲明!

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



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