react 前端实现打印发票/图片

作者: 吃橙子的仓鼠 | 来源:发表于2021-02-20 11:33 被阅读0次

需求:由于原型中发票的样式有一丢丢复杂,所以我们采用后端提供数据,前端编排打印模板的方案来实现。
方案:前端采用浏览器默认的打印方法window.print()

  //  点击打印按钮
  handlePrint = async () => {
    const { data } = await printtaxinvoice({ id: this.props.location.state.id })
    this.setState({ printData: data }, () => this.getPrint()) // 获取打印数据之后再调用window.print()
  }
  // 执行打印
  getPrint = () => {
    let printContent = document.getElementById("print") // 将需要打印的模板全部放在#print元素中
    let oldContent = document.body.innerHTML // 暂时存储打印之前的全部页面元素
    document.body.innerHTML = printContent.innerHTML // 将需打印元素渲染在页面上
    document.getElementsByTagName("body")[0].style.zoom = 0.92;
    setTimeout(() => {
      window.print();
      window.location.reload();
      //将原有页面还原到页面
      document.body.innerHTML = oldContent;
    }, 300);
  }

效果:


image.png

批量打印时,即 #print内有多个.print-box,如果需要强制每个.print-box都另起一页,可在css中设置:

@media print {
  .print_dom {
    page-break-after:always;
  }
}

相关文章

  • react 前端实现打印发票/图片

    需求:由于原型中发票的样式有一丢丢复杂,所以我们采用后端提供数据,前端编排打印模板的方案来实现。方案:前端采用浏览...

  • 小尺寸电子发票的打印方法及快速将DHL两页运单变成一页的方法

    小尺寸电子发票的打印方法 同事分享的方法快速打印pdf的电子发票,如话费账单等,不用转换成图片再缩小,而是直接点击...

  • 【vue学习】整合Lodop

    前端实现自动打印 批量打印 vue中使用lodop调用标签打印机 利用lodop打印控件轻松实现批量打印 本文主要...

  • 图片懒加载与预加载

    图片预加载应用创建,前端打印图片,需要所有图片都加载完毕才能打印(增加服务端压力)varimgLoad =func...

  • 前端实现打印功能(筛选打印表格)

    前端实现打印也并没有那么难。起初是后端实现打印,前端调取接口,但无法实现单选框的样式,无法对数据进行筛选,这才选择...

  • 四、使用antd搭建简单后台页面

    1、安装react-router-dom实现前端路由,执行:cnpm install --save react-r...

  • 前端打印

    简单介绍一下前端打印的做法和一些问题 一、简介 前端打印即浏览器打印,是通过浏览器的打印功能来实现打印效果的做法。...

  • React Router-简单原理

    以下内容主要参考自 深入理解 react-router 路由系统react-router的实现原理前端路由实现与 ...

  • React native 图片轮播实现

    图片轮播在APP中经常会遇到,react native有实现图片轮播的库 react-native-swiper使...

  • 前端实现打印功能

    打印样式 一、添加打印样式 为屏幕显示和打印分别准备一个css文件,如下所示:用于屏幕显示的css: 用于打印的...

网友评论

    本文标题:react 前端实现打印发票/图片

    本文链接:https://www.haomeiwen.com/subject/zoetfltx.html