调用浏览器导出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);
});
}