项目上需要实现导出和打印html,本来直接调用的window.print,结果发现echarts图表无法打印,会是空白的,网上搜索了一下,都是采用转换为64位编码,感觉比较麻烦,找到了另一种办法,利用html2canvas直接将页面转换为canvas,再打印canvas就行了。
代码
// 打印日报
$("#printall").on("click", function () {
if (confirm("您确认打印该PDF文件吗?")) {
// 先用html2canvas将页面整个转为一张截图,再打印,防止出现echarts无法打印
html2canvas(document.getElementById('monthlyReport')).then(
function (canvas) {
window.print(canvas); // 打印canvas
}
);
}
});
有个问题,尽管通过document.getElementById('monthlyReport')获取了对应的id,但是在打印时还是会打印当前页面的东西,有一部分不需要的东西也被打印了
如图: