feat(ofd): convert fixed-layout documents to Markdown
LI
5d ago+1098+1098+0123456789012345678901234567890123456789-38-38-01234567890123456789
Summary
- Recognize OFD packages and
.ofdpaths across the Rust, Node.js, Python, and Wasm APIs. - Parse document bodies, pages, templates, and Unicode
TextCoderuns using anydoc's bounded ZIP/XML readers, without depending onofdrw. - Preserve outline and large-font headings, bold/italic text, printed lists, bordered table grids, and URI links in the shared document model and Markdown output.
- Report encrypted packages and image-only pages explicitly; document the fixed-layout inference limits.
Validation
cargo fmt --all --checkcargo clippy --workspace --all-targets --all-features --locked --offline -- -D warningscargo test --locked --offlinenpm ci && npm run build && npm testinnode/(22 tests; generated declarations checked)- Built the Python 3.13 wheel with maturin and ran
python -m unittest discover -s python/tests(13 tests) cargo clippy -p anydoc-wasm --target wasm32-unknown-unknown --locked --offline -- -D warningswasm-pack build wasm --release --target web --scope firecrawlandnode --test wasm/test.mjs(8 tests)
Scope notes
OFD is fixed-layout: larger-font headings and complete bordered table grids use conservative layout inference. Borderless/irregular tables, images, vector drawings, non-link annotations, and OCR are not converted. Image-only pages return NeedsOcr rather than incomplete Markdown.
Closes #208