JavaScript前端:与PDF.js结合,实现网页PDF内容批量下载

news/2024/11/24 9:15:11/

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

JavaScript前端:与PDF.js结合,实现网页PDF内容批量下载

  • 前言
  • 一、PDF.js是什么?
  • 二、PDF.js单个PDF文件下载
  • 三、与PDF.js结合,实现PDF文件批量下载
  • 总结


前言

相信很多朋友在开发网页的时候遇到过一种需求,就是实现网页PDF的批量下载。现在很多需要显示PDF的网页,都采用PDF.js插件,这个插件页面简洁美观,功能强大,使用起来方便。
虽然PDF.js本身提供了下载功能,但是没有提供文件的批量下载功能(或者是我暂时没发现)。本文介绍了如何实现与PDF.js结合,实现PDF内容批量下载。


一、PDF.js是什么?

在网页中加载并显示PDF文件是最常见的业务需求。现在的浏览器大多数都自带pdf预览功能,但是每个浏览器的pdf加载器并不一样,工具栏也无法定制化,为了统一不同浏览器pdf预览的一致性,并增加一些自定义功能,我们使用pdf.js来实现pdf的预览。

pdf.js是一款非常优秀的pdf解析工具,其实我们火狐浏览器内核自带pdf预览解析器就是pdf.js这个解析器,我们把pdf在火狐浏览器打开按F12可以看到源码内容。

Alt

具体实现效果:
Alt

以上内容来自:: pdf.js 使用介绍

二、PDF.js单个PDF文件下载

PDF.js强大在本身提供了单个PDF文件的下载功能,插件上开启这个功能,只需要如下几步:
(1)在viewer.html文件找到 id=“download” 的按钮
(2)然后设置 style=“display:block”,或者删除style中对display属性的配置,因为默认显示

同样的,关闭这个功能,只需要设置style=“display:none”,就不会在插件中显示了。

三、与PDF.js结合,实现PDF文件批量下载

PDF.js 本身没有提供批量下载的按钮,实现批量下载的流程如下:
(1)需要在网页新增一个按钮
代码如下:

//新增全部下载的按钮
<button  onclick="downloadAll()" class="btn btn-primary align-middle">全部下载</button>

(2)绑定方法
代码如下:

