一直使用jszip来创建和下载zip文件。我可以单独下载pdf文件。但我想将这些pdf下载到zip文件夹中,然后下载zip文件。
下载pdf的代码段:
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
window.location.href = "pdf_url"
}
};
xhttp.open("GET", "pdf_url");
xhttp.send();
将zip api添加到其中:
var zip = new JSZip();
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
window.location.href = "pdf_url"
zip.file("file_name", pdf_url_content);
}
};
xhttp.open("GET", "pdf_url");
xhttp.send();
创建zip:
zip.generateAsync({type:"blob"})
.then(function callback(blob) {
saveAs(blob, "example.zip");
}
pdf_url_content应该包含网址的内容。如何阅读该内容?我尝试使用jszip-utils。无法继续。任何帮助将不胜感激。
提前致谢。
答案 0 :(得分:2)
首先,压缩pdf是没用的,因为用户将使用xmlhttprequest将其压缩下载,然后压缩,因此他必须两次下载文件。
无论如何我回答了你的信息
您应该为xmlhttprequest
和responseType
至blob
设置正确的内容类型。然后,您可以使用response
回调
onreadstatechange
访问pdf的内容
var zip = new JSZip();
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "pdf_url");
xhttp.responseType = "blob";
xhttp.setRequestHeader("Content-type", "application/pdf");
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
zip.file("file_name", xhttp.response);
zip.generateAsync({type:"blob"})
.then(function(blob) {
saveAs(blob, "example.zip");
});
}
};
xhttp.send();
请注意,下载部分(FileSaver.js
功能)需要saveAs
。