Я хочу отправлять защищенные паролем PDF-файлы в виде вложений электронной почты, используя SendGrid для nodejs.
Я пытался защитить паролем свой PDF с помощью qpdf
.Это выводит новый файл PDF, который защищен паролем локально.Затем я пытаюсь прочитать данные из этого файла и отправить их как содержимое вложения согласно документации SendGrid.
const fs = require('fs');
const qpdf = require('node-qpdf');
const options = {
keyLength: 128,
password: 'FAKE_PASSWORD',
outputFile: filename
}
const attachments = []
await new Promise(res => {
const writeStream = fs.createWriteStream('/tmp/temp.pdf');
writeStream.write(buffer, 'base64');
writeStream.on('finish', () => {
writeStream.end()
});
res();
})
await qpdf.encrypt('/tmp/temp.pdf', options);
const encryptedData = await new Promise(res => {
const buffers = []
const readStream = fs.createReadStream('/tmp/temp.pdf');
readStream.on('data', (data) => buffers.push(data))
readStream.on('end', async () => {
const buffer = Buffer.concat(buffers)
const encryptedBuffer = buffer.toString('base64')
res(encryptedBuffer)
})
})
attachments.push({
filename,
content: encryptedData,
type: 'application/pdf',
disposition: 'attachment'
})
Я получаю письмо с PDF-файлом в виде вложения, но оно не защищено паролем.Можно ли это сделать с этими 2 библиотеками?