Skip to content

设置密码

PDF 权限模块通过提供加密、文档权限、解密和密码移除功能来确保文档安全性,允许用户对文档进行安全的控制和管理。

加密

加密功能由两部分组成:用户密码和所有者密码。

  • 用户密码 用于打开文档,确保只有授权用户可以访问内容。当设置用户密码时,通常会限制某些文档权限,例如修改、复制或打印。
  • 所有者密码 不仅可以打开文档,还可以解锁所有受限权限,允许用户修改、复制或打印文档。

这种双重密码系统旨在提供更加灵活且安全的文档访问与管理方式。

ComPDFKit 提供多种加密算法与权限设置。根据需求,您可以选择适当的算法并配置自定义权限以保护文档。

加密步骤如下:

  1. 设置不同的用户密码和所有者密码。
  2. 创建权限信息类。
  3. 指定加密算法。
  4. 使用用户密码、所有者密码、权限信息和指定的算法加密文档。
  5. 保存文档。

以下示例展示了如何加密文档:

dart
CPDFReaderWidgetController? _controller;

@override
Widget build(BuildContext context) {
  return Scaffold(
    resizeToAvoidBottomInset: false,
    appBar: AppBar(),
    body: Column(children: [
      TextButton(onPressed: () async {
        // 设置密码
        bool setPasswordResult = await _controller.document.setPassword(
          userPassword: '1234',
          ownerPassword: '12345',
          allowsPrinting: false,
          allowsCopying: false,
          encryptAlgo: CPDFDocumentEncryptAlgo.aes256);
        debugPrint('ComPDFKit-Flutter: setPasswordResult:$setPasswordResult');
        // 保存 PDF
        await _controller.document.save();
      }, child: const Text('加密 PDF')),
      Expanded(child: CPDFReaderWidget(
        document: widget.documentPath,
        configuration: CPDFConfiguration(),
        onCreated: (controller) {
          setState(() {
            _controller = controller;
          });
        },
      ))
    ],));
}

不同加密算法

加密算法描述枚举值
No Encrypt Algo不进行加密CPDFDocumentEncryptAlgo.noEncryptAlgo
RC4基于密钥的异或加密明文CPDFDocumentEncryptAlgo.rc4
AES-128使用 128 位密钥的 AES 加密CPDFDocumentEncryptAlgo.aes128
AES-256使用 256 位密钥的 AES 加密CPDFDocumentEncryptAlgo.aes256