Skip to content

文档安全与权限

福昕 PDF SDK(Web)提供文档密码、权限读取、权限设置和加密相关能力。开发者可以检查文档密码类型、读取用户权限,并为导出的 PDF 设置用户密码、所有者密码和权限位。

打开加密文档

打开加密文档时,可以在打开参数中传入密码。

javascript
await pdfViewer.openPDFByFile(file, {
    password: '123456',
    fileName: file.name
});

如果使用完整 Viewer,SDK 通常会在需要密码时显示密码输入对话框。业务也可以自行实现密码输入流程,然后重新调用打开接口。

检查密码类型

PDFDoc.checkPassword(password) 可检查密码类型,hasOwnerPassword() 可判断当前文档是否设置了所有者密码。

javascript
const pdfDoc = pdfViewer.getCurrentPDFDoc();

const passwordType = await pdfDoc.checkPassword('123456');
const hasOwnerPassword = await pdfDoc.hasOwnerPassword();

console.log(passwordType, hasOwnerPassword);

也可以通过 getPasswordType() 获取当前打开文档的密码类型。

javascript
const passwordType = await pdfDoc.getPasswordType();

读取文档权限

javascript
const permissions = await pdfDoc.getPermissions();
const userPermissions = await pdfDoc.getUserPermissions();

console.log(permissions, userPermissions);

权限信息可用于控制业务 UI,例如禁用打印、复制、注释、表单填写或页面组织入口。

设置密码和权限

PDFDoc.setPasswordAndPermission(userPassword, ownerPassword, permission, cipher, isEncryptMetadata) 用于为文档设置密码和权限。

javascript
const success = await pdfDoc.setPasswordAndPermission(
    'user-password',
    'owner-password',
    0xfffffffc,
    'aes256',
    true
);

if (!success) {
    throw new Error('设置文档安全选项失败');
}

常用参数如下:

参数说明
userPassword用户密码,用于按受限权限打开文档。
ownerPassword所有者密码,用于获得完整权限。
permission用户权限位,控制打印、修改、内容提取、注释表单等能力。
cipher加密算法,支持 nonerc4aes128aes256
isEncryptMetadata是否加密元数据。

保存加密后的文档

设置密码和权限后,需要通过 getFile() 导出文件,才能将变更保存到本地或上传到服务器。

javascript
await pdfDoc.setPasswordAndPermission(
    'user-password',
    'owner-password',
    0xfffffffc,
    'aes256',
    true
);

const file = await pdfDoc.getFile({
    fileName: 'protected.pdf'
});

只读和业务权限控制

文档权限和业务权限通常需要一起处理:

  • PDF 文档自身的权限由 getPermissions()getUserPermissions() 等接口读取。
  • 注释级权限可通过 权限管理器 控制。
  • 业务 UI 应根据权限禁用对应入口,避免用户触发不允许的操作。

注意事项

  • 密码和权限变更会影响导出的 PDF 文件,调用后请使用 getFile() 保存结果。
  • 所有者密码应由业务系统安全保存,避免泄露。
  • 权限位是 PDF 标准能力,具体行为还会受到阅读器和业务 UI 控制影响。
  • 加密算法建议优先使用 aes256