Back to Blog

    Developer Blog

    How to Encrypt PDF files using Foxit PDF SDK (Objective-C)

    Foxit PDF SDK for Mac

    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];...