You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:52:05