安全
福昕 PDF SDK iOS 版通过 Core SDK 提供了多种文档加密与解密能力,支持密码加密、证书加密和自定义安全处理器,以满足不同级别的文档安全保护需求。
UI Extensions 内置密码输入
如果您使用的是完整阅读器(UI Extensions),打开加密文档时会自动弹出密码输入对话框,无需额外编码。
核心类
| 类 | 说明 |
|---|---|
FSStdSecurityHandler | 标准安全处理器,用于密码加密 |
FSStdEncryptData | 密码加密参数(加密算法、密钥长度、权限等) |
FSCertificateSecurityHandler | 证书安全处理器,用于证书加密 |
加密类型常量
通过 [FSPDFDoc getEncryptionType] 获取文档当前的加密类型:
| 常量 | 说明 |
|---|---|
FSPDFDocEncryptNone | 未加密 |
FSPDFDocEncryptPassword | 密码加密 |
FSPDFDocEncryptCertificate | 证书加密 |
FSPDFDocEncryptFoxitDRM | Foxit DRM 加密 |
FSPDFDocEncryptCustom | 自定义加密 |
FSPDFDocEncryptRMS | Microsoft RMS 加密 |
用户权限常量
通过 FSStdEncryptData 的 user_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 参考
FSStdSecurityHandler、FSStdEncryptData、FSCertificateSecurityHandler 的完整接口说明请参阅 API 手册。