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 Mobile页面跳转后未加载外部JS原因分析及解决
Mar 18 Javascript
解析使用JS 清空File控件的路径值
Jul 08 Javascript
回车直接实现点击某按钮的效果即触发单击事件
Feb 27 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
Jul 29 Javascript
详解javascript函数的参数
Nov 10 Javascript
JavaScript语言精粹经典实例(整理篇)
Jun 07 Javascript
javascript使用闭包模拟对象的私有属性和方法
Oct 05 Javascript
Vue.js弹出模态框组件开发的示例代码
Jul 26 Javascript
js实现前端图片上传即时预览功能
Aug 02 Javascript
vue登录注册及token验证实现代码
Dec 14 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
Jul 25 Javascript
使用typescript快速开发一个cli的实现示例
Dec 09 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-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
javascript 写类方式之一
2009/07/05 Javascript
JS request函数 用来获取url参数
2010/05/17 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
NodeJS的url截取模块url-extract的使用实例
2013/11/18 NodeJs
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
js date 格式化
2017/02/15 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
实用自动化运维Python脚本分享
2018/06/04 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
python集合能干吗
2020/07/19 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
给排水专业应届生求职信
2013/10/12 职场文书
大学生简单自荐信
2013/11/10 职场文书
大学校务公开实施方案
2014/03/31 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
软弱涣散基层党组织整改方案
2014/10/25 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书