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 相关文章推荐
jQuery 动态酷效果实现总结
Dec 27 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
Jan 24 Javascript
jQuery 仿百度输入标签插件附效果图
Jul 04 Javascript
JavaScript实现添加、查找、删除元素
Jul 02 Javascript
js实现String.Fomat的实例代码
Sep 02 Javascript
js + css实现标签内容切换功能(实例讲解)
Oct 09 Javascript
微信小程序如何获取用户信息
Jan 26 Javascript
JavaScript ES6中的简写语法总结与使用技巧
Dec 30 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
Apr 19 Javascript
ES6 Object属性新的写法实例小结
Jun 25 Javascript
原生js实现日期选择插件
May 21 Javascript
解决vue+webpack项目接口跨域出现的问题
Aug 10 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生成随机密码的几种方法
2011/01/17 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
深入php数据采集的详解
2013/06/02 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
PHP转换文本框内容为HTML格式的方法
2016/07/20 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
使用python统计文件行数示例分享
2014/02/21 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
机器学习10大经典算法详解
2017/12/07 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
详解Pandas 处理缺失值指令大全
2020/07/30 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
nohup的用法
2012/11/26 面试题
软件测试面试题
2014/01/05 面试题
七一讲话心得体会
2014/09/05 职场文书
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
python人工智能human learn绘图可创建机器学习模型
2021/11/23 Python
Python使用openpyxl模块处理Excel文件
2022/06/05 Python