Back to Blog

    Developer Blog

    How to Encrypt PDF files using Foxit PDF SDK (C++)

    Foxit PDF SDK for Windows

    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 "include/pdf/fs_pdfdoc.h"
    #include "include/pdf/fs_security.h"
    using namespace foxit;
    using namespace foxit::common;
    using foxit::common::Library;
    using namespace pdf;
    ...
    PDFDoc doc(input_file);
    ErrorCode error_code = doc.Load();
     if (error_code != foxit::e_ErrSuccess) {
     return false;
     }
    // Do encryption.
    StringArray envelopes;
    String initial_key;
    WString cert_file_path = input_path + L"foxit.cer";
    if (!GetCertificateInfo((const char*)String::FromUnicode(cert_file_path), envelopes, initial_key, true, 16)) {
     return false;
    }
    CertificateSecurityHandler handler;
    CertificateEncryptData encrypt_data(true, SecurityHandler::e_CipherAES, envelopes);
    handler.Initialize(encrypt_data, initial_key);
    doc.SetSecurityHandler(handler);
    WString output_file = output_directory + L"certificate_encrypt.pdf";
    doc.SaveAs(output_file, PDFDoc::e_SaveFlagNoOriginal);
    ...
    

    How to encrypt a PDF file with Foxit DRM

    #include "include/pdf/fs_pdfdoc.h"
    #include "include/pdf/fs_security.h"
    using namespace foxit;
    using namespace foxit::common;
    using foxit::common::Library;
    using namespace pdf;
    ...
    PDFDoc doc(input_file);
    ErrorCode error_code = doc.Load();
    if (error_code != foxit::e_ErrSuccess) {
     return false;
    }
    // Do encryption.
    DRMSecurityHandler handler = DRMSecurityHandler();
    const char* file_id = "Simple-DRM-file-ID";
    String initialize_key = "Simple-DRM-initialize-key";
    DRMEncryptData encrypt_data(true, "Simple-DRM-filter", SecurityHandler::e_CipherAES, 16, true, 0xfffffffc);
    handler.Initialize(encrypt_data, file_id, initialize_key);
    doc.SetSecurityHandler(handler);
    WString output_file = output_directory + L"foxit_drm_encrypt.pdf";
    doc.SaveAs(output_file, PDFDoc::e_SaveFlagNoOriginal);
    ...