# oxdoc-core

Reusable OOXML extraction library for `oxdoc`.

`oxdoc-core` reads Office Open XML packages such as `.docx`, `.xlsx`, and `.pptx` without rendering pages, slides, or worksheets. It is built for tooling that needs predictable extraction output, typed failures, and recoverable parser warnings.

## Capabilities

- Extract DOCX plain text from the supported document parts.
- Extract PPTX plain text from slide text boxes and speaker notes.
- Stream XLSX worksheet data to a caller-owned CSV writer.
- Read core and app metadata from OOXML packages.
- Read factual audit signals for governance and intake workflows.
- Use path helpers or `Read + Seek` entry points for embedding.
- Return stable error codes through `OxdocError`.
- Return recoverable parser/data warnings alongside successful output.

## Example

```rust
use oxdoc_core::{extract_xlsx_csv, XlsxCsvOptions};

fn main() -> oxdoc_core::Result<()> {
    let mut csv = Vec::new();

    extract_xlsx_csv("data.xlsx", XlsxCsvOptions::default(), &mut csv)?;

    println!("{}", String::from_utf8_lossy(&csv));
    Ok(())
}
```

## Status

The crate follows semantic versioning from 1.0 onward. Public API changes that break callers should ship in a new major version.

## License

MIT
