设为首页收藏本站
天天打卡

 找回密码
 立即注册
搜索
查看: 67|回复: 13

html 打印相关操作与实现详解

[复制链接]

1

主题

43

回帖

109

积分

注册会员

积分
109
发表于 2024-4-20 10:34:17 | 显示全部楼层 |阅读模式
原理为调用 window.print() 方法,但是该方法只能对当前页面全部打印,所以有了以下方案来解决局部打印
1: 利用 iframe 将需要打印的元素和样式注入 再调用打印
  1. // 示例代码
  2. function print () {
  3.     let ifElement = document.getElementById('ifId')
  4.     const addHtmlPrint = () => {
  5.         const content = ifElement.contentWindow || ifElement.contentDocument
  6.         content.document.body.innerHTML = this.detailTable
  7.         const styleEle = document.createElement('style')
  8.         /* 去掉打印时的页头和页脚 */
  9.         styleEle.innerHTML = '@media print {@page { margin: 5mm; }}'
  10.         content.document.getElementsByTagName('head')[0].appendChild(styleEle)

  11.         /* 保障 iframe 中资源加载完成,图片要用 img 形式引入 */
  12.         ifElement.onload = () => {
  13.             content.print()
  14.         }
  15.     }
  16.     this.getDetailTable()

  17.     if (ifElement) {
  18.         // 若已经创建,则直接打印
  19.         addHtmlPrint()
  20.     } else {
  21.         ifElement = document.createElement('iframe')
  22.         ifElement.setAttribute('id', 'ifId')
  23.         ifElement.setAttribute('style', 'display:none')
  24.         document.body.appendChild(ifElement)

  25.         addHtmlPrint()
  26.     }
  27. }
复制代码
2: 利用 @media print,在当前页面设置打印操作时需要隐藏的元素
  1. @media print{
  2.     /* 这里将不需要打印的元素设置为不显示 */
  3.     .hidden-element{
  4.         display:none;
  5.         /* visibility:hidden; */
  6.     }
  7.     /*纸张设置为宽1200px 高800px*/
  8.     @page{
  9.         size:1200px 800px;
  10.     }
  11. }
复制代码
       
  • <link href="/example.css" media="print" rel="stylesheet" /> 标注打印时才会采用的样式   
  • 监听打印事件 window.addEventListener('beforeprint|| afterprint', ()=> {});
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

1

主题

61

回帖

144

积分

注册会员

积分
144
发表于 2024-4-22 10:36:21 | 显示全部楼层
666666666666

1

主题

76

回帖

166

积分

注册会员

积分
166
发表于 2024-5-3 06:47:30 | 显示全部楼层
确实牛逼

0

主题

41

回帖

83

积分

注册会员

积分
83
发表于 2024-5-4 15:53:38 | 显示全部楼层
让我们一起努力

0

主题

53

回帖

107

积分

等待验证会员

积分
107
发表于 2024-5-18 08:28:33 | 显示全部楼层
同意!
  • 打卡等级:无名新人
  • 打卡总天数:2
  • 打卡月天数:0
  • 打卡总奖励:39
  • 最近打卡:2024-09-12 15:32:41

1

主题

67

回帖

221

积分

中级会员

积分
221

热心会员付费会员

发表于 2024-6-27 17:02:37 | 显示全部楼层
好用好用

0

主题

45

回帖

91

积分

注册会员

积分
91
发表于 2024-7-6 23:41:59 | 显示全部楼层
牛逼

0

主题

36

回帖

69

积分

注册会员

积分
69
发表于 2024-7-7 15:28:12 | 显示全部楼层
我想了解更多

0

主题

57

回帖

115

积分

注册会员

积分
115
发表于 2024-8-25 18:49:15 | 显示全部楼层
说得太好了,完全同意!

1

主题

62

回帖

144

积分

注册会员

积分
144
发表于 2024-9-19 14:01:00 | 显示全部楼层
同意!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|爱云论坛 - d.taiji888.cn - 技术学习 免费资源分享 ( 蜀ICP备2022010826号 )|天天打卡

GMT+8, 2024-11-15 09:05 , Processed in 0.093469 second(s), 28 queries .

Powered by i云网络 Licensed

© 2023-2028 正版授权

快速回复 返回顶部 返回列表