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 相关文章推荐
Js基础学习资料
Nov 23 Javascript
javascript 在firebug调试时用console.log的方法
May 10 Javascript
javascript之典型高阶函数应用介绍
Jan 10 Javascript
php和js对数据库图片进行等比缩放示例
Apr 28 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
May 14 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
jquery处理页面弹出层查询数据等待操作实例
Mar 25 Javascript
JS生成某个范围的随机数【四种情况详解】
Apr 20 Javascript
jQuery简单设置文本框回车事件的方法
Aug 01 Javascript
jQuery网页定位导航特效实现方法
Dec 19 Javascript
AngularJs上传前预览图片的实例代码
Jan 20 Javascript
详解ECMAScript2019/ES10新属性
Dec 06 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实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
laravel学习教程之关联模型
2016/07/30 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
python的即时标记项目练习笔记
2014/09/18 Python
Python实现从url中提取域名的几种方法
2014/09/26 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
python缩进长度是否统一
2020/08/02 Python
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
幼儿园三八妇女节活动方案
2014/03/11 职场文书
《金子》教学反思
2014/04/13 职场文书
2016年端午节寄语
2015/12/04 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
学生检讨书范文
2019/06/24 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书