Sample code for 30+ languages & platforms
DataFlex

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 DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoPdf
    Variant vLjd
    Handle hoLjd
    String sPdfVersion
    String sFilter
    Integer iKeyLength
    Integer V
    Integer R
    Integer P
    String sPrintLowResolution
    String sPrintHighResolution
    String sModifyOther
    String sModifyAnnotations
    String sModifyForms
    String sFillInForms
    String sAssembleDoc
    String sExtractAnyPurpose
    String sExtractAccessibility
    String sMethod
    String sTemp1

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatPdf)) To hoPdf
    If (Not(IsComObjectCreated(hoPdf))) Begin
        Send CreateComObject of hoPdf
    End

    // Load a PDF.
    Get ComLoadFile Of hoPdf "c:/someDir/sample.pdf" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoPdf To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Get information about the PDF that was collected in the call to LoadFile.
    Get Create (RefClass(cComChilkatJsonObject)) To hoLjd
    If (Not(IsComObjectCreated(hoLjd))) Begin
        Send CreateComObject of hoLjd
    End
    Get pvComObject of hoLjd to vLjd
    Send ComGetLastJsonData To hoPdf vLjd

    Set ComEmitCompact Of hoLjd To False

    Get ComEmit Of hoLjd To sTemp1
    Showln sTemp1

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

    Get ComStringOf Of hoLjd "pdfVersion" To sPdfVersion
    Get ComStringOf Of hoLjd "encrypt.filter" To sFilter
    Get ComIntOf Of hoLjd "encrypt.keyLength" To iKeyLength
    Get ComIntOf Of hoLjd "encrypt.V" To V
    Get ComIntOf Of hoLjd "encrypt.R" To R
    Get ComIntOf Of hoLjd "encrypt.P" To P
    Get ComStringOf Of hoLjd "encrypt.perm.printLowResolution" To sPrintLowResolution
    Get ComStringOf Of hoLjd "encrypt.perm.printHighResolution" To sPrintHighResolution
    Get ComStringOf Of hoLjd "encrypt.perm.modifyOther" To sModifyOther
    Get ComStringOf Of hoLjd "encrypt.perm.modifyAnnotations" To sModifyAnnotations
    Get ComStringOf Of hoLjd "encrypt.perm.modifyForms" To sModifyForms
    Get ComStringOf Of hoLjd "encrypt.perm.fillInForms" To sFillInForms
    Get ComStringOf Of hoLjd "encrypt.perm.assembleDoc" To sAssembleDoc
    Get ComStringOf Of hoLjd "encrypt.perm.extractAnyPurpose" To sExtractAnyPurpose
    Get ComStringOf Of hoLjd "encrypt.perm.extractAccessibility" To sExtractAccessibility
    Get ComStringOf Of hoLjd "encrypt.method" To sMethod


End_Procedure