js使用window.print()来实现打印功能

1.首先在需要打印的内容标签上面绑定ref

<div ref="tableRef">
	需要打印的内容
</div>
<!--点击按钮打印-->
<el-button  @click="billPrintClick" >打印</el-button>

2.按钮打印事件

billPrintClick() {
	let newstr = this.$refs.tableRef.innerHTML  // 获取需要打印的内容
	let oldstr = document.body.innerHTML  // 获取别打印页面的内容
	document.body.innerHTML = newstr  
	// 获取表格表头,表格内容改变打印内容字体的颜色
	document.getElementsByTagName('thead')[0].style.color = '#000'
	document.getElementsByTagName('tbody')[0].style.color = '#000'
	window.print()
	document.body.innerHTML = oldstr
	window.location.reload()  // 退出刷新页面
	return false
}

3.设置打印布局(横向、纵向、边距)

@media print {
    @page {
      // 纵向
      size: portrait; 
 
     // 横向
      size: landscape;
 
      // 边距
      margin: 0cm 0cm 0cm 0cm;
    }
  }

4.去除浏览器默认页眉页脚
打印时默认有页眉页脚信息,显示在页面外边距范围,我们可以通过去除页面模型page的外边距,使其隐藏页眉页脚信息,再通过设置 body 元素的 margin 来保证打印出来的页面带有外边距

@media print {
  @page {
    margin: 0;
  }
  body {
    margin: 1cm;
  }
}

window.open()使用新窗口打印
我们还可以使用新窗口打印,将要打印的HTML,赋值给新窗口的body,打印之后我们再将之关闭

// 获取打印的区域
let newstr = this.$refs.tableRef.innerHTML; 
// 将打印的区域赋值给新窗口body,进行打印
let newWindow = window.open('','');
newWindow.document.write(newstr);
newWindow.window.print();
newWindow.window.close();  // 打印完成后关闭后新窗口
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