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 相关文章推荐
window.onload 加载完毕的问题及解决方案(下)
Jul 09 Javascript
jQuery响应enter键的实现思路
Apr 18 Javascript
js动态切换图片的方法
Jan 20 Javascript
jquery预加载图片的方法
May 27 Javascript
利用JavaScript脚本实现滚屏效果的方法
Jul 07 Javascript
分享javascript、jquery实用代码段
Oct 20 Javascript
JQuery异步提交表单与文件上传功能示例
Jan 12 Javascript
angularjs实现上拉加载和下拉刷新数据功能
Jun 12 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
Oct 27 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
Dec 13 Javascript
发布订阅模式在vue中的实际运用实例详解
Jun 09 Javascript
Openlayers显示瓦片网格信息的方法
Sep 28 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校验ISBN码的函数代码
2011/01/17 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
实现JavaScript中继承的三种方式
2009/10/16 Javascript
javascript options属性集合操作代码
2009/12/28 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
Google Dart编程语法和基本类型学习教程
2013/11/27 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python ValueError: invalid literal for int() with base 10 实用解决方法
2015/06/21 Python
使用Python处理Excel表格的简单方法
2018/06/07 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
交通专业个人自荐信格式
2013/09/23 职场文书
文体活动实施方案
2014/03/27 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
光荣之路观后感
2015/06/12 职场文书
警示教育片观后感
2015/06/17 职场文书
欠条范文
2015/07/03 职场文书
Python多个MP4合成视频的实现方法
2021/07/16 Python
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL