# `Kreuzberg.DjotContent`
[🔗](https://github.com/kreuzberg-dev/kreuzberg/blob/main/lib/kreuzberg/djot.ex#L281)

Comprehensive Djot document structure with semantic preservation.

Matches the Rust `DjotContent` struct.

## Fields

  * `:plain_text` - Plain text representation for backwards compatibility
  * `:blocks` - Structured block-level content
  * `:metadata` - Metadata from YAML frontmatter
  * `:tables` - Extracted tables as structured data
  * `:images` - Extracted images with metadata
  * `:links` - Extracted links with URLs
  * `:footnotes` - Footnote definitions
  * `:attributes` - Attributes mapped by element identifier

# `t`

```elixir
@type t() :: %Kreuzberg.DjotContent{
  attributes: [{String.t(), Kreuzberg.DjotAttributes.t()}],
  blocks: [Kreuzberg.DjotFormattedBlock.t()],
  footnotes: [Kreuzberg.DjotFootnote.t()],
  images: [Kreuzberg.DjotImage.t()],
  links: [Kreuzberg.DjotLink.t()],
  metadata: Kreuzberg.Metadata.t(),
  plain_text: String.t(),
  tables: [Kreuzberg.Table.t()]
}
```

# `from_map`

```elixir
@spec from_map(map()) :: t()
```

# `to_map`

```elixir
@spec to_map(t()) :: map()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
