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 获得选中文本内容的方法
Feb 15 Javascript
关于firefox的ElementTraversal 接口 使用说明
Nov 11 Javascript
jquery可见性过滤选择器使用示例
Jun 24 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
Apr 29 Javascript
用JS生成UUID的方法实例
Mar 30 Javascript
JavaScript数组合并的多种方法
May 22 Javascript
webpack 1.x升级过程中的踩坑总结大全
Aug 09 Javascript
新手快速上手webpack4打包工具的使用详解
Jan 28 Javascript
使用异步controller与jQuery实现卷帘式分页
Jun 18 jQuery
原生JavaScript之es6中Class的用法分析
Feb 23 Javascript
vue Element左侧无限级菜单实现
Jun 10 Javascript
JavaScript常用工具函数汇总(浏览器环境)
Sep 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
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
PHP 类与构造函数解析
2017/02/06 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
js点击选择文本的方法
2015/02/09 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
如何使用bootstrap框架 bootstrap入门必看!
2017/04/13 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
Python 画出来六维图
2019/07/26 Python
Python配置文件处理的方法教程
2019/08/29 Python
Python使用贪婪算法解决问题
2019/10/22 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
怎样写留学自荐信
2013/11/11 职场文书
电子商务专员岗位职责
2013/12/11 职场文书
招聘与培训专员岗位职责
2014/01/30 职场文书
趣味体育活动方案
2014/02/08 职场文书
说明书范文
2014/05/07 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
离婚被告答辩状
2015/05/22 职场文书
长江七号观后感
2015/06/11 职场文书
经典爱情感言
2015/08/03 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python