打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
js打印功能的实现(通用)
userphoto

2023.02.14 湖南

关注

业务需求:基于bootstrap和layout的一套可视化布局系统(用来自定义简历),在操作布局界面向预览界面转换时截一张预览界面的图片保存到后台。

第一次尝试:百度后发现很简单,只需要调用 window.print()就可以实现打印功能啦。但是遇到了问题,就是样式错乱,打印不能撑满一张A4纸。经过多番测试后发现是可视化布局系统的逻辑影响了打印效果。

最终方案:在操作界面转换为预览界面时对屏幕进行截图,然后用打印截图取代之前的直接打印节点代码。截图使用到html2canvas插件

html2canvas($("#print"), {

            height: $("#print").outerHeight() + 750,

            width: $("#print").outerWidth() + 750,

            onrendered: function (canvas) {

                //将canvas画布放大若干倍,然后盛放在较小的容器内,就显得不模糊了

                const img = new Image();

                img.src = canvas.toDataURL();

                var imgComplete = 0;

                img.onload = () => {

                    //新开窗口打印,否则无法解决回显问题

                    if (imgComplete == 1) {

                        return;

                    }

                    var newwindow = window.open("", "_blank");

                    newwindow.document.body.appendChild(img);

                    newwindow.window.print();

                    //解决img onload无限调用问题

                    imgComplete = 1;

                };

            },

            useCORS:true,

        });

说明:useCORS是用来开启跨域的,想要截屏的代码段里存在从后台获取的图片等资源时要开启才行,否则图片资源无法显示

————————————————

版权声明:本文为CSDN博主「Micc_web」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/micc_web/article/details/87601310

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Silverlight实用窍门系列:36.Silverlight中播放视频和打印文档【附带...
真正好用的网页打印和分页方法:CSS+DIV或元素ID
js 将图片连接转换称base64格式
3D打印传奇 / Print the Legend
3D打印玩具M9(3D print toys M9)
打印机删除打印任务
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服