前端使用print,打印页面功能
最近在做一个打印功能,看了很多方法 ,因为打印的模板需求不同,没有找到好的模板,只是自己根据需求画了一个模板,有好用的模板大家可以推荐下。
一.window.print();
二.iframe
三.npm install --save react-to-print
首先:window.print()
如果是局部打印可以通过 document.getElementById("print")?.innerHTML,获取当前要打印的模块,使用这个方法是最简便的,当前页面没有其他操作可以使用这个方法,如果需要打印的页面有“新增”,“删除”,“编辑”等操作,尽量不要使用这个方法,因为当你使用次方法之后你的页面不能操作,需要重新加载才可以正常使用,这个方法,目前我没有找到其他好的方式来解决这个问题
代码实例:
const handlePrint=()=>{
const oldPage = document.body.innerHTML;//首先保存整个页面
const print=document.getElementById("print")?.innerHTML//当前需要打印的部分
document.body.innerHTML = print;//需要打印的页面
window.print();//打印
document.body.innerHTML = oldPage;//还原打印之前的页面
}
其次:iframe
通过这个方法虽然不会导致原页面操作失效,但是样式容易丢失,放在标签上的样式不会应用,需要自己引进样式,样式根据自己项目引入方式去添加
代码示例:
const handleIframe = () => {
//创建iframe
const iframe = document.createElement('IFRAME');
//获取dom节点 (打印的内容)
const jubuData = document.getElementById("pront")?.innerHTML;
let doc = null;
iframe.setAttribute('style', 'position:absolute;width:0;height:0;left:-500px;top:-500px;');
document.body.appendChild(iframe);
document.getElementById("pront")?.innerHTML
doc = iframe.contentWindow.document;
doc.write(jubuData);
doc.close();
iframe.contentWindow.print();
}
最后:npm install --save react-to-print
地址:react-to-print - npm (npmjs.com)
引入方式 import ReactToPrint from "react-to-print";
在这里,我是封装成一个组件,根据不同的类型,打印不同的模板,因为只是打印,需求没有没有那么复杂,使用的api比较少,这个插件的api方法解释的很详细,可以去研究下。
<div>
<ReactToPrint
content={reactToPrintContent}
documentTitle="AwesomeFileName"
removeAfterPrint
trigger={reactToPrintTrigger}
/>
//自定义组件模板PrintComponent,
<PrintComponent
printType={BILL}
dataSource={dataSource}
printData={printData}
tableFooter={tableFooter}
tableHeader={tableHeader}
ref={setComponentRef}
</div>
//方法可以直接在api的例子拷贝一份
let componentRef: any = null;
const reactToPrintContent = () => {
return componentRef;
};
const setComponentRef = (ref: any) => {
componentRef = ref;
};
const reactToPrintTrigger = () => {
return <Popover content="打印" placement="rightTop" trigger="hover">
<PrinterOutlined style={{ color: '#1890FF' }} />
</Popover>;
};
下面就是预览图片
前端使用print,打印页面功能相关推荐
- window.print 打印页面指定区域
这一阵子由于项目需要,需要在项目某页面下加一个打印的功能,在网上查过之后,知道了window.print 这个函数,这个函数可以很方便的打印当前窗口中的内容, 但是这个有时候并不能满足广大用户的需求: ...
- window.print()打印页面 宽度为1000
使用window.print()得时候 如果Body 没设置宽度 或者为100%得时候 打印页面得宽度 为700~800 多了会被裁掉! 当设置body宽度后 以我这边为例 body 1200px 的 ...
- 关于window.print打印分页功能
平常window.print分页一般打印时用到page-break-after:always; 打印的样式设置在 <style type="text/css" media=& ...
- js的window.print打印页面 不打印网页中的“打印”按钮
设置样式来控制不打印"打印"按钮: <style type="text/css" media="print"> .noprint ...
- Python Print打印计时器功能
1.倒计时 我们仔细看看print的参数:print(value,sep=' ',end='\n',file=sys.stdout,flush=False) 这个value是我们要打印的字符串,sep ...
- 前端使用print.js实现打印
前言 项目中经常会用到前端调用浏览器打印的功能,也经常会遇到一些问题,写这篇文章是为了更好的梳理一下相关内容.下面的内容基于vue. 如果需要用到前端生成二维码可以看我的这篇文章:在vue项目中使用q ...
- 使用window.print()打印局部页面,ifrme打印ie报错
问题: 使用window.print();打印页面,将不需要的数据隐藏,将需要的数据显示,打印完成之后将刚才隐藏的数据还原,显示的数据隐藏, 谷歌浏览器.部分ie能一气呵成, 火狐浏览器以及少数ie ...
- window.print()打印网页局部内容
用window.print()打印网页局部内容 今天客户让添加个打印证照功能,直接用window.print()打印的是整个页面,而用以下方法就可以只打印证明了 <!--window.print ...
- 解决打印页面el-table打印不全问题
起因: 做打印页面功能,页面中有el-table元素,发现弹出来的打印页面,只打印了几个table列,还有好几个列没打印. 然后看代码,用到的方法是: window.print();并不是这个方法错了 ...
最新文章
- spark-submit提交python脚本过程记录
- java和php优缺点_php和java的优缺点是什么?
- Java的poi的excel导入怎么判断日期格式的单元格
- 新建Exchange服务器 Outlook端收发邮件报错:0x80040201
- AngularJS中关于ng-class和*ngIf指令
- 在Visual Studio Code中配置GO开发环境
- 文件上传之Apache commons fileupload使用
- 最长公共子序列模板(LCS)和LICS模板
- ADMT3.2域迁移之Server2003至Server2012系列(五)添加域管理员权限
- 名下房产、汽车、存款被查封后,王思聪要筹拍电影了...
- 最长重复子字符串:123321||12321
- Android修改实战教程(漫放软件)
- Raft 为什么是更易理解的分布式一致性算法
- flask导出Excel报表详解
- 利普希茨连续(Lipschitz continuous)及其应用
- 喜马拉雅下载器打赏页面
- 【如何高效管理Linkedin账号】
- 牛逼了,利用Python实现“天眼系统”,只要照片就能了解个人信息
- 【图解】Web前端实现类似Excel的电子表格
- Map线程安全几种实现方法
热门文章
- vue2 实现鼠标左键拖拽实现框选功能
- Eyeshot Ultimate 2021.2 Crack
- fsync mysql_使用O_DIRECT_NO_FSYNC来提升MySQL性能
- AB PLC使用BOOTP/DCHPSvevr2.3给模块分配IP地址步骤
- linux mknod command
- 阿里云ECS服务器配置LAMP时安装配置PHP扩展填坑(三)
- 软考高级哪个含金量高?哪个最简单?
- 也看《我的前半生》:一辈子太长,我们只谈前半生
- 提升搜索效率-----使用chatGPT插件让搜索结果直接展示在谷歌界面右侧
- 防摔防尘物资塑料周转箱 海格里斯加厚储物仓库物流周转箱