JSzip解压PDF文件并批量下载

因需要解压PDF文件并且实现批量下载,但网上找到的基本都是图片的解压和下载,所以参考图片的解压修改了一下。
用到了jszip,jszip-utils,file-saver这三个依赖

下面进入正题

实现zip文件的解压并打包

async unZipHandle(arr) {// arr为需要解压的数组let zip = new JSZip();let promises = []; // 存放解压的文件let that = this;// 这里用await就是为了改成同步,需要等数据处理完才进行下一步await arr.forEach((item) => {let promise = that.getUrlBuffer(item).then((pdf) => {// getUrlBuffer这里是把url解压转化成文件for (let key in pdf.files) {// 判断是否是目录if (!pdf.files[key].dir) {if (/\.(pdf)$/.test(pdf.files[key].name)) {// 这里判断是pdf文件,其他文件的话,换个格式return pdf.file(pdf.files[key].name).async("ArrayBuffer").then((data) => {// 把文件转化为buffer// this.arrayBufferToBlob(data);这个是因为pdf需要展示,所以我这边把buffer转化成blob文件会得到个url,方便用来展示。后面会补充这个方法// return出buffer生成的文件return zip.file(pdf.files[key].name, data, {binary: true,});});}}}// zip.file("测试", pdf, { binary: true });});// 将循环得到的所有promise存到一个数组里面promises.push(promise);});Promise.all(promises) // this.policyNo.then((res) => {// 这里就简单了,当所有promise执行完之后,打包下载zip.generateAsync({type: "blob",}).then((content) => {// zipName这个是压缩包名称,可以自己定义FileSaver.saveAs(content, zipName);});});
}

解压方法内的方法补充

zip解压成源文件的方法

getUrlBuffer(url) {// zip解压成源文件的方法return new JSZip.external.Promise(function (resolve, reject) {JSZipUtils.getBinaryContent(url, function (err, data) {if (err) {reject(err);} else {resolve(data);}});}).then(function (data) {return JSZip.loadAsync(data);});}

将arrayBuffer转化成blob

 arrayBufferToBlob(arrayBuffer) {    // 为了得到文件临时的urlreturn URL.createObjectURL(new Blob([arrayBuffer], { type: "application/pdf" }) // 不加type会乱码);},

上面的解压方法内包含了文件的解压,转化arrayBuffer以及Blob(转Blob是因为临时展示文件不需要的同学可以忽略)循环解压一定要改成同步,不然数据处理会有问题。

喜欢的同学,可以点个赞再走,谢谢了!

JSZip解压PDF文件并批量下载相关推荐

  1. java关于对于word或者pdf文件的批量下载实现,其中包括(Java实现创建word文档模板,根据模板导出word文档)

    本次需求是,pdf是表格类型的文件,我这里使用了word模板进行处理.但由于是多个文件一起导出,因此全部放到一个目录底下进行打包下载. ## 整体思路 /*** 下载思路:* 1.查询出数据后:* 2 ...

  2. 使用InfoZip压缩解压zip文件

    使用InfoZip压缩解压zip文件 源码下载地址:http://download.csdn.net/detail/risingsun001/4254821 先贴部分源码: void CInfozip ...

  3. windows通过命令方式解压zip文件

    windows通过命令方式解压zip文件 1.下载unzip 2.下载完成后,默认安装就好,安装后将bin目录下的unzip.exe文件放在C:\Windows目录下 3.再次执行命令行,就可以解压了 ...

  4. centos 解压rar文件

    首先需要下载解压该文件的工具 下载 下载自己的版本,下边以64位的为例: wget http://www.rarlab.com/rar/rarlinux-x64-5.6.1.tar.gz 解压 到文件 ...

  5. (压缩包在本地目录或由链接请求)使用jszip解压文件或compressing解压文件到指定目录,写个node脚本

    使用jszip解压文件与compressing解压zip文件到指定目录 一.介绍jszip和compressing模块 jszip和compressing模块都是可以压缩和解压缩zip文件,都可以通过 ...

  6. python批量解压文件_python 批量解压压缩文件的实例代码

    下面给大家介绍python 批量解压压缩文件的实例代码,代码如下所述: #/usr/bin/python#coding=utf-8import os,sys import zipfile open_p ...

  7. deb下载路径、apt下载路径(deb路径、apt路径)、自定义打包deb文件、安装deb文件、解压deb文件

    只下载不安装deb apt-get --download-only install freesweep 默认下载路径:/var/cache/apt/archive 解压deb文件  dpkg -x f ...

  8. java csv文件tozip后损坏_java上传并下载以及解压zip文件有时会报文件被损坏错误分析以及解决...

    情景描述: 1.将本地数据备份成zip文件: 2.将备份的zip文件通过sftp上传到文件服务器: 3.将文件服务器上的zip文件下载到运行服务器: 4.将下载的zip文件解压到本地(文件大小超过50 ...

  9. linux 批量解压gz文件夹,linux 批量解压gz bz2文件

    一.批量解压bz2文件 find -maxdepth 1 -name "*.bz2"|xargs -i tar xvjf {} 这条命令可解压当前目录下的所有bz2文件 批量解压是 ...

最新文章

  1. IEWebBrowser组件的execWB方法
  2. 旧金山漫记(四):夜困火车站
  3. Selleck --- 01Cookie
  4. ArcGIS之GP服务发布
  5. Mac 实现keras网络模型可视化【conda】
  6. CCNA初认识——ACL命令
  7. Resource Hacker+mysql安装会出现错误“应用程序无法启动因为应用程序的并行配置不正确”...
  8. MTK 驱动开发(54)---MTK-thermal.conf温度参数修改的方法
  9. 挂载ntfs_NTFSTool for mac(NTFS硬盘读写工具) 中文免费版
  10. IntentService用法小结
  11. centos光盘修复引导_CentOS 6.5 修复grub引导
  12. 数据分析 超市条码_深圳超市通道摆闸常见故障解决|指示灯|摆闸|通道|限位
  13. 百度火星坐标转wgs84
  14. 2020德勤面试开始了吗_曝!玛氏、德勤、携程面试题新鲜出炉!2020第一波面试复盘来了......
  15. SoftICE使用(2)-网络远程调试zz xfocus
  16. iOS相机、相册的访问权限
  17. 手机可以连上wifi,电脑连不上怎么办?
  18. 微信平台开发的基本步骤讲解
  19. 小米MIUI12开发版内测-答题
  20. 焦作师范高等专科学校计算机,热烈欢迎丨焦作师范高等专科学院计算机与信息工程学院莅临智游...

热门文章

  1. React-Native一款社交软件
  2. mysql底层数据结构与算法
  3. pythonDay09-Linux系统ubuntu命令的学习
  4. 【Linux基础】vi编辑器(一文详解)
  5. vue+ vue-i18n实现前端语言国际化
  6. 51单片机 PWM LED灯亮度调节+Proteus仿真
  7. BIOS和BootLoader uboot
  8. 「UnityShader笔记」08. 基础卡通渲染—渐变纹理
  9. 傅里叶周期分析软件专业版
  10. EasyExcel读写文件