调用浏览器导出PDF
- 控制指定区域打印
- 打印完成后,恢复原有页面
- 打印内容完整清楚
onPrint () { const prnhtml = window.document.getElementById('form-page').innerHTML //捕获只需要打印的内容 const oldHtml = window.document.body.innerHTML // 缓存当前页面中的所有页面内容 window.document.body.innerHTML = prnhtml // 把需要打印的指定内容赋给body.innerHTML window.print() // 调用浏览器的打印功能打印指定区域 window.document.body.innerHTML = oldHtml // 替换当前页面中的所有页面内容 return false }
设置初始默认页边距,去除页码,页尾信息@page {size: auto;margin: 0mm;}
优化
复制了页面的DOM同时,没有同步监听事件,导致第二次点击打印功能无效onPrint () { const prnhtml = window.document.getElementById('form-page').innerHTML // const oldHtml = window.document.body.innerHTML window.document.body.innerHTML = prnhtml // 把需要打印的指定内容赋给body.innerHTML window.document.body.style.padding = '20px 30px' window.print() // 调用浏览器的打印功能打印指定区域 // window.document.body.innerHTML = oldHtml //处理移除所有事件监听,点击事件失效问题 window.location.reload() //处理点击事件失效问题 return false }
导出为图片
https://www.npmjs.com/package/dom-to-image-more
import domtoimage from "dom-to-image-more";function downLoad() {var node = document.getElementById("dom-to-img");domtoimage .toJpeg(node) .then(function (dataUrl) { var link = document.createElement("a"); link.download = "my-image-name.jpeg"; link.href = dataUrl; link.click(); }) .catch(function (error) { console.error("oops, something went wrong!", error); });}