Sample code for 30+ languages & platforms
AutoIt

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

AutoIt
Local $bSuccess = False

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

$oPdf = ObjCreate("Chilkat.Pdf")

; Load a PDF.
$bSuccess = $oPdf.LoadFile("c:/someDir/sample.pdf")
If ($bSuccess = False) Then
    ConsoleWrite($oPdf.LastErrorText & @CRLF)
    Exit
EndIf

; Get information about the PDF that was collected in the call to LoadFile.
$oLjd = ObjCreate("Chilkat.JsonObject")
$oPdf.GetLastJsonData $oLjd

$oLjd.EmitCompact = False

ConsoleWrite($oLjd.Emit() & @CRLF)

; 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

Local $sPdfVersion = $oLjd.StringOf("pdfVersion")
Local $sFilter = $oLjd.StringOf("encrypt.filter")
Local $iKeyLength = $oLjd.IntOf("encrypt.keyLength")
Local $iV = $oLjd.IntOf("encrypt.V")
Local $iR = $oLjd.IntOf("encrypt.R")
Local $iP = $oLjd.IntOf("encrypt.P")
Local $sPrintLowResolution = $oLjd.StringOf("encrypt.perm.printLowResolution")
Local $sPrintHighResolution = $oLjd.StringOf("encrypt.perm.printHighResolution")
Local $sModifyOther = $oLjd.StringOf("encrypt.perm.modifyOther")
Local $sModifyAnnotations = $oLjd.StringOf("encrypt.perm.modifyAnnotations")
Local $sModifyForms = $oLjd.StringOf("encrypt.perm.modifyForms")
Local $sFillInForms = $oLjd.StringOf("encrypt.perm.fillInForms")
Local $sAssembleDoc = $oLjd.StringOf("encrypt.perm.assembleDoc")
Local $sExtractAnyPurpose = $oLjd.StringOf("encrypt.perm.extractAnyPurpose")
Local $sExtractAccessibility = $oLjd.StringOf("encrypt.perm.extractAccessibility")
Local $sMethod = $oLjd.StringOf("encrypt.method")