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 迁移目录
Dec 18 Javascript
用JS判断IE版本的代码 超管用!
Aug 09 Javascript
js字符编码函数区别分析
Dec 28 Javascript
js变换显示图片的实例
Apr 16 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
Sep 01 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
Jan 10 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
Aug 15 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
Mar 09 Javascript
JavaScript数据结构之链表的实现
Mar 19 Javascript
JavaScript动态创建二维数组的方法示例
Feb 01 Javascript
layui前端时间戳转化实例
Nov 15 Javascript
vue-cli3配置favicon.ico和title的流程
Oct 27 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
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
js活用事件触发对象动作
2008/08/10 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
基于plt.title无法显示中文的快速解决
2020/05/16 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
二年级评语大全
2014/04/23 职场文书
个人安全承诺书
2014/05/22 职场文书
《纸船和风筝》教学反思
2016/02/18 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
《春酒》教学反思
2016/02/22 职场文书