前端先根据模板写好页面排版等,然后设置要打印的内容容器元素为不可见,不影响页面原来的内容显示,比如绝对定位后设置z-index为-999。
注意:原页面内容的显示方式和透明度等在调用打印功能时都会传递到打印页面,所以不能设置透明度为0或者display为none等==>这样会导致打印的页面上什么都看不见。
handlePrint的参数id为页面上要打印的内容的容器id
function handlePrint(id, callback) {
// 先用html2canvas将页面整个转为一张截图,再打印,防止出现echarts无法打印
const dom = document.getElementById(id);
html2canvas(dom, {
scale: 2,
width: dom.offsetWidth,
height: dom.offsetHeight,
}).then((canvas) => {
const context = canvas.getContext('2d'