无需qpdf的Node.js现有PDF文件密码加密保护方案求助
Node.js 无需qpdf为PDF设置密码保护方案
可以使用纯JavaScript的PDF处理库pdf-lib来实现,无需依赖外部工具,下面是完整的实现步骤:
1. 安装依赖
在项目目录下执行命令安装pdf-lib:
npm install pdf-lib
2. 实现代码示例
以下代码可读取本地现有PDF文件,设置打开验证密码,并输出加密后的PDF:
const { PDFDocument } = require('pdf-lib'); const fs = require('fs').promises; async function encryptPdf(inputPath, outputPath, userPassword) { // 读取原始PDF文件 const pdfBytes = await fs.readFile(inputPath); // 加载PDF文档 const pdfDoc = await PDFDocument.load(pdfBytes); // 配置加密选项:用户密码为打开验证密码,所有者密码用于权限控制(可选) const encryptionOptions = { userPassword: userPassword, ownerPassword: 'custom-owner-password', // 可自定义或省略,省略时会自动生成随机密码 // 可选:设置文档操作权限 permissions: { print: true, modify: false, copy: false, addAnnotations: false, }, }; // 执行加密 pdfDoc.encrypt(encryptionOptions); // 生成并保存加密后的PDF const encryptedPdfBytes = await pdfDoc.save(); await fs.writeFile(outputPath, encryptedPdfBytes); console.log(`加密PDF已保存至:${outputPath}`); } // 调用示例 encryptPdf('./source.pdf', './protected.pdf', 'your-verify-password') .catch(err => console.error('加密失败:', err));
关键说明
- 用户密码:通过
userPassword字段设置,是打开PDF时必须输入的验证密码,完全匹配你的需求。 - 权限配置:
permissions对象可自定义文档的操作权限,比如禁止复制、修改等,按需调整即可。 - 兼容性:
pdf-lib支持绝大多数标准PDF文档,若遇到特殊加密或损坏的PDF,可能需要额外预处理。
内容的提问来源于stack exchange,提问作者Nodejs
相关产品推荐
相关产品推荐

