javascript - 有没有办法使用 jsZIP 将多个 jsPDF 输出保存到单个 ZIP 中?
问题描述
我使用 jsPDF 生成多个 PDF。有没有办法让我通过 jsZIP 将所有 PDF 保存为单个 ZIP?
解决方案
对于任何来这里寻找这个问题的更直接答案的人,我有这个例子:
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和FileSaver.js
推荐阅读
- java - 在java中使用正则表达式从字符串中提取字符串值
- grafana - Grafana-cli admin reset-admin-password 访问被拒绝
- mysql - 删除触发器之前/之后
- python - 在 nbconvert 之后设置 Jupiter notebook toc 侧边栏的宽度
- google-cloud-dataflow - 用于包含文件名元数据的大量文件 (1M+) 的 Apache Beam/Dataflow 管道
- android - [Android][kotlin] 如何为意图设置“方案”
- javascript - 如何使用 React Router 将 App.js 设置为 /Home 路由?
- python - python win32com设置outlook添加选项
- mysql - 学习mysql,JOIN查询
- grafana - 当使用 skedler 生成报告时,仅针对特定仪表板能够获取 excel 报告但不能获取 pdf