有没有办法使用 jsZIP 将多个 jsPDF 输出保存到一个 ZIP 中?
Is there a way to save multiple jsPDF outputs into an single ZIP using jsZIP?
我使用 jsPDF 生成多个 PDF。
有没有办法通过 jsZIP 将所有 PDF 保存为一个 ZIP 文件?
这有帮助吗?
https://gist.github.com/noelvo/4502eea719f83270c8e9
var zip = new JSZip();
var count = 0;
var zipFilename = "zipFilename.zip";
var urls = [
'http://image-url-1',
'http://image-url-2',
'http://image-url-3'
];
urls.forEach(function(url){
var filename = "filename";
// loading a file and add it in a zip file
JSZipUtils.getBinaryContent(url, function (err, data) {
if(err) {
throw err; // or handle the error
}
zip.file(filename, data, {binary:true});
count++;
if (count == urls.length) {
var zipFile = zip.generate({type: "blob"});
saveAs(zipFile, zipFilename);
}
});
});
对于任何来这里寻找这个问题的更直接答案的人,我有这个例子:
var zip = new JSZip();
angular.forEach ($scope.students, function (student) {
//The createFile() function returns a jsPDF
var doc = createFile(student);
if (typeof doc !== 'undefined') {
try {
zip.file(student.name + '.pdf', doc.output('blob'));
}
catch {
console.error('Something went wrong!');
}
}
});
zip.generateAsync({type:'blob'}).then(function(content) {
saveAs(content, 'reports.zip');
});
基本上,zip.file() 使用(名称,数据)向 zip 添加一个新文件。您通过调用 doc.output('blob') 将 jsPDF 文档添加为 blob。不要忘记在名称末尾添加'.pdf'。
然后调用zip.generateAsync()函数生成zip文件,生成完成后保存。
在这个例子中我使用了jsPDF, JSZip and FileSaver.js
我使用 jsPDF 生成多个 PDF。 有没有办法通过 jsZIP 将所有 PDF 保存为一个 ZIP 文件?
这有帮助吗? https://gist.github.com/noelvo/4502eea719f83270c8e9
var zip = new JSZip();
var count = 0;
var zipFilename = "zipFilename.zip";
var urls = [
'http://image-url-1',
'http://image-url-2',
'http://image-url-3'
];
urls.forEach(function(url){
var filename = "filename";
// loading a file and add it in a zip file
JSZipUtils.getBinaryContent(url, function (err, data) {
if(err) {
throw err; // or handle the error
}
zip.file(filename, data, {binary:true});
count++;
if (count == urls.length) {
var zipFile = zip.generate({type: "blob"});
saveAs(zipFile, zipFilename);
}
});
});
对于任何来这里寻找这个问题的更直接答案的人,我有这个例子:
var zip = new JSZip();
angular.forEach ($scope.students, function (student) {
//The createFile() function returns a jsPDF
var doc = createFile(student);
if (typeof doc !== 'undefined') {
try {
zip.file(student.name + '.pdf', doc.output('blob'));
}
catch {
console.error('Something went wrong!');
}
}
});
zip.generateAsync({type:'blob'}).then(function(content) {
saveAs(content, 'reports.zip');
});
基本上,zip.file() 使用(名称,数据)向 zip 添加一个新文件。您通过调用 doc.output('blob') 将 jsPDF 文档添加为 blob。不要忘记在名称末尾添加'.pdf'。
然后调用zip.generateAsync()函数生成zip文件,生成完成后保存。
在这个例子中我使用了jsPDF, JSZip and FileSaver.js