A conversion failure.
An error is returned (or raised, from the bang variants) only when no meaningful Markdown could come out of the input. Recoverable producer quirks never surface here — anydoc recovers or skips them and conversion continues.
The :code field is the stable, machine-readable name a caller branches
on; :message carries the human-readable detail. The codes mirror the
upstream ConvertError::code() values, snake-cased:
| Code | Meaning |
|---|---|
:unsupported | Unknown format, or one that cannot be converted (an image-only PDF) |
:malformed | Structurally unusable: no meaningful content could be extracted |
:encrypted | Encrypted or password-protected |
:resource_limit | Crossed a fixed safety limit (decompression, nesting, node count) |
:missing_part | A part required for any meaningful output is absent |
:io | The file could not be read, from Anydoc.to_markdown/1 only |
:part names the package part or stream at fault when the format
identifies one (:malformed and :missing_part errors); :limit names
the safety limit crossed (:resource_limit errors). Both are nil
otherwise.