Skip to content

安全

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

UI Extensions 内置密码输入

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

核心类

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

加密类型常量

通过 PDFDoc.getEncryptionType() 获取文档当前的加密类型:

常量说明
e_EncryptNone0未加密
e_EncryptPassword1密码加密
e_EncryptCertificate2证书加密
e_EncryptFoxitDRM3Foxit DRM 加密
e_EncryptCustom4自定义加密
e_EncryptRMS5Microsoft RMS 加密

加密算法常量

常量说明
SecurityHandler.e_CipherRC41RC4 算法
SecurityHandler.e_CipherAES2AES 算法

用户权限常量

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

常量说明
PDFDoc.e_PermPrint0x0004允许打印
PDFDoc.e_PermModify0x0008允许修改文档
PDFDoc.e_PermExtract0x0010允许提取内容
PDFDoc.e_PermAnnotForm0x0020允许添加注释和填写表单
PDFDoc.e_PermFillForm0x0100仅允许填写表单
PDFDoc.e_PermExtractAccess0x0200允许无障碍访问提取
PDFDoc.e_PermAssemble0x0400允许组合文档
PDFDoc.e_PermPrintHigh0x0800允许高质量打印

示例:密码加密

java
import com.foxit.sdk.pdf.PDFDoc;
import com.foxit.sdk.pdf.SecurityHandler;
import com.foxit.sdk.pdf.StdEncryptData;
import com.foxit.sdk.pdf.StdSecurityHandler;

PDFDoc doc = new PDFDoc("path/to/Sample.pdf");
doc.load(null);

// 构造加密参数:加密元数据、权限、AES-128
StdEncryptData encryptData = new StdEncryptData(
    true,
    PDFDoc.e_PermModify | PDFDoc.e_PermFillForm | PDFDoc.e_PermPrint,
    SecurityHandler.e_CipherAES,
    16
);

StdSecurityHandler handler = new StdSecurityHandler();
byte[] userPassword = "user123".getBytes();
byte[] ownerPassword = "owner456".getBytes();

if (handler.initialize(encryptData, userPassword, ownerPassword)) {
    doc.setSecurityHandler(handler);
    doc.saveAs("path/to/encrypted.pdf", PDFDoc.e_SaveFlagNormal);
}

示例:证书加密

java
import com.foxit.sdk.pdf.CertificateSecurityHandler;

CertificateSecurityHandler certHandler = new CertificateSecurityHandler();
certHandler.initialize(envelopes, SecurityHandler.e_CipherAES, true);
doc.setSecurityHandler(certHandler);
doc.saveAs("path/to/cert_encrypted.pdf", PDFDoc.e_SaveFlagNormal);

移除加密

java
doc.removeSecurity();
doc.saveAs("path/to/decrypted.pdf", PDFDoc.e_SaveFlagNormal);

API 参考

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