# Module Pdfwrite

    module Pdfwrite: sig .. end

Writing PDF Files

    val write_debug : bool Stdlib.ref

When set to `true`, various pieces of information are printed to standard output when a PDF is written. On library startup, is `false`.

### Encryption methods

    type encryption_method =

`|` | `PDF40bit`
`|` | `PDF128bit`
`|` | `AES128bit of `bool``
`|` | `AES256bit of `bool``
`|` | `AES256bitISO of `bool``
`|` | `AlreadyEncrypted`

Encryption methods. The boolean for `AES128bit`, `AES256bit` and `AES256BitISO` indicates encryption of metadata or lack thereof. AlreadyEncrypted is used as a flag to prevent garbage collection internally by `pdf_to_file_recrypting`.

    type encryption = {

`` | `encryption_method : `encryption_method`;`
`` | `owner_password : `string`;`
`` | `user_password : `string`;`
`` | `permissions : `Pdfcrypt.permission list`;`

`}`

The type of an encryption with certain user permissions.

### Writing to outputs, channels and files.

    val pdf_to_output : ?preserve_objstm:bool ->
           ?generate_objstm:bool ->
           ?compress_objstm:bool ->
           ?recrypt:string option ->
           encryption option -> bool -> Pdf.t -> Pdfio.output -> unit

Write a PDF document to an `Pdfio.output`, optionally encrypting. If `?preserve_objstm` is set (default is false), object streams which were in the original file will be preserved. If `?create_objstm` is set (default is false), additional new object streams will be created. To re-encrypt the file using its existing encryption, provide the user or owner password in the `?recrypt` argument.

    val pdf_to_channel : ?preserve_objstm:bool ->
           ?generate_objstm:bool ->
           ?compress_objstm:bool ->
           ?recrypt:string option ->
           encryption option -> bool -> Pdf.t -> Stdlib.out_channel -> unit

As `pdf_to_output` but to an OCaml channel. If the second boolean is set, build a new /ID (don't set this for encrypted documents).

    val pdf_to_file_options : ?preserve_objstm:bool ->
           ?generate_objstm:bool ->
           ?compress_objstm:bool ->
           ?recrypt:string option ->
           encryption option -> bool -> Pdf.t -> string -> unit

As `pdf_to_channel` but to a named file.

    val pdf_to_file : Pdf.t -> string -> unit

Simple write to given file name. Equivalent to `pdf_to_file_options false None true`

### String of a PDF object

    val string_of_pdf : Pdf.pdfobject -> string

Calculate a string of a pdf object.

    val string_of_pdf_including_data : Pdf.pdfobject -> string

Calculate a string of a pdf object, but include binary data too.

    val debug_whole_pdf : Pdf.t -> unit

For debug, print out the PDFs objects to standard output.

    val make_hex_pdf_string : string -> string

Convert a PDF string to Hex PDF string representation