Sample code for 30+ languages & platforms
Java Requires Chilkat v11.0.0+

PDF Get Encryption and Permissions Information

See more PDF Signatures Examples

Determine if a PDF is encrypted, and the associated user permissions.

Note: Some PDFs are encrypted but not password-protected. In such cases, encryption is used primarily for preventing unauthorized modifications to the document, but it doesn't restrict access. Therefore, you can open and read the document without a password.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.Pdf;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Pdf pdf = new Pdf();

        // Load a PDF.
        try {
            pdf.loadFile("c:/someDir/sample.pdf");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Get information about the PDF that was collected in the call to LoadFile.
        JsonObject ljd = new JsonObject();
        pdf.getLastJsonData(ljd);

        ljd.setEmitCompact(false);

        System.out.println(ljd.emit());

        // Sample output:

        // {
        //   "pdfVersion": "1.6",
        //   "encrypt": {
        //     "filter": "/Standard",
        //     "keyLength": 128,
        //     "V": 4,
        //     "R": 4,
        //     "P": -1340,
        //     "perm": {
        //       "printLowResolution": "allowed",
        //       "printHighResolution": "allowed",
        //       "modifyOther": "not allowed",
        //       "modifyAnnotations": "allowed",
        //       "modifyForms": "not allowed",
        //       "fillInForms": "allowed",
        //       "assembleDoc": "allowed",
        //       "extractAnyPurpose": "not allowed",
        //       "extractAccessibility": "not allowed"
        //     },
        //     "method": "AESV2"
        //   }
        // }

        // Use this online tool to generate parsing code from sample JSON:
        // Generate Parsing Code from JSON

        String pdfVersion = ljd.stringOf("pdfVersion");
        String Filter = ljd.stringOf("encrypt.filter");
        int KeyLength = ljd.intOf("encrypt.keyLength");
        int V = ljd.intOf("encrypt.V");
        int R = ljd.intOf("encrypt.R");
        int P = ljd.intOf("encrypt.P");
        String PrintLowResolution = ljd.stringOf("encrypt.perm.printLowResolution");
        String PrintHighResolution = ljd.stringOf("encrypt.perm.printHighResolution");
        String ModifyOther = ljd.stringOf("encrypt.perm.modifyOther");
        String ModifyAnnotations = ljd.stringOf("encrypt.perm.modifyAnnotations");
        String ModifyForms = ljd.stringOf("encrypt.perm.modifyForms");
        String FillInForms = ljd.stringOf("encrypt.perm.fillInForms");
        String AssembleDoc = ljd.stringOf("encrypt.perm.assembleDoc");
        String ExtractAnyPurpose = ljd.stringOf("encrypt.perm.extractAnyPurpose");
        String ExtractAccessibility = ljd.stringOf("encrypt.perm.extractAccessibility");
        String Method = ljd.stringOf("encrypt.method");
    }
}