我使用NestJS和Puppeteer在我的Node.js应用程序中生成PDF。但是,我需要为生成的PDF添加密码保护。下面是我的代码的一个版本:
async generatePdf(body: IPdf, functions?: void) {
let pdf: Buffer;
const browser = await puppeteer.launch({
args: ["--no-sandbox", "--disable-setuid-sandbox"],
ignoreDefaultArgs: ["--disable-extensions"],
});
try {
const page = await browser.newPage();
functions;
this.formatDate();
this.numerosLetras();
this.formatCurrency();
this.formatSpecialty();
this.toUpperCase();
const content = await this.compile(body.templateName, body.data);
await page.setContent(content);
pdf = await page.pdf({
format: "a4",
printBackground: true,
margin: { bottom: 30, left: 20, right: 20, top: 20 },
});
} catch (error) {
console.log(error);
}
await browser.close();
return pdf;
}
3条答案
按热度按时间uklbhaso1#
通过快速搜索给我的印象是,他们不打算将其作为一个功能集GitHub Issue添加。
你可以做的是使用另一个库来加密传入的pdf,类似于-node-qpdf2。用法似乎很简单--
干杯!干杯!
kyvafyod2#
根据您的用例,您可能会考虑一种更通用的方法,这种方法可能会提供更强的保护,使用可从nodejs调用的单独文件加密实用程序加密pdf。有很多可能性,但例如Xecrets File Command Line很容易使用,并且工作得很好。还有一个配套的桌面应用程序。此外,它还兼容AxCrypt。【披露:我是Xecrets的作者]
thtygnil3#
PDF密码只对少数人有用的原因。是有2个级别的密码和都存储在PDF中的解密密钥。
那么,它们是什么,以及如何滥用它们?
出于这个原因,没有必要为非个人的PDF提供密码,密码仅用于保护PDF内容不被其他人查看,与外部zip文件密码系统相同,一旦打开,内容就是公共领域。
如果您使用“用户”(个人)密码获取个人公用事业账单,银行或税务数据,则很容易在没有任何密码的情况下保存文件,除非您希望保持隐私。