Vue實(shí)現(xiàn)一鍵將HTML導(dǎo)出為圖片的完整教程
一、實(shí)現(xiàn)原理
我們借助一個非常常用的庫:
html2canvas
它的核心作用是:
DOM → Canvas → Base64 → 圖片下載
簡單來說,就是把頁面“截圖”下來。
二、安裝依賴
npm install html2canvas
三、基礎(chǔ)實(shí)現(xiàn)(完整代碼)
1 頁面結(jié)構(gòu)
<div id="capture"> <h2>這是要導(dǎo)出的內(nèi)容</h2> <p>Vue 導(dǎo)出 HTML 為圖片示例</p> </div> <button @click="downloadImage">下載圖片</button>
2 JS 實(shí)現(xiàn)
import html2canvas from "html2canvas"
export default {
methods: {
downloadImage() {
const dom = document.getElementById("capture")
html2canvas(dom, {
scale: 2, // 提高清晰度
useCORS: true
}).then(canvas => {
const imgData = canvas.toDataURL("image/png")
const link = document.createElement("a")
link.href = imgData
link.download = "vue截圖.png"
link.click()
})
}
}
}四、推薦寫法(Vue 更優(yōu)雅)
使用 ref 獲取 DOM:
downloadImage() {
html2canvas(this.$refs.capture, {
scale: 2
}).then(canvas => {
const link = document.createElement("a")
link.download = "test.png"
link.href = canvas.toDataURL()
link.click()
})
}五、效果流程
點(diǎn)擊按鈕
↓
獲取 DOM
↓
html2canvas 渲染
↓
生成 canvas
↓
轉(zhuǎn) base64
↓
下載圖片
六、常見問題 & 解決方案
1. 圖片模糊
原因:分辨率低
解決:
html2canvas(dom, {
scale: 2 // 或 window.devicePixelRatio
})2. 圖片加載不出來(跨域)
html2canvas(dom, {
useCORS: true
})同時圖片服務(wù)器需要支持:
Access-Control-Allow-Origin
3. 字體丟失
document.fonts.ready.then(() => {
downloadImage()
})總結(jié)
核心步驟只有 4 步:
1. 獲取 DOM
2. html2canvas 渲染
3. canvas 轉(zhuǎn)圖片
4. 觸發(fā)下載
到此這篇關(guān)于Vue實(shí)現(xiàn)一鍵將HTML導(dǎo)出為圖片的完整教程的文章就介紹到這了,更多相關(guān)Vue一鍵將HTML導(dǎo)出為圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決echarts echarts數(shù)據(jù)動態(tài)更新和dataZoom被重置問題
這篇文章主要介紹了解決echarts echarts數(shù)據(jù)動態(tài)更新和dataZoom被重置問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Vue實(shí)現(xiàn)按鈕旋轉(zhuǎn)和移動位置的實(shí)例代碼
這篇文章主要介紹了Vue實(shí)現(xiàn)按鈕旋轉(zhuǎn)和移動位置的實(shí)例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08
vue-router路由參數(shù)刷新消失的問題解決方法
本篇文章主要介紹了vue-router路由參數(shù)刷新消失的問題解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06

