1、选定区域
<!--开始-->
<!--startprint-->
。。。内容。。。
<!--endprint-->
<!--结束-->
打印按钮<button onclick="doPrint1()">打印</button>
function doPrint1() {
var bodyhtml=window.document.body.innerHTML; //获取页面html
var startprint="<!--startprint-->";
var endprint="<!--endprint-->";
var printhtml=bodyhtml.substr(bodyhtml.indexOf(startprint)+17);
printhtml=printhtml.substring(0,printhtml.indexOf(endprint)); //截取要打印的html
var iframe = document.createElement('IFRAME');//创建iframe
iframe.setAttribute('style', 'display:none;');//隐藏iframe(无感打印区域)
var doc = null;
document.body.appendChild(iframe);
doc = iframe.contentWindow.document;
//引入css文件,同时插入我们截取的需要打印的html
doc.write('<html><head><link rel="stylesheet" href="/css/dayin.css?ts=20200507" media="all"></head><body style="zoom: 60%;">'+printhtml+'</body></html>');
doc.close();
iframe.contentWindow.focus();
iframe.contentWindow.print();//打印
document.body.removeChild(iframe);//删除iframe
}
注: 解决iframe中内容css丢失的解决方案是将打印区域所需要的css放入一个css文件中,在iframe中引用文件即可
问题1:浏览器最小字体为12号,如果打印快递单子的话字会太大
解决方案:在doc.write('<html><head><link rel="stylesheet" href="/css/dayin.css?ts=20200507" media="all"></head><<body style="zoom: 60%;">'+printhtml+'</body></html>');
中 设这body的缩放比例,利用缩放实现小型快递单子的打印效果。<body style="zoom: 60%;">
缩放60%。