参考:https://blog.csdn.net/c_kite/article/details/81364592https://blog.csdn.net/weixin_40800926/article/details/102961502

使用html2canvas

1.下载 html2canvas

  1. npm install html2canvas

2.对应页面引入该插件

  1. import html2canvas from 'html2canvas';

3.具体用法 (要element使用带有一些(可选)选项的 html2canvas 呈现,只需调用html2canvas(element, options);)

  1. html2canvas(document.body).then(function(canvas) {
  2. document.body.appendChild(canvas);
  3. })

4.转为图片并且下载

  1. <template>
  2. <div>
  3. <div class="container" ref="imageDom">hahahah</div>
  4. <button @click="toImage">导出</button>
  5. </div>
  6. </template>
  7. # methods
  8. toImage() {
  9. html2canvas(this.$refs.imageDom, {
  10. backgroundColor: '#ffffff'
  11. }).then(canvas => {
  12. var imgData = canvas.toDataURL("image/jpeg");
  13. this.fileDownload(imgData);
  14. })
  15. },
  16. fileDownload(downloadUrl) {
  17. let aLink = document.createElement("a");
  18. aLink.style.display = "none";
  19. aLink.href = downloadUrl;
  20. aLink.download = "监控详情.png";
  21. // 触发点击-然后移除
  22. document.body.appendChild(aLink);
  23. aLink.click();
  24. document.body.removeChild(aLink);
  25. },

使用问题

toDataURL报错

更改需要绘制的html标签部分

页面下载图片不全

需要查看一下html2canvas的配置文件

  1. html2canvas(htmlDom, {
  2. backgroundColor: '#ffffff',
  3. logging: false, //日志开关,便于查看html2canvas的内部执行流程
  4. width: htmlDom.clientWidth, //需要绘制的大小
  5. height: htmlDom.clientHeight, //需要绘制的大小
  6. scrollY: 54, // 向下的偏移量
  7. scrollX: 0,
  8. useCORS: true // 【重要】开启跨域配置
  9. }).then(canvas => {
  10. // document.body.appendChild(canvas)
  11. var imgData = canvas.toDataURL("image/png");
  12. this.fileDownload(imgData);
  13. /* var image = new Image();
  14. image.crossorigin = 'anonymous'
  15. image.src = canvas.toDataURL("image/png");
  16. return image; */
  17. })

参考文档:https://www.jb51.net/html5/726095.html

table中的合并的td展示不出来

在td中的标签的定位变成绝对定位