react控制打印机打印_React实现打印功能

本文介绍了在React中实现打印功能的需求和解决方案。使用全局model传递数据,创建动态表格,包括标题、表头、表格和表尾。通过CSS调整样式,并提供了两种打印实现方式,包括直接刷新页面和新开窗口打印。同时,实现了分页功能,根据输入的分页数将数据分割并生成多个表格。
摘要由CSDN通过智能技术生成

一、需求分析:

环境:react,antd,antd-pro

将选中的数据进行打印,可以自定义分页的大小。

由于打印的列等多个因素,导致如果写成组件在使用的时候依旧会改变源码,所以采用了写成页面的方式,

二、实现需求:

1、数据传值

进行传值的时候,刚开始使用的是在通过this.props.location进行传值,但是这样数据被写死了,导致再次进入页面的时候无法更新打印的值。

最后采用了一个全局的model进行实现的传值。

2、表格生成

分为四部分进行生成,分别是标题、表头、表格、表尾。其中表头,表尾因为需求的原因写死。

以下为代码:

createTitle = (title)=>(

{title}

)

createHeader = (headerData)=>{

headerData = [

{

orderID:'订单编号',

value:'P201901020002',

},{

people:'采购人员',

value:'xxx',

},{

time:'采购时间',

value:'2019年01月01日',

}

];

return (

订单编号:
采购员: 采购时间:

)

}

createForm = (printCol,printData)=>(

{

(

{printCol.map(item=>

{item.name}
)}

)

}

{

printData.map(item=> (

{Object.keys(item).map(i =>

{item[i]})}

)

)

}

)

createFooter = (footerData)=>{

return (

供应商(签字) 库管员(签字) {`第${footerData.current}页`} {`共${footerData.total}页`}

)

}

createPrintArea = (printCol)=>{

const {printGroupData} = this.state;

return (

printGroupData.map((item,index)=>{

if(item.length){

return (

{this.createTitle('xxxxxxx公司xxx单')}

{this.createHeader('asd')}

{this.createForm(printCol,item)}

{this.createFooter({current:index+1,total:printGroupData.length})}

)

}

})

)

}

最主要的是CSS的调整,因为之后的打印需求将所有的CSS内联:

以下为css:

export const styleObj = {

printArea:{

width: '500px',

fontSize: '12px',

align:'center'

},

printInput:{

fontWeight:'bold',

border: 'none',

},

title:{

textAlign: 'center',

fontSize: '15px',

fontWeight: '700',

},

header:{

fontW

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值