//新增全部下载的按钮的方法
function downloadAll(){$.ajax({url: '/getinfo',method: 'get',data: {"uuid": get_url['uuid']},success: function (result) {var resNum=1; //起始的文件编号var iframe = document.createElement('iframe'); //选用iframe框架发送请求iframe.style.display = 'none';iframe.style.height = 0;//配置服务器地址iframe.src = 'http://XXX.XX.XXX.XXX:XXX/downloadPdf?uuid='+get_url['uuid']+'&resNum='+resNum;// iframe需要挂载到页面上才能触发请求document.body.appendChild(iframe);setTimeout(() => {iframe.remove();}, 10000);}})}

我尝试了使用直接向后台发送批量下载请求,但是失败了,点了按钮但是无法发起下载,我暂时也找不到原因。所以就尝试了用iframe框架,这个成功了,所以分享的是用iframe框架发送的前端请求,大家可以做个参考。

iframe学习链接: 深入理解iframe

(3)SpringBoot后端:接受前端发送的下载请求

 @RequestMapping(value = "/downloadPdf", method = RequestMethod.GET)public void pdfDownload(@RequestParam("uuid") String uuid, HttpServletRequest request,HttpServletResponse response) {String resNum=request.getParameter("resNum");if(resNum==null){resNum="1";}resNum="1";String objs[]=uuid.split("_");response.reset();//这里采用的方法是把所有文件放到Zip压缩包中再下载ZipOutputStream zout=null;InputStream is =null;OutputStream out=null;ZipEntry entry=null;String entryName=null;try {out=response.getOutputStream();zout=new ZipOutputStream(out);response.setContentType("application/octet-stream");response.addHeader("Content-Disposition", "attachment;fileName="+encodeFilename("PDF批量下载压缩包.zip"));byte[] data = null;//for循环,把所有需要下载的文件写入到压缩包中for(int i=1;i<=totalNum();i++){File file = new File(“XXX”);if (file.exists()){FileInputStream input = new FileInputStream(file);data = toByteArray(input);closeQuietly(input);entryName="XXX.pdf";entry=new ZipEntry(entryName);zout.putNextEntry(entry);zout.write(data);zout.closeEntry();}else{return;}}zout.flush();out.flush();closeQuietly(zout);closeQuietly(out);}catch (Exception e){}finally {closeQuietly(is);closeQuietly(zout);closeQuietly(out);}}

总结

与PDF.js结合,实现PDF文件批量下载,实现起来还是比较麻烦的,之前我做了挺久的,也没在网上搜到简单直接的解决办法。本文尽可能的简单直接介绍了如何实现,并且附上了前后端代码。
希望对大家有用!


http://www.ppmy.cn/news/176389.html

相关文章

php pdf只能查看不能下载,对于pdf文件不支持浏览器下载如何处理?

最近在工作中遇到这样一个问题,就是知道pdf文件的下载地址,但是所有浏览器对于pdf文件都是在浏览器中打开,不支持下载,需要用户下载下来。于是就做了一个html页面,把下载地址设为downpdf.php?pdfid="";这个pdfid是根据下面的数组的键名来定的,需要注意的是,对…

PDF编辑器:Adobe Acrobat XI Pro

下载&#xff1a; Adobe Acrobat Xi Pro v11.0.10官方简体中文破解版 链接&#xff1a;http://pan.baidu.com/s/1dFD1T0t 密码&#xff1a;ei3a 安装与破解&#xff1a; 参考下载下来的ReadME.txt中的教程 破解后联网打开过一会儿可能会出现序列号失效&#xff0c;这时候你…

linux系统pdf目录编辑器,适用于Linux系统的七款PDF内容编辑器,附下载和安装方法...

本文介绍的七款PDF编辑器有:LibreOffice Draw、okular、Xournal++、Scribus、PDFedit、Qoppa PDF Studio、Master PDF Editor。这些编辑器可用于在Linux系统中编辑内容、拆分和合并PDF文档,包括注释、突出显示、修改文本、添加或删除图像等。 1、LibreOffice Draw LibreOffic…

游戏开发电子书(PDF)下载分享

游戏开发电子书&#xff08;PDF&#xff09;下载分享-大量Unity书籍 封面 书名 作者 出版社 下载 《Unity3D\2D手机游戏开发 第2版》 金玺曾 著 清华大学出版社 下载 《Unity虚拟现实开发圣典》 何伟 著 中国铁道出版社 下载 《Unity3D游戏场景设计实例教程》 李瑞森 王至 吴…

Sumatra PDF阅读器——快捷键与配置

文章目录 写在前面常用快捷键阅读模式&#xff08;Screen Mode&#xff09;放映模式&#xff08;Presentation Mode&#xff09; 常用设置&#xff08;Settings&#xff09;深度自定义&#xff08;Advanced Settings&#xff09; 写在前面 最近习惯了浏览器的Vim插件&#xff…

免费好用的 PDF 编辑器推荐

PDF 作为一种为保持原文件排版而不准编辑的格式&#xff0c;对于跨平台文档共享很方便&#xff0c;但有时候&#xff0c;遇到需要修改的一些细节&#xff0c;需要先把 PDF 转换成 Word&#xff0c;修改完后再把 Word 转换回 PDF&#xff0c;这个过程麻烦耗时又费力。那如何高效…

android pdf阅读器推荐,Android最强PDF阅读器 十款软件大PK

第1页:测试内容与测试样本 第2页:内容显示是否准确清晰 第3页:多点触摸界面相应及时间 第4页:各阅读软件的特色功能 内容显示是否准确清晰 打开文档&#xff0c;查看每个页面内容是否显示准确清晰。 Adobe Reader正常打开所有PDF测试文档。 BeamReader打开部分文档时提示需要加…

下载网页中不能下载的pdf

我在工作中许多时候会遇到网页中的pdf需要下载&#xff0c;但却找到不到下载按钮&#xff0c;只能通过网页分析下载&#xff0c;遇见多了觉得比较麻烦&#xff0c;就想着写个浏览器插件会方便很多&#xff0c;我不是写前端的&#xff0c;所以插件有一些不足。也不能针对所有不能…