Skip to content

设置密码

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

加密

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

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

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

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

加密步骤如下:

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

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

tsx
const CPDFReaderViewExampleScreen = () => {

  const pdfReaderRef = useRef<CPDFReaderView>(null);

  const [samplePDF] = useState(
    (Platform.OS === 'android'
     ? 'file:///android_asset/PDF_Document.pdf'
     : 'PDF_Document.pdf')
  );

  return (
    <View style={{ flex: 1 }}>
      <Button title='Set Password' onPress={async () => {

          var document = pdfReaderRef.current?._pdfDocument;
          const allowsPrinting = false;
          const allowsCopy = false;
          const result = await document?.setPassword(
            '1234', //文档开启密码
            '4321', //所有者密码
            allowsPrinting, 
            allowsCopy, 
            CPDFDocumentEncryptAlgo.AES128);
          console.log('ComPDFKit-RN setPassword:', result);

        }}></Button>
      <CPDFReaderView
        ref={pdfReaderRef}
        document={samplePDF}
        configuration={ComPDFKit.getDefaultConfig({
          toolbarConfig: {
            mainToolbarVisible: true,
            iosLeftBarAvailableActions: [
              CPDFToolbarAction.THUMBNAIL
            ]
          }
        })}
        />
    </View>
  );
};

不同加密算法

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