Vue3使用html2canvas實現(xiàn)將指定div下載為圖片
更新時間:2025年11月17日 09:40:30 作者:朝陽39
這篇文章主要為大家詳細介紹了Vue3如何使用html2canvas實現(xiàn)將指定div下載為圖片,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
效果預(yù)覽



安裝依賴
cnpm i html2canvas
導(dǎo)入依賴
import html2canvas from "html2canvas";
函數(shù)封裝
/**
* 將指定div下載為圖片
* @param targetDiv 目標(biāo)div的Dom
* @param fileName 下載的文件名(無需后綴)
* @param format 圖片格式:'png' 或 'jpg'
* @param quality 圖片質(zhì)量(僅對jpg有效,0-1之間)
*/
async function downloadDivAsImage(
targetDiv: HTMLDivElement,
fileName: string = "流程圖",
format: "png" | "jpg" = "png",
quality: number = 1
) {
// 1. 檢查目標(biāo)div是否存在
if (!targetDiv) {
return;
}
try {
// 2. 使用html2canvas將div轉(zhuǎn)為canvas
const canvas = await html2canvas(targetDiv, {
useCORS: true, // 允許跨域圖片(如果div內(nèi)有外部圖片)
logging: false, // 關(guān)閉日志
scale: window.devicePixelRatio, // 按設(shè)備像素比縮放,避免模糊
backgroundColor: null, // 背景透明(如需白色背景可設(shè)為'#ffffff')
});
// 3. 將canvas轉(zhuǎn)為圖片URL
const imageUrl = canvas.toDataURL(`image/${format}`, quality);
// 4. 觸發(fā)下載
const link = document.createElement("a");
link.href = imageUrl;
link.download = `${fileName}.${format}`;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
URL.revokeObjectURL(imageUrl); // 釋放資源
} catch (error) {
console.error("下載失?。?, error);
}
}
頁面使用
<Icon
icon="tabler:download"
@click="downloadDivAsImage(svgBoxRef!)"
title="下載"
/>
<!-- 用于渲染流程圖的容器 -->
<div ref="svgBoxRef" v-show="svg" class="svgBox" v-html="svg"></div>
const svgBoxRef = ref<HTMLDivElement | null>(null);
到此這篇關(guān)于Vue3使用html2canvas實現(xiàn)將指定div下載為圖片的文章就介紹到這了,更多相關(guān)Vue3 html2canvas指定div下載為圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue2學(xué)習(xí)筆記之請求數(shù)據(jù)交互vue-resource
本篇文章主要介紹了Vue2學(xué)習(xí)筆記之?dāng)?shù)據(jù)交互vue-resource ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
Vue使用element-ui實現(xiàn)菜單導(dǎo)航
這篇文章主要為大家詳細介紹了Vue使用element-ui實現(xiàn)菜單導(dǎo)航,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
Vue2前端生成二維碼并實現(xiàn)掃碼跳轉(zhuǎn)完整教程
在現(xiàn)代Web應(yīng)用開發(fā)中,二維碼掃描已成為連接物理世界與數(shù)字世界的核心橋梁,這篇文章主要介紹了Vue2前端生成二維碼并實現(xiàn)掃碼跳轉(zhuǎn)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2026-04-04
在vue-cli 3中給stylus、sass樣式傳入共享的全局變量
這篇文章主要介紹了在vue-cli 3中, 給stylus、sass樣式傳入共享的全局變量,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08

