README.md

# IDMLx

![Logo](./logo.jpeg)

IDMLx is an Elixir library for parsing IDML/IDMS files from Adobe InDesign into Elixir structs. These structs can be filled with data and exported to various formats such as KonvaJS canvas, PNG, HTML, or PDFs.

## Features

- Parse IDML/IDMS files into Elixir structs
- Manipulate and fill structs with data
- Export data to various formats including KonvaJS canvas, PNG, HTML, and PDFs

## Installation

Add `idmlx` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:idmlx, "~> 0.1.0"}
  ]
end
```

## Usage

### Reading IDMS files

```elixir
# Read an IDMS file
spread = Idmlx.read_idms("path/to/file.idms")

# Extract text frames
text_frames = Idmlx.text_frames(spread)

# Extract images
images = Idmlx.images(spread)
```

### Exporting to KonvaJS

```elixir
# Export to KonvaJS format
konva_json = Idmlx.export_to_konva(spread)

# Export with custom text assignments
konva_json = Idmlx.export_to_konva(spread, %{
  "TextFrame1" => "Custom text content"
})

# Export in wireframe mode
konva_json = Idmlx.export_to_konva(spread, %{}, mode: :wireframes)
```

### Updating IDMS files

```elixir
# Update an IDMS file with modified spread
Idmlx.update_idms(spread, "path/to/original.idms", "path/to/updated.idms")
```

## Documentation

Full documentation can be found at [https://hexdocs.pm/idmlx](https://hexdocs.pm/idmlx).

## License

This project is licensed under the MIT License - see the LICENSE file for details.