How to Encrypt PDF files using Foxit PDF SDK (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 "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); ...
Updated on May 8, 2019