文档安全与权限
福昕 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 | 加密算法,支持 none、rc4、aes128、aes256。 |
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。