幽灵资源网 Design By www.bzswh.com
最近接触到一个新需求,实现打印机打印小票的功能。打的一桌子小票(惭愧),不过也基本满足了业务上的需求,现在分享一下如何实现(好记性不如烂笔头)
先上代码
// 布局代码
<div id="print">
<div id="print_content"></div>
</div>
//js 部分代码var f = document.getElementById('printf');
if (f) {
document.getElementById("print_content").removeChild(f);
}
var printhtml = `
<div style="font-size:12px;margin-left: -6px;">
<p style="margin-left:40px;">${this.ticket.title}</p>
<p>--------------------------------------</p>
<p>提货点:${this.ticket.pickUpAddress}</p>
<p>商品名称:${this.ticket.commodityName}</p>
<p>下单时间:${this.ticket.paymentTime}</p>
<p>提货人:${this.ticket.receiver}</p>
<p>联系电话:${this.ticket.receiverPhone}</p>
<p>提货码:${this.ticket.pickUpCode}</p>
<p>提货时间:${this.ticket.submissionTime}</p>
<p style="color:#FFFFFF">.</p>
</div>`
if (!!window.ActiveXObject || "ActiveXObject" in window) { // 针对IE进行适配
var HKEY_Root, HKEY_Path, HKEY_Key;
HKEY_Root = "HKEY_CURRENT_USER";
HKEY_Path = "\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
//设置网页打印的页眉页脚为空
function PageSetup_Null() {
var Wsh = new ActiveXObject("WScript.Shell");
HKEY_Key = "header";
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "");
HKEY_Key = "footer";
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "");
HKEY_Key = "margin_left"
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //键值设定--左边边界
HKEY_Key = "margin_top"
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //键值设定--上边边界
HKEY_Key = "margin_right"
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //键值设定--右边边界
HKEY_Key = "margin_bottom"
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //键值设定--下边边界
}
printhtml = `
<div style="font-size:12px;font-weight: 800;height:150px;width:300px">
<p style="margin-left:35px">${this.ticket.title}</p>
<p>------------------------------------------------</p>
<p>提货点:${this.ticket.pickUpAddress}</p>
<p>商品名称:${this.ticket.commodityName}</p>
<p>下单时间:${this.ticket.paymentTime}</p>
<p>提货人:${this.ticket.receiver}</p>
<p>联系电话:${this.ticket.receiverPhone}</p>
<p>提货码:${this.ticket.pickUpCode}</p>
<p>提货时间:${this.ticket.submissionTime}</p>
<p style="color:#FFFFFF;font-weight: 100;">.</p>
</div>`
}
var iframe = document.createElement('iframe');
iframe.id = 'printf';
iframe.style.width = '0';
iframe.style.height = '0';
iframe.style.border = "none";
document.getElementById("print_content").appendChild(iframe);
setTimeout(() => {
iframe.contentDocument.write(printhtml);
iframe.contentDocument.close();
iframe.contentWindow.focus();
iframe.contentWindow.print();
}, 100)
因为要求不能把打印的数据显示在页面上,所以通过iframe的方式去实现。单纯的截取字符串重新赋值body内容能进行打印却把打印的内容展现在页面中了,所以不行。
打印针对IE的浏览器进行了一定程度的调整,IE打印要做特定的处理,详见上面判断代码。打印内容通过模板字符串加内联样式去实现。满足了基本需求。
是否应该也通过截取页面字符串的方式去做可能比较浪费性能些,为什么这么说?因为样式在打印的小票上有一定程度的偏差,修了东墙破了西墙,只能采取相对的方式取舍。如果这种写法不满足,可以采取截取字符串写class尝试。
以上就是js实现浏览器打印功能的示例代码的详细内容,更多关于js 浏览器打印的资料请关注其它相关文章!
幽灵资源网 Design By www.bzswh.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
幽灵资源网 Design By www.bzswh.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。