前端自选区域打印,解决iframe不显示样式

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%。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
A:以下是一个前端自选字段导出 Excel 表格的代码演示: 首先,需要在前端定义需要导出的字段和数据,并将其传递给后端: ``` // 前端定义需要导出的字段和数据 const fields = ['name', 'age', 'gender']; const data = [ { name: 'Alice', age: 25, gender: 'female' }, { name: 'Bob', age: 30, gender: 'male' }, { name: 'Charlie', age: 35, gender: 'male' }, ]; // 将字段和数据传递给后端 axios.post('/export', { fields, data }); ``` 后端接收到前端传递的数据后,使用 ExcelJS 库生成 Excel 文件,并将其返回给前端: ``` const ExcelJS = require('exceljs'); // 处理前端传递的数据 app.post('/export', (req, res) => { const { fields, data } = req.body; // 创建 Excel 文件 const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('Sheet1'); // 添加表头 fields.forEach((field, index) => { worksheet.getCell(`A${index + 1}`).value = field; }); // 添加数据 data.forEach((row, rowIndex) => { fields.forEach((field, columnIndex) => { worksheet.getCell(`${String.fromCharCode(66 + columnIndex)}${rowIndex + 2}`).value = row[field]; }); }); // 生成 Excel 文件并返回给前端 workbook.xlsx.write(res).then(() => { res.status(200).end(); }); }); ``` 前端接收到后端返回的 Excel 文件后,通过 Blob 和 FileSaver.js 库实现文件下载: ``` // 前端处理后端返回的 Excel 文件并进行下载 axios({ url: '/export', method: 'POST', responseType: 'blob', data: { fields, data }, }).then((response) => { const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); saveAs(blob, 'data.xlsx'); }); ``` 以上代码可以实现一个简单的前端自选字段导出 Excel 表格的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值