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