ComPDFKit PDF SDK protects the content of PDF documents from unauthorized access like copying or printing. It offers developers a way to encrypt and decrypt PDFs, add a password, insert watermark, and more. For controlling over document security in ComPDFKit PDF SDK, security handlers perform user authorization and sets various permissions over PDF documents.


PDF Permission


A PDF file can have two different passwords set, a permissions or owner password and an open or user password.


A user password (also known as an open password) requires a user to type a password to open the PDF. When you try to open a document with a user password, CPDFDocument. isEncrypted() will show a password prompt to unlock the document. If you want to open a document with a user password programmatically, you can use the CPDFDocument. open(String absolutePath, String password) API.


An owner password (also known as a permissions password) requires a password to change permission settings. When an owner password is set, you can configure a set of permissions. For example, you can configure an owner password and the “printing” permission when saving a document to make sure that users who don’t know that owner password can only print the document, but not modify it.


The PDF specification defines the permissions shown below:

- Printing — print the document.

- High-quality printing — print the document in high fidelity.

- Copying — copy content from the document.

- Document changes — modify the document contents except for document attributes.

- Document assembly — insert, delete, and rotate pages.

- Commenting — create or modify document annotations, including form field entries.

- Form Field Entry — modify form field entries even if you can't edit document annotations.


To access the corresponding permissions, refer to following methods in the CPDFDocument class.

public CPDFDocumentPermissionInfo getPermissionsInfo() {
public class CPDFDocumentPermissionInfo {
   /****** Printing the document ******/
   private boolean allowsPrinting;
   /****** The document allows printing in high fidelity ******/
   private boolean allowsHighQualityPrinting;
   /****** Extract content (text, images, etc.) ******/
   private boolean allowsCopying;
   /****** Modify the document contents except for page management (document attributes) ******/
   private boolean allowsDocumentChanges;
   /****** Page management: insert, delete, and rotate pages ******/
   private boolean allowsDocumentAssembly;
   /****** Create or modify annotations, including form field entries ******/
   private boolean allowsCommenting;
   /****** Modify form field entries, even if allowsCommenting is T_FALSE ******/
   private boolean allowsFormFieldEntry;




ComPDFKit’s CPDFDocument API can generate a password-protected document. You can use CPDFDocument to create a new password-protected PDF document on disk based on a current document. The user password prevents users from viewing the PDF. If you specify it, you also need to specify an owner password.


If the encryption level is set to CPDFDocumentEncryptionLevelNoEncryptAlgo, it is equivalent to encrypting with the RC4 algorithm; if the document encryption level obtained is CPDFDocumentEncryptAlgo, it means that the document is not encrypted.


Support for 128 and 256 bit AES (Advanced Encryption Standard) encryption.


  enum PDFDocumentEncryptAlgo {


For example, you can set the encrypt level to AES 256 and configure an 256-bit owner password and the “printing” permission when saving a document to make sure that users who don’t know that owner password can only print the document, but not modify it.


// Open document from file path
  CPDFDocument document = new CPDFDocument(context);;
  //set user password
  //set encrypt algorithm type
  //set owner password
  //set permission info
  CPDFDocumentPermissionInfo info = document.getPermissionsInfo();
  //save document;




ComPDFKit fully supports the reading of secured and encrypted PDF documents.


- To check whether a document requires a password:


// Open document from file path
CPDFDocument document = new CPDFDocument(context);
CPDFDocument.PDFDocumentError error =, passwod);
if (error == CPDFDocument.PDFDocumentError.PDFDocumentErrorPassword) {
   // Password required


- To read a PDF document with password protection, use function CPDFDocument.isEncrypted(). If the password is correct, this method returns true. Once unlocked, you cannot use this function to relock the document.


- To remove PDF security, call the method:

// Open document from file path
CPDFDocument document = new CPDFDocument(context);, passwod);
//remove password
try {;
} catch (CPDFDocumentException e) {