当前位置:   article > 正文

html2canvas使用教程_html2canvas的使用

html2canvas的使用

一、需求

  1. 将页面某元素节点的内容转化为图片

  2. 将图片的blob文件流传给服务器(简而言之:拿到图片的File对象)

二、使用 html2canvas 案列

  1. 安装 html2canvas

  1. npm install html2canvas
  2. or
  3. yarn add html2canvas

  2. 使用

  1. import html2canvas from 'html2canvas'
  2. html2canvas(document.body).then(function(canvas) {
  3. document.body.appnedChild(canvas)
  4. })

三、 实现需求

  1. 解析图片,导出blob文件流

  1. // 解析图片,导出blob文件流
  2. async captureElementAsFile () {
  3. // 元素节点
  4. const content = this.$refs.printContainer
  5. const canvas = await html2canvas(content, {
  6. allowTaint: true, // 是否允许不同源的图片污染画布 (允许绘制)
  7. useCORS: true, // 是否尝试使用 CORS 从服务器加载图片 (允许跨域)
  8. // logging: true, // 启用日志记录以进行调试
  9. width: content.clientWidth * 1.005, // 设置图片宽度
  10. height: content.clientHeight * 1.005 // 设置图片高度
  11. })
  12. // 转blob文件流
  13. const blob = await new Promise(resolve => {
  14. canvas.toBlob(resolve, 'image/png')
  15. })
  16. // blob文件流转File对象
  17. const file = new File([blob], 'element.png', { type: 'image/png' })
  18. // 转base64格式图片
  19. const base64 = canvas.toDataURL('image/png')
  20. },

  2. 下载图片

  方案一:

  1. async downloadImage () {
  2. const content = this.$refs.equipmentInfo
  3. const canvas = await html2canvas(content)
  4. const url = canvas.toDataURL('image/png')
  5. const filename = 'qrCode.png'
  6. const link = document.createElement('a')
  7. link.href = url
  8. link.download = filename
  9. document.body.appendChild(link)
  10. link.click()
  11. document.body.removeChild(link)
  12. }

  方案二:

  1. async downloadImage () {
  2. const content = this.$refs.printContainer
  3. const canvas = await html2canvas(content, {
  4. allowTaint: true,
  5. useCORS: true,
  6. logging: true
  7. })
  8. const dataURL = canvas.toDataURL('image/png')
  9. console.log(dataURL, 'dataURL')
  10. const link = document.createElement('a')
  11. link.download = 'drawing.png'
  12. link.href = dataURL
  13. document.body.appendChild(link)
  14. link.click()
  15. document.body.removeChild(link)
  16. }

 四、使用html2canvas存在的问题

  1. 问题:
  2. 1、如果将节点转为图片时,节点内容存在第三放文件资源时,
  3. 可能会忽略编译第三方资源,亦或者会出现请求第三方文件跨域的问题。
  4. 2、下载第三方资源图片可能会出现跨域问题
  5. 解决方法:给html2canvas进行配置,使用 allowTaint,useCors 属性
  6. 同时需要配置你的第三方资源服务器,使服务器允许跨域
  7. 案列:鄙人的电放资源文件是图片,并且保存在阿里云的oss服务器上,(阿里云的oss服务器需要购买)
  8. 你需要去 阿里云的oss服务器 配置允许跨域
 html2canvas中文文档:  https://allenchinese.github.io/html2canvas-docs-zh-cn/icon-default.png?t=N7T8https://allenchinese.github.io/html2canvas-docs-zh-cn/ 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/923902
推荐阅读
相关标签
  

闽ICP备14008679号