vue html2canvas 将html转图片时遇到的问题解决

问题1:

场景为将富文本组件tinymce里的html内容转为图片,出现的问题是vue获取不到tinymce元素,无法直接使用html2canvas

解决1:

将富文本内容渲染出来,推荐做法是将提交按钮改为预览按钮,然后在另外的弹框中渲染出富文本内容,如图formData.details是富文本中的内容

html 复制代码
<el-button v-if="!showInfo" type="primary" @click="showPreview = true">预 览</el-button>

<el-dialog :visible="showPreview" width="1250px" @close="showPreview = false" >
    <div ref="canvas" v-html="formData.details"></div>
    <div style="text-align: center">
         <el-button @click="showPreview = false">返 回</el-button>
         <el-button v-if="!showInfo" type="primary" @click="handleSubmit">提 交</el-button>
     </div>
</el-dialog>

问题2:

将富文本的html转为图片后,富文本中的图片缺失(主要是跨域引起)

解决2:

  1. 富文本中的img标签中增加属性 crossOrigin="anonymous";经测试,没有该属性也是可以的

  2. html2canvas增加配置useCORS:true;

  3. 后端跨域配置;

javascript 复制代码
async htmlToImage(){
   const element = this.$refs.canvas
   var _html2canvas = await html2canvas(element, { useCORS: true })
   this.formData.base64 = _html2canvas.toDataURL('image/png')
   console.log(this.formData.base64)
},

注意:VUE记得安装html2canvas,npm install html2canvas -save

相关推荐
Wang's Blog1 分钟前
Webpack: 构建微前端应用
前端·webpack
软件编程工程师16 分钟前
基于vue脚手架创建的图书商城
前端·javascript·css·vue.js·html·网站·图书商城
I like Code?18 分钟前
Vue图片路径问题分析
javascript·vue.js·ecmascript
柯基的小屁墩20 分钟前
Mac|install vue
前端·vue.js·macos
林恒smileZAZ24 分钟前
为什么 [] == ![] 为 true?
前端·javascript
亦世凡华、29 分钟前
探索 Electron:将 Web 技术带入桌面应用
前端·javascript·经验分享·electron·桌面应用
Zww089131 分钟前
axios的底层ajax,XMLHttpRequest原理解释及使用方法
前端·javascript·ajax·okhttp
励志的大鹰哥36 分钟前
JS爬虫实战之Fastmoss
javascript·爬虫
幸运小男神40 分钟前
npm如何清空缓存并重新打包?
前端·npm
北原_春希43 分钟前
Vue的服务器代理如何配置
服务器·前端·vue.js