How to Encrypt PDF files using Foxit PDF SDK (Objective-C)
Foxit PDF SDK provides a range of encryption and decryption functions to meet different levels of document security protection. Users can use regular password encryption and certificate-driven encryption, or use their own security handler for custom security implementation. It also provides APIs to integrate with the third-party security mechanism (Microsoft RMS). These APIs allow developers to work with the Microsoft RMS SDK to both encrypt (protect) and decrypt (unprotect) PDF documents.
Note: For more detailed information about the RMS encryption and decryption, please refer to the simple demo “security” in the “examples\simple_demo” folder of the download package.
Example:
How to encrypt a PDF file with a Certificate
#include "FSPDFObjC.h" ... FSPDFDoc *doc = [[FSPDFDoc alloc] initWithPath:input_file]; FSErrorCode code = [doc load:nil]; if (code != FSErrSuccess) { return -1; } // Do encryption. NSMutableArray *envelopes = @[].mutableCopy; NSMutableData *initial_key = [NSMutableData new]; NSString *cert_file_path = [input_path stringByAppendingPathComponent:@"foxit.cer"]; // GetCertificateInfo is implemented in user side to get information from certificate file. if (!GetCertificateInfo(cert_file_path, envelopes, initial_key, true, 16)) { return -1; } FSCertificateSecurityHandler *handler = [[FSCertificateSecurityHandler alloc] init]; FSCertificateEncryptData *encrypt_data = [[FSCertificateEncryptData alloc] initWithIs_encrypt_metadata:YES cipher:FSSecurityHandlerCipherAES envelopes:envelopes]; [handler initialize:encrypt_data encrypt_key:initial_key]; [doc setSecurityHandler:handler]; NSString *output_file = [output_directory stringByAppendingPathComponent:@"certificate_encrypt.pdf"]; [doc saveAs:output_file save_flags:FSPDFDocSaveFlagNoOriginal]; ...
How to encrypt a PDF file with Foxit DRM
#include "FSPDFObjC.h" ... FSPDFDoc *doc = [[FSPDFDoc alloc] initWithPath:input_file]; FSErrorCode code = [doc load:nil]; if (code != FSErrSuccess) { return -1; } // Do encryption. FSDRMSecurityHandler *handler = [[FSDRMSecurityHandler alloc] init]; NSString *file_id = @"Simple-DRM-file-ID"; NSData *initialize_key = [@"Simple-DRM-initialize-key" dataUsingEncoding:NSUTF8StringEncoding]; FSDRMEncryptData *encrypt_data = [[FSDRMEncryptData alloc] initWithIs_encrypt_metadata:TRUE sub_filter:@"Simple-DRM-filter" cipher:FSSecurityHandlerCipherAES key_length:16 is_owner:YES user_permissions:0xfffffffc]; [handler initialize:encrypt_data file_id:file_id initial_key:initialize_key]; [doc setSecurityHandler:handler]; NSString *output_file = [output_directory stringByAppendingPathComponent:@"foxit_drm_encrypt.pdf"]; [doc saveAs:output_file save_flags:FSPDFDocSaveFlagNoOriginal]; ...
Updated on May 8, 2019