# python-djvulibre 0.8.4 documentation

## Messages

class `djvu.decode.``Message`

  An abstract base for all messages.

  `context`

    Returns: | the concerned context.
    Return type: | `Context`.

  `document`

    Returns: | the concerned document or `None`.
    Type: | `Document`

  `page_job`

    Returns: | the concerned page job or `None`.
    Return type: | `PageJob`

  `job`

    Returns: | the concerned job or `None`.
    Return type: | `Job`

  Inheritance diagram:

class `djvu.decode.``ErrorMessage`

  An `ErrorMessage` is generated whenever the decoder or the DDJVU API encounters an error condition. All errors are reported as error messages because they can occur asynchronously.

  `message`

    Returns: | the actual error message, as text.

  `location`

    Returns: | a (function, filename, line_no) tuple indicating where the error was detected.

class `djvu.decode.``InfoMessage`

  A `InfoMessage` provides informational text indicating the progress of the decoding process. This might be displayed in the browser status bar.

  `message`

    Returns: | the actual error message, as text.

class `djvu.decode.``NewStreamMessage`

  A `NewStreamMessage` is generated whenever the decoder needs to access raw DjVu data. The caller must then provide the requested data using the `stream` file-like object.

  In the case of indirect documents, a single decoder might simultaneously request several streams of data.

  `name`

    The first `NewStreamMessage` message always has `name` set to `None`. It indicates that the decoder needs to access the data in the main DjVu file.

    Further `NewStreamMessage` messages are generated to access the auxiliary files of indirect or indexed DjVu documents. `name` then provides the base name of the auxiliary file.

  `uri`

    Returns: | the requested URI.

    URI is set according to the uri argument provided to function `Context.new_document()`. The first `NewStreamMessage` message always contain the URI passed to `Context.new_document()`. Subsequent `NewStreamMessage` messages contain the URI of the auxiliary files for indirect or indexed DjVu documents.

  `stream`

    Returns: | a data stream.

    class `djvu.decode.``Stream`
      `close`()

        Indicate that no more data will be provided on the particular stream.

      `abort`()

        Indicate that no more data will be provided on the particular stream, because the user has interrupted the data transfer (for instance by pressing the stop button of a browser) and that the decoding threads should be stopped as soon as feasible.

      `flush`()

        Do nothing.

        (This method is provided solely to implement Python’s file-like interface.)

      `read`([size])

        Raises: | exceptions.IOError – always.

        (This method is provided solely to implement Python’s file-like interface.)

      `write`(data)

        Provide raw data to the DjVu decoder.

        This method should be called as soon as the data is available, for instance when receiving DjVu data from a network connection.

class `djvu.decode.``DocInfoMessage`

  A `DocInfoMessage` indicates that basic information about the document has been obtained and decoded. Not much can be done before this happens.

  Check the document’s `decoding_status` to determine whether the operation was successful.

class `djvu.decode.``PageInfoMessage`

  The page decoding process generates a `PageInfoMessage`:

  - when basic page information is available and before any `RelayoutMessage` or `RedisplayMessage`,
  - when the page decoding thread terminates.

  You can distinguish both cases using the page job’s `status`.

  A `PageInfoMessage` may be also generated as a consequence of reading `Page.get_info()` or `Page.dump`.

class `djvu.decode.``ChunkMessage`

  A `ChunkMessage` indicates that an additional chunk of DjVu data has been decoded.

class `djvu.decode.``RelayoutMessage`

  A `RelayoutMessage` is generated when a DjVu viewer should recompute the layout of the page viewer because the page size and resolution information has been updated.

class `djvu.decode.``RedisplayMessage`

  A `RedisplayMessage` is generated when a DjVu viewer should call `PageJob.render()` and redisplay the page. This happens, for instance, when newly decoded DjVu data provides a better image.

class `djvu.decode.``ThumbnailMessage`

  A `ThumbnailMessage` is sent when additional thumbnails are available.

  `thumbnail`

    Return type: | `Thumbnail`
    Raises: | NotAvailable – if the `Document` has been garbage-collected.

class `djvu.decode.``ProgressMessage`

  A `ProgressMessage` is generated to indicate progress towards the completion of a print or save job.

  `percent`

    Returns: | the percent of the job done.

  `status`

    Returns: | a `JobException` subclass indicating the current job status.