项目需求是这样的,在HTML网页上点击打印,然后弹出chrome打印窗口,窗口中是后台生成的PDF文件。其中PDF文件是由后台servlet生成的。
第一种想法是,点击打印时,弹出一个新的窗口

window.open(url,"_blank");//url为生成PDF的url

在这个新的页面中有PDF文件的内容,而且网页上也刚刚有打印的功能,这种看起来是最简单的,但是对用户而言,需要点击二次按钮才能真正打印。所以,用户体验不会太好。
第二种想法是利用iframe,将PDF文件的内容包含其中,这个时候调用window.print()来弹出打印窗口。

//创建一个空的iframe,因为如果每次请求都生成PDF,那么是不必要的。
<iframe style="display:none" id="printIframe"></iframe>$(document).ready(function(){....$("#printIframe").load(function(){//等待iframe加载完成后再执行doPrint.每次iframe设置src之后都会重新执行这部分代码。doPrint();});....
});
//点击打印按钮,触发事件】
function printPDF(){var src = $("#printIframe").attr("src");if(!src){//当src为空,即第一次加载时才赋值,如果是需要动态生成的话,那么条件要稍稍变化一下$("#printIframe").attr("src","./attachment/Images.pdf");//暂时静态PDF文件}elsedoPrint();
}
function doPrint(){$("#printIframe")[0].contentWindow.print();
}

一般的用法是使用window.print()方法来打印,但是当调用window.print()方法时将会显示的是网页正文的内容,而不是iframe的过程,有的网友说把网页的focus置为iframe即可,但是我调研了半天没找到一个好方法。
于是我想window只是一个对象,那么如果我能获取到iframe的window对象不就可以了?于是用了contentWindow的方法,果然好使。

这种方法看起来会更清爽一些,然后用户体验也还行。

利用JQuery在网页上打印PDF相关推荐

  1. 网页上打印PDF文件

    在网页上打印pdf文件,有两种方式:可以是在java后端通过调用iText PDF的jar包的方法实现PDF打印;也可以在前端调用lodop插件打印pdf文件. PDF文件的内容可以是表格,图片等等, ...

  2. 在网页上打印时用javascript设置打印区域和不打印区域,分页等

    <!--media=print 这个属性只在打印时有效--> <stylemedia=print>      .Noprint{display:none;}   //不打印   ...

  3. 如何在网页上打印文字?

    How to efficiently print a webpage? E.g. I want to only print the text for some pages but with figur ...

  4. 利用wget下载网页上所有文件到指定文件夹

    一.wget下载及安装 参考上一篇:https://blog.csdn.net/Yingccu/article/details/119609655?spm=1001.2014.3001.5502 二. ...

  5. java热敏打印机_用java在POS热敏打印机上打印PDF或PNG

    我是每个人.我用java打印票证时遇到问题.我用jasper生成了票,然后我需要用POS热敏打印机打印出来.我试着打印PDF,结果得到了 Wrong Format 如何正确打印?是否有任何方法可以正确 ...

  6. 为什么从网页上打印怎们好像被缩放_全网最详细关于3D打印的zbrush技术

    这个小教程旨在为刚开始对3D打印感兴趣的新人朋友提供一些快速上手小技巧,以便在zbrush中制作适合桌面FDM 3D打印的创作,本次小教程需要读者已经有一些zbrush基础知识. 1设置系统单位 导入 ...

  7. 为什么从网页上打印怎们好像被缩放_便捷高效低成本,映美热敏云打印机CTP-180UWE体验...

    打印机的分好几种,喷墨.激光.针式.热敏,还有之前火过一阵子的3D打印机等,前面三种我们公司都有在用,我同事打印单据都喜欢用针式,因为激光打印机出来的都是A4,太大了,也浪费.但是针式打印机速度很慢, ...

  8. php中手机端ajax上拉加载更多,jQuery手机网页上拉加载更多

    手机网页和PC网页都可以使用的上拉加载更多内容,其中LoadingDataFn自己改为ajax加载就可以了var page = 1, //分页码 off_on = false, //分页开关(滚动加载 ...

  9. python下载网页中的pdf文件_Python读取网页上的pdf文件,输出字符串

    读取一个本地pdf文件,输出字符串 # -*- coding: UTF-8 -*from urllib import urlopenfrom pdfminer.pdfinterp import PDF ...

最新文章

  1. 开发工具之Android Studio快捷键
  2. java循环队列_java实现循环队列(顺序队列)
  3. 去除小圆点_去除li小圆点以及解决其空格问题
  4. Pycharm结合Anaconda结合使用下的能够产生作用的Anaconda命令
  5. 阿里+北大 | 在梯度上做简单mask竟有如此的神奇效果
  6. jquery学习笔记一之window.onload与$(document).ready()区别
  7. Knowledge Graph - NLP
  8. 学习笔记——矩阵键盘的扫描原理与基本应用
  9. 处理一些 Vue warn 和 sonar 扫描报错
  10. [程序人生]--深度思考比勤奋更重要
  11. 7类 登录/注册 安全漏洞
  12. Html5播放器如何实现倍速播放
  13. 【MATLAB】机器学习:决策树算法实验
  14. 2022危险化学品生产单位安全生产管理人员考试题库模拟考试平台操作
  15. javaweb基础搭建及导入包报错Cannot resolve org.codehaus.plexus:plexus-utils:3.0.5
  16. java的 内省机制_Java 内省机制
  17. 怎么在excel中对比两列数据并查找重复项
  18. 大学计算机作业与实验报告东北农业大学,大学课程数字化测图实习报告.doc
  19. 漏洞扫描常见修复方案
  20. Gradle-dependencies介绍

热门文章

  1. 深入理解JDK动态代理原理,使用javassist动手写一个动态代理框架
  2. mybatis调用视图和存储过程
  3. Stack中empty()和isEmpty()的区别
  4. 一百个和尚一百个馒头问题
  5. AAC格式分析(一)
  6. Cannot nest 'PRJ/src/main/resource' inside 'PRJ/src'. To enable the nesting exclude 'main/' from 'PR
  7. centos详细安装教程
  8. centos安装jupyter
  9. 网络安全与python语言_最适合网络安全的5种编程语言
  10. 中国云计费服务产业形势分析与营销趋势研究报告2022版