使用腾讯的微搭低代码平台弄了一个页面,想要打印出来图片,但在打印预览页总是显示不出来,换了浏览器也不行,有大佬知道是什么原因吗
下面是代码:
/*
可通过 $page.handler.xxx 访问这里定义的方法
注意:该方法仅在所属的页面有效
如果需要 async-await,请修改成 export default async function() {}
*/
export default async function({event, data}) {
console.log('打印', event, data)
/**把内容转换成图片格式进行打印 */
await new Promise((resolve,reject) => {
const s = document.createElement('script')
s.src= 'https://html2canvas.hertzen.com/dist/html2canvas.min.js'
s.onload = resolve
s.onerror = reject
document.head.appendChild(s)
})
const element = document.querySelector(#container3
) // 选择到要打印的组件id或者class,转换为canvas,其中 idXXX 表示要打印的元素
// const hide_element = element.querySelector(#button1
);// 选择要隐藏的元素,其中 idXXX 表示要隐藏的元素
// hide_element.style.visibility = 'hidden'
$w.page.dataset.state.show = false;
if(!element) {
throw new Error('要打印的内容不存在')
}
const { width, height } = element.getBoundingClientRect()
const canvas = await window.html2canvas(element)
// 打印
let winPrint = window.open('', '', left=0,top=0,width=${width},height=${height},toolbar=0,scrollbars=0,status=0
);
winPrint.document.body.appendChild(canvas);
winPrint.document.close();
winPrint.focus();
winPrint.print();
//hide_element.style.visibility = 'visible';// 恢复被隐藏的元素 ,其中 idXXX 表示要隐藏的元素
$w.page.dataset.state.show = true;
winPrint.close();
}