angular实现页面打印局部功能的思考与方法


Posted in Javascript onApril 13, 2018

前言

本文主要介绍了关于angular实现页面打印局部功能的相关内容,分享出来供大家参考,下面话不多说了,来一起看看详细的介绍吧。

场景

在页面显示的时候是分页现实的,当前页面只有10条数据,但是打印需要打印完整的100条数据。

并且在当前页面包含了表格之外的标题,菜单等其他元素。

后天api请求都需要带上token信息

前台页面跳转到打印页面后再跳回

1、通过缓存传递数据,

2、路由跳转到打印页面,

3、页面获取缓存数据,

4、调用浏览器打印方法,

5、操作完毕页面后退一步

调用打印页面

this.cach.setBylocal({key: key, value: data}); // 写入缓存
 this.router.navigate([url, key]); // 路由跳转,缓存key值传递过去

打印页面

ngAfterViewInit() {
 const $qus = this.route.params.subscribe(q => {
  const key = q.key;
  if (key) {
  this._data = this.cach.getBylocal(key) ;
  this.cach.removeBylocal(key);
  setTimeout(() => {
   window.print();
   history.go(-1);
  }, '20');
  }
 });
 }

angular实现页面打印局部功能的思考与方法

在打印页面里自动处理了分页显示等问题。测试一页A4纸适合页面840px-1225px

打印文件里会自动添加页面标题和日期,下方会自动添加页面地址,不知道如何去掉

在后台生成pdf页面显示自带打印下载功能

1、后台生成PDF文件,返回二进制流。

2、在不需要token信息的情况下,并且支持get请求的,可以在浏览器中直接打开该地址。或者通过a标签来实现下载和页面显示。并实现打印功能。

3、需要token验证的情况下,使用blob类型来接收数据,并创建一个本地地址供浏览器访问,后面操作如第二步。

private down(url: string, body?: any) {
 return this.http.post(url, body || null, {
  responseType: 'blob'
 })
 }
 private downLoad(url: string, type: string, body?: any, fileName?: string) {
 return this.down(url, body).map(r => {
  const blob = new Blob([r], {type: type});
  const objectUrl = URL.createObjectURL(blob);
  const a = document.createElement('a');
  document.body.appendChild(a);
  a.setAttribute('style', 'display:none');
  a.setAttribute('href', objectUrl);
  if (fileName) {
  a.setAttribute('download', fileName);
  } else {
  a.setAttribute('target', '_blank');
  }
  a.click();
  URL.revokeObjectURL(objectUrl);
  return true;
 });
 }

 /**
 * 下载pdf, 如果不传入文件名会再浏览器中打开 实现打印功能
 * 传入文件名会直接下载
 * @param {string} url
 * @param body
 * @param {string} fileName
 * @returns {Observable<boolean>}
 */
 downLoadPdf(url: string, body?: any, fileName?: string) {
 return this.downLoad(url, 'application/pdf', body, fileName);
 }

angular实现页面打印局部功能的思考与方法

在iframe页面里调用打印

这个方法可以结合前两个方法使用,把前两个页面放在在iframe页面里。

略。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
如何让动态插入的javascript脚本代码跑起来。
Jan 09 Javascript
jQuery使用手册之二 DOM操作
Mar 24 Javascript
使用jQuery简化Ajax开发 Ajax开发入门
Oct 14 Javascript
原生js实现日期联动
Jan 12 Javascript
JavaScrip调试技巧之断点调试
Oct 22 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
Dec 07 Javascript
微信小程序实现tab切换效果
Nov 21 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
Mar 17 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
Sep 17 Javascript
Vue+Element实现动态生成新表单并添加验证功能
May 23 Javascript
ES6 Map结构的应用实例分析
Jun 26 Javascript
JavaScript实现横版菜单栏
Mar 17 Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
Apr 13 #Javascript
js捆绑TypeScript声明文件的方法教程
Apr 13 #Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
Apr 13 #Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
Apr 13 #Javascript
如何编写一个d.ts文件的步骤详解
Apr 13 #Javascript
VSCode中如何利用d.ts文件进行js智能提示
Apr 13 #Javascript
Vue2.0 实现单选互斥的方法
Apr 13 #Javascript
You might like
php计算十二星座的函数代码
2012/08/21 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
php限制文件下载速度的代码
2015/10/20 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
python中正则表达式的使用方法
2018/02/25 Python
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
法国春天百货官网:Printemps.com
2020/06/29 全球购物
最新的大学生找工作自我评价
2013/09/29 职场文书
广告设计专业自荐信范文
2013/11/14 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
Python语言内置数据类型
2022/02/24 Python