blob - 有没有办法从循环中生成多个 PDF 并将它们存储而不将文件保存到磁盘?
问题描述
我正在尝试使用 jsPDF 在网页上的节点内的一组元素中从 html 生成几个单独的 pdf。(学生成绩单)。然后我需要使用 JavaMail 将个人成绩单通过电子邮件发送给每个学生家长。
问题是: 我不想在生成 pdf 文件时将它们保存到磁盘,而是想以编程方式循环浏览页面中的报告卡元素 (id="'studentCard_' + studentId",生成单独的 pdf从 html 并将每个单独的 pdf 动态存储或推送到一个数组或对象中(当它们被创建时),然后我可以将其传递给 JavaMail 并循环以将每个单独的 pdf 附加到相关联的父母电子邮件中。
我可以毫不费力地将html转换为pdf...
我只是不确定如何将此 pdf 附加到电子邮件,因为唯一的选择是 pdf.save(filename),而且我不想将循环中每个单独生成的 pdf 实际保存到磁盘 - 我只是想在将生成的文件附加到电子邮件并将其发送出去之前临时存储它。
我已将 pdf 转换为 blob 和 blob URL,然后我可以将 blob 推送到数组中。我可以将 pdf 转换为 blob 或 blob url 并将其推送到数组,然后循环遍历该数组并将其附加到电子邮件中。这是我将每个pdf转换为blob,然后将blob推送到数组以传递给JavaMail以循环的解决方案吗?
我对我的问题的这方面一无所知。如果我将 blob 附加到电子邮件中,或在正文中插入 blob URL,当父母单击文件下载文件或单击插入正文中的链接时,它会自动为他们转换回 PDF 格式是通过自己的邮件程序阅读还是在浏览器中阅读?我该如何正确地做到这一点?
解决方案
您可以使用IndexedDB,浏览器的客户端存储。我喜欢JsStore,一个 IndexedDB 包装器。我已经将它用于我的几个项目。这很整洁。
pdf.save(filename)
不是唯一的选择。您应该能够使用pdf.output(datauristring)
orpdf.output('blob')
并将其保存到 IndexedDB。取决于您的 pdf 文件大小,您甚至可以使用 localStorage,它更易于使用,但存储空间比 idb 少得多。
推荐阅读
- ios - 在设置包中的设置更改时收到通知(在 Xamarin iOS 中)
- android - 如何使用 kotlin android 扩展从 radiogroup 中检索单选按钮
- iis - 如何在 Windows Server 上托管 Python 3.7 烧瓶应用程序?
- service-worker - How to handle skipWaiting and lazyloaded resources
- dm-script - 在 DM 中设置线图图像标题/图例的位置和字体大小的代码
- nativescript - 带动画的类似 Instagram/FB 的后退导航
- testing - NestJS - 测试 TCP 微服务
- r - R中的网络对象和邻接矩阵
- ios - Expo:上传到Apple App Store“跳过等待构建处理”
- perl - 宽字符和 Unicode 编码