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

如何正确配置jsPDF的encryption属性实现PDF加密

jsPDF加密配置不生效的核心原因

jsPDF 核心构建包默认不包含加密、权限控制相关逻辑,直接在初始化参数中传入encryption配置不会被核心代码识别,自然不会生效。除此之外,示例代码中的权限参数写法不符合插件要求,使用了自定义字符串而非插件内置的权限常量,也会导致权限配置失效。

正确实现步骤
  • 首先单独引入加密插件
    加密能力是jsPDF的可选插件,不会随核心包默认加载,需要手动引入:
    如果是npm工程化引入:
    import { jsPDF } from "jspdf";
    // 引入和当前jsPDF版本匹配的加密插件
    import "jspdf/dist/plugins/encrypt.min.js";
    
    如果是CDN script标签引入,需要在加载jsPDF核心文件之后,额外加一行引入加密插件的脚本,注意插件版本必须和核心版本完全一致,避免兼容问题。
  • 修正初始化配置,使用正确的权限参数
    不要使用"print"/"copy"这类自定义字符串作为权限值,要调用插件暴露的内置权限常量,修正后的初始化代码如下:
    const doc = new jsPDF({
      unit: 'pt',
      format: 'a1',
      userUnit: 72,
      encryption: {
        userPassword: "1234sds@esdsdsds#22s5",
        ownerPassword: "797233232#2ewwe24",
        userPermissions: [
          jsPDF.API.permissions.PRINT,
          jsPDF.API.permissions.COPY
        ]
      }
    });
    
    // 后续按原有逻辑添加PDF内容、导出即可
    doc.text("测试加密PDF", 100, 100);
    doc.save("加密文件.pdf");
    
  • 效果验证
    导出的PDF打开时会要求输入用户密码,输入密码后仅能执行配置允许的打印、复制操作,未开放的修改、批注等操作会被阅读器拦截。
可选权限常量说明

常用的权限配置值如下,按需组合传入userPermissions数组即可:

  • jsPDF.API.permissions.PRINT:允许打印文档
  • jsPDF.API.permissions.COPY:允许复制文档内容
  • jsPDF.API.permissions.MODIFY:允许修改文档内容
  • jsPDF.API.permissions.ANNOTATE:允许添加批注
  • jsPDF.API.permissions.FILL_FORMS:允许填写表单字段

注意:如果引入插件后加密仍不生效,先检查jsPDF版本,2.0以上版本才支持当前的encryption配置写法,1.x版本的加密插件调用方式存在差异,建议升级到最新稳定版使用。

内容的提问来源于stack exchange,提问作者Tejas Chauhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:31:06