PdfEx.Filter.Codec behaviour (pdf_ex v0.1.0)

Copy Markdown View Source

Behaviour for a stream filter codec (e.g. Flate, LZW, ASCII85).

PdfEx.Filter dispatches a stream's /Filter chain to the codec registered for each filter name. Built-in codecs are listed in PdfEx.Filter; additional codecs are registered without editing the dispatcher:

config :pdf_ex, filter_codecs: [MyApp.LZWDecode]

A codec declares the /Filter names it handles via names/0 and decodes one link of the chain via decode/2. decode/2 receives the already-normalized /DecodeParms for this filter (nil when absent or indirect) and must never raise on malformed input — return {:error, reason} instead.

Summary

Callbacks

Decodes one filter link. Returns {:ok, bytes} or {:error, reason}; never raises.

The /Filter name atoms this codec handles (e.g. [:FlateDecode]).

Callbacks

decode(binary, arg2)

@callback decode(binary(), map() | nil) :: {:ok, binary()} | {:error, term()}

Decodes one filter link. Returns {:ok, bytes} or {:error, reason}; never raises.

names()

@callback names() :: [atom()]

The /Filter name atoms this codec handles (e.g. [:FlateDecode]).