# Module Pdfcrypt

    module Pdfcrypt: sig .. end

Decrypting PDF files

Note that encryption depends on fixed object and generation numbers: don't change these (for example by calling `Pdf.remove_unreferenced` on the PDF) before writing.

Encryption support is part of the `Pdfwrite` module, since files are encrypted when they're written.

    val crypt_debug : bool Stdlib.ref

If this is set, various debug is produced on standard output. On startup, is set to false

    type permission =

`|` | `NoEdit`
`|` | `NoPrint`
`|` | `NoCopy`
`|` | `NoAnnot`
`|` | `NoForms`
`|` | `NoExtract`
`|` | `NoAssemble`
`|` | `NoHqPrint`

    val decrypt_pdf : ?keyfromowner:string ->
           string -> Pdf.t -> Pdf.t option * permission list

Decrypt a PDF document, given the user password, returning the permissions under which the document was encrypted.

    val decrypt_pdf_owner : string -> Pdf.t -> Pdf.t option

Decrypt a PDF document, given the owner password.

    val is_encrypted : Pdf.t -> bool

Is a PDF encrypted?

    val recrypt_pdf : ?renumber:bool -> Pdf.t -> string -> Pdf.t

`recrypt_pdf decrypted_and_modified` re-encrypts a PDF document which was decrypted using the user password and owner password from the original encrypted file and the same permissions and encryption parameters.

    val encrypt_pdf_40bit : string -> string -> permission list -> Pdf.t -> Pdf.t

Encrypt a PDF documnent, using 40 bit encryption, with given user and owner passwords.

    val encrypt_pdf_128bit : string -> string -> permission list -> Pdf.t -> Pdf.t

Ditto for 128 bit encryption

    val encrypt_pdf_AES : bool -> string -> string -> permission list -> Pdf.t -> Pdf.t

Encrypt a file using the AESV2 Crypt filter

    val encrypt_pdf_AES256 : bool -> string -> string -> permission list -> Pdf.t -> Pdf.t

Encrypt a file using the AESV3 Crypt filter

    val encrypt_pdf_AES256ISO : bool -> string -> string -> permission list -> Pdf.t -> Pdf.t

Encrypt a file using the AESV4 (ISO) Crypt filter