Skip to content

安全

福昕 PDF SDK iOS 版通过 Core SDK 提供了多种文档加密与解密能力,支持密码加密、证书加密和自定义安全处理器,以满足不同级别的文档安全保护需求。

UI Extensions 内置密码输入

如果您使用的是完整阅读器(UI Extensions),打开加密文档时会自动弹出密码输入对话框,无需额外编码。

核心类

说明
FSStdSecurityHandler标准安全处理器,用于密码加密
FSStdEncryptData密码加密参数(加密算法、密钥长度、权限等)
FSCertificateSecurityHandler证书安全处理器,用于证书加密

加密类型常量

通过 [FSPDFDoc getEncryptionType] 获取文档当前的加密类型:

常量说明
FSPDFDocEncryptNone未加密
FSPDFDocEncryptPassword密码加密
FSPDFDocEncryptCertificate证书加密
FSPDFDocEncryptFoxitDRMFoxit DRM 加密
FSPDFDocEncryptCustom自定义加密
FSPDFDocEncryptRMSMicrosoft RMS 加密

用户权限常量

通过 FSStdEncryptDatauser_permissions 参数设置,可使用位或组合:

常量说明
FSPDFDocPermPrint允许打印
FSPDFDocPermModify允许修改文档
FSPDFDocPermExtract允许提取内容
FSPDFDocPermAnnotForm允许添加注释和填写表单
FSPDFDocPermFillForm仅允许填写表单
FSPDFDocPermExtractAccess允许无障碍访问提取
FSPDFDocPermAssemble允许组合文档
FSPDFDocPermPrintHigh允许高质量打印

示例:密码加密

objc
#import <FoxitRDK/FSPDFObjC.h>

FSPDFDoc *doc = [[FSPDFDoc alloc] initWithPath:@"path/to/Sample.pdf"];
[doc load:nil];

// 构造加密参数
FSStdEncryptData *encryptData = [[FSStdEncryptData alloc] init];
[encryptData setIs_encrypt_metadata:YES];
[encryptData setUser_permissions:FSPDFDocPermModify |
                                 FSPDFDocPermFillForm |
                                 FSPDFDocPermPrint];
[encryptData setCipher:FSSecurityHandlerCipherAES];
[encryptData setKey_length:16];

FSStdSecurityHandler *handler = [[FSStdSecurityHandler alloc] init];
NSData *userPwd = [@"user123" dataUsingEncoding:NSUTF8StringEncoding];
NSData *ownerPwd = [@"owner456" dataUsingEncoding:NSUTF8StringEncoding];

if ([handler initialize:encryptData userPassword:userPwd ownerPassword:ownerPwd]) {
    [doc setSecurityHandler:handler];
    [doc saveAs:@"path/to/encrypted.pdf" saveFlags:FSPDFDocSaveFlagNormal];
}

移除加密

objc
[doc removeSecurity];
[doc saveAs:@"path/to/decrypted.pdf" saveFlags:FSPDFDocSaveFlagNormal];

API 参考

FSStdSecurityHandlerFSStdEncryptDataFSCertificateSecurityHandler 的完整接口说明请参阅 API 手册