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 页面 Mask实现代码
Jan 09 Javascript
jquery中.add()的使用分析
Apr 26 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
Apr 06 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
Jul 12 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
Nov 10 jQuery
深入研究React中setState源码
Nov 17 Javascript
Vue 中mixin 的用法详解
Apr 23 Javascript
在vue中解决提示警告 for循环报错的方法
Sep 28 Javascript
详解vue-cli 2.0配置文件(小结)
Jan 14 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
Apr 19 Javascript
详解vue中多个有顺序要求的异步操作处理
Oct 29 Javascript
TypeScript之调用栈的实现
Dec 31 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
php实现用户登陆简单实例
2017/04/04 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
2014/01/09 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
对python周期性定时器的示例详解
2019/02/19 Python
python 字典操作提取key,value的方法
2019/06/26 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
机关财务管理制度
2014/01/17 职场文书
项目投资意向书
2014/04/01 职场文书
安装工程师岗位职责
2015/02/13 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
volatile保证可见性及重排序方法
2022/08/05 Java/Android
Windows server 2016服务器基本设置
2022/08/14 Servers