Vue 实现:点击按钮将 HTML 导出为图片(完整教程)

在日常开发中,经常会遇到这样的需求:

将页面内容生成图片(分享海报)

导出报表截图

本文将教你如何在 Vue 项目中,一键将 HTML 内容导出为图片(PNG)

一、实现原理

我们借助一个非常常用的库:

html2canvas

它的核心作用是:

DOM → Canvas → Base64 → 图片下载

简单来说,就是把页面"截图"下来。


二、安装依赖

npm install html2canvas


三、基础实现(完整代码)

1 页面结构

html 复制代码
<div id="capture">
 <h2>这是要导出的内容</h2>
 <p>Vue 导出 HTML 为图片示例</p>
</div>

<button @click="downloadImage">下载图片</button>

2 JS 实现

javascript 复制代码
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 更优雅)

使用 ref 获取 DOM:

javascript 复制代码
downloadImage() {
  html2canvas(this.$refs.capture, {
    scale: 2
  }).then(canvas => {
    const link = document.createElement("a")
    link.download = "test.png"
    link.href = canvas.toDataURL()
    link.click()
  })
}

五、效果流程

点击按钮

获取 DOM

html2canvas 渲染

生成 canvas

转 base64

下载图片


六、常见问题 & 解决方案

1. 图片模糊

原因:分辨率低

解决:

html2canvas(dom, {

scale: 2 // 或 window.devicePixelRatio

})


2. 图片加载不出来(跨域)

javascript 复制代码
html2canvas(dom, {
  useCORS: true
})

同时图片服务器需要支持:

Access-Control-Allow-Origin


3. 字体丢失

复制代码
document.fonts.ready.then(() => {
  downloadImage()
})

总结

核心步骤只有 4 步:

  1. 获取 DOM

  2. html2canvas 渲染

  3. canvas 转图片

  4. 触发下载

相关推荐
breeze jiang28 分钟前
Next.js 16 App Router 实战:从 About、Blog 动态路由到全局 404
开发语言·javascript·ecmascript
小蒜学长33 分钟前
vue旅游攻略网站(代码+数据库+LW)
java·数据库·vue.js·spring boot·后端·旅游
zh_xuan2 小时前
个人主页左侧菜单支持分组,以及菜单显示和隐藏
前端·javascript·css
Ming_studying2 小时前
HTML + CSS + JavaScript实现可视化JSON工具:格式化、折叠、搜索与错误定位
javascript·css·html·json·数据可视化·web工具
kyriewen12 小时前
我把最常踩的8个CORS跨域报错整理了一遍——第8个去年还不存在
前端·javascript
NeilCarmack16 小时前
Deepseek-harness增加桌面版端序列:第 2 讲 · spawn Electron:当前进程如何“交棒“
前端·javascript·electron
DS随心转插件19 小时前
Grok生成的html怎么导出——AI导出鸭:大模型结构化输出的“最后一公里”工程化解构
前端·人工智能·ai·html·豆包·deepseek·ai导出鸭
এ慕ོ冬℘゜19 小时前
使用 jQuery 动态渲染表格与状态切换
前端·javascript·jquery
智购科技自动售货机厂家20 小时前
2026自动售货机AI视觉识别优化:从YOLOv11n模型量化到RKNN部署的端侧推理工程实践~YH
javascript·人工智能·yolo·机器学习·计算机视觉·目标跟踪·perl