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


How to create a password-protected document:

// Open document from file path
CPDFDocument document = new CPDFDocument(context);;
//set user password
//set owner password
//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) {