一种在网页打印PDF文件的方法、系统、存储介质、设备与流程

文档序号:34732882发布日期:2023-07-08 03:26阅读:157来源:国知局
一种在网页打印PDF文件的方法、系统、存储介质、设备与流程

本发明属于打印,具体涉及一种在网页打印pdf文件的方法、系统、存储介质、设备。


背景技术:

1、一些信息系统涉及到了诸如电子发票、电子合同这类pdf文件的打印需求,由于这类系统大多都是基于浏览器的开发模式,而浏览器针对网页中pdf文件默认所支持的操作仅为预览或下载,浏览器对象模型(browser object model (bom))中也并未提供直接对pdf文件进行打印的接口。

2、因此,现有方案中针对网页里pdf文件的打印通常需要把pdf文件在当前浏览器的新标签页打开后,在单独的预览页面进行打印;或者将pdf文件下载到本地后,通过本地安装的相关软件,比如wps、adobe reader等进行打印;亦或者通过安装一套专用的打印系统软件在本地或专用服务器,当在网页点击打印时,通过网络请求将需要打印的pdf信息发送给该系统软件,再由它进行打印。此外,现有技术中的pdf文件大多以静态资源形式存放在服务器,再在网页中通过以“.pdf”为后缀的url进行获取,该方式安全性差,容易造成敏感源文件的泄露,对于网页爬虫来说也可以轻易进行抓取。

3、现有专利,例如申请号为cn202110342100.2的中国发明专利,其公开了一种无需插件在页面直接打印pdf文件的实现方法,其虽然无需浏览器插件,但是却必须依赖于本地安装的第三方软件adobe reader,而该专利中调用的接口printwithdialog是ie浏览器为adobe reader软件提供的私有接口;因此如其摘要中说述,仅适用于ie浏览器,无法适用于目前主流的浏览器,如chrome、edge、firefox等;ie浏览器本身也在2022年6月由微软正式宣布退役,由edge浏览器取而代之。

4、例如申请号为cn201710719188.9的中国发明专利,其公开了一种pdf电子发票版式文件的在线打印系统,其虽然可以实现无需再手工下载pdf文件到本地再通过pdf阅览器导入文件进行打印,也无需通过浏览器直接打开pdf文件在预览页面进行打印,但是需要部署一套专门的独立于浏览器的打印系统,在打印时将pdf数据通过http网络请求发送给对应系统才能进行打印。

5、由此可见,现有技术方案在对网页上的pdf文件进行打印时,要么需要将pdf下载下来,对于敏感文件的本地留存,可能存在安全隐患;要么需要借助第三方工具,才能完成打印,比较繁琐。


技术实现思路

1、针对现有技术中存在的上述问题,本发明提供一种在网页打印pdf文件的方法、系统、存储介质、设备,实现了在网页不依赖第三方软件直接打印pdf文件的目的。

2、本发明采用以下技术方案:

3、本发明实施例第一方面提供一种在网页打印pdf文件的方法,包括步骤:

4、s1、利用待打印pdf文件数据创建浏览器blob类文件对象;

5、s2、创建浏览器blob类文件对象的url;

6、s3、创建iframe,并将其隐藏;

7、s4、将iframe的被嵌套页面地址设置为步骤s2中创建的url;

8、s5、将iframe放到网页document的body中进行渲染;

9、s6、获取iframe的window对象;

10、s7、执行window对象的打印方法,唤起打印机打印界面,打印iframe窗口的内容。

11、作为优选方案,步骤s1之前,还包括步骤:

12、赋予待打印pdf文件数据唯一标识id,并对待打印pdf文件数据进行数据加密;

13、服务器端通过预设接口获取待打印pdf文件数据的唯一标识id,并基于该唯一标识id返回经加密后的待打印pdf文件数据。

14、浏览器请求预设接口,预先加载并解密所述加密后的待打印pdf文件数据。

15、作为优选方案,步骤s1之前,还包括步骤:

16、判断浏览器环境是否支持pdf文件渲染,若不支持则对用户进行提示,并结束打印。

17、作为优选方案,步骤s5与步骤s6之间包括步骤:获取iframe的焦点。

18、作为优选方案,步骤s3中,创建iframe时赋予其预先定义的常量字符串作为其frameid;

19、步骤s3之前,还包括步骤,基于预先定义的常量字符串,判断是否存在已创建的iframe,若存在则直接使用已创建的iframe并将其隐藏后执行步骤s4。

20、本发明实施例第二方面提供一种在网页打印pdf文件的系统,包括依次连接的blob类文件对象创建模块、url创建模块、属性更换模块、渲染模块、window对象获取模块、打印执行模块,还包括与属性更换模块连接的iframe创建模块;

21、blob类文件对象创建模块,用于利用待打印pdf文件数据创建浏览器blob类文件对象;

22、url创建模块,用于创建浏览器blob类文件对象的url;

23、iframe创建模块,用于创建iframe,并将其隐藏;

24、属性更换模块,用于将iframe的被嵌套页面地址设置为url创建模块创建的url;

25、渲染模块,用于将iframe放到网页document的body中进行渲染;

26、window对象获取模块,用于获取iframe的window对象;

27、打印执行模块,用于执行window对象的打印方法,唤起打印机打印界面,打印iframe窗口的内容。

28、作为优选方案,还包括依次连接的数据加密模块、数据获取模块、数据解密模块,数据解密模块还与blob类文件对象创建模块连接;

29、数据加密模块,用于赋予待打印pdf文件数据唯一标识id,并对待打印pdf文件数据进行数据加密;

30、数据获取模块,用于通过预设接口获取待打印pdf文件数据的唯一标识id,并基于该唯一标识id返回经加密后的待打印pdf文件数据;

31、数据解密模块,用于请求预设接口,预先加载并解密所述加密后的待打印pdf文件数据。

32、作为优选方案,还包括分别与渲染模块、window对象获取模块连接的iframe焦点获取模块;

33、iframe焦点获取模块,用于获取iframe的焦点。

34、本发明实施例第三方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行如本发明实施例第一方面及第一方面任一项所述的一种在网页打印pdf文件的方法。

35、本发明实施例第四方面提供一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行如本发明实施例第一方面及第一方面任一项所述的一种在网页打印pdf文件的方法。

36、本发明的有益效果是:

37、基于现代浏览器普遍具有的pdf文件预览功能以及窗口打印功能,利用浏览器原生blob类文件对象作为媒介,将待打印pdf文件预先转换为blob类文件对象,接着利用一个临时创建的隐藏iframe内联框架元素对其进行离屏渲染,最后借助iframe内嵌window窗口对象上的print打印方法唤起默认打印机打印界面,实现了在网页不依赖第三方软件直接打印pdf文件的目的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1