Есть ли способ сгенерировать несколько PDF-файлов из цикла и сохранить их без сохранения файлов на диск? - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь сгенерировать несколько отдельных PDF-файлов из HTML в группе элементов в узле на веб-странице с jsPDF. (Табели успеваемости для студентов). Затем мне нужно отправить индивидуальные табели успеваемости каждому родителю ученика с помощью JavaMail.

Проблема в следующем: Я не хочу сохранять файлы pdf на диск по мере их создания, вместо этого я хочу программно циклически просматривать элементы карточки отчета на странице. (id = "'studentCard_' + studentId", сгенерируйте отдельные файлы pdf из html и сохраните или вставьте каждый отдельный файл pdf в массив или объект на лету (по мере их создания), которые затем можно передать в JavaMail и выполнить цикл прикрепить каждый отдельный pdf к электронной почте ассоциированного родителя.

Я могу конвертировать HTML в PDF без заминки ...

Я просто не уверен, как потом прикрепить этот pdf к электронному письму, поскольку единственный вариант - это pdf.save (имя файла), и я не хочу на самом деле СОХРАНИТЬ каждый отдельно сгенерированный pdf в цикле на диск - Я просто хочу временно сохранить сгенерированный файл, прежде чем прикреплять его к электронным письмам и отправлять.

Я преобразовал PDF в BLOB-объект и URL-адрес BLOB-объекта, и теперь я могу поместить BLOB-объект в массив. Могу ли я просто преобразовать PDF-файл в URL-адрес блоба или блоба, передать его в массив, а затем перебрать этот массив и прикрепить его к электронному письму. Является ли это моим решением для преобразования каждого PDF-файла в BLOB-объект, а затем для передачи BLOB-объекта в массив, который будет передан в JavaMail, для циклического выполнения ?

Я ничего не знаю об этом аспекте моей проблемы. Если я присоединяю блоб к сообщению электронной почты или вставляю URL-адрес блоба в тело, когда родитель щелкает файл, чтобы загрузить его, или щелкает ссылку, вставленную в тело, он автоматически преобразуется обратно в PDF формат для чтения их собственной почтовой программой или в браузере ? Как мне сделать это правильно?

1 Ответ

0 голосов
/ 03 февраля 2019

Вы можете использовать IndexedDB , хранилище браузера на стороне клиента. Мне нравится JsStore , оболочка IndexedDB. Я использовал его для нескольких своих проектов. Это довольно опрятно.

pdf.save(filename) НЕ является единственным вариантом. Вы должны быть в состоянии использовать pdf.output(datauristring) или pdf.output('blob') и сохранить его в IndexedDB. В зависимости от размера вашего PDF-файла, вы даже можете использовать localStorage, который проще в использовании, но имеет гораздо меньше памяти, чем idb.

...