Skip to content

feat(office-reader,core): read OpenDocument text documents (.odt) (0.8.0) - #307

Merged
russoedu merged 1 commit into
mainfrom
feat/odf-text
Oct 16, 2026
Merged

russoedu merged 1 commit into
mainfrom
feat/odf-text

Conversation

@russoedu

Copy link
Copy Markdown
Collaborator

Part of #294 (ODF parsers): text documents, after spreadsheets (#306).

  • readOdt in @opencraw/office-reader (/odt entry): the same WordDocument as readDocx (headings from text:h and the Title / Heading styles, list levels with numbered or bullet from the list styles, links, tables with merged cells as ranges, a table in a cell as a block of its own, headers and footers from the master page, footnotes and endnotes as notes, the title). Tracked deletions, comments and the templates of indexes are not text; a paragraph in a text box follows the paragraph that holds the box.
  • Core reads an .odt (by extension, content type or the file's own mimetype) through the same HTML conversion as a .docx, so recipes (table, css, selectors), Studio and every output work on it unchanged.
  • The Studio file picker accepts .odt. Extension 0.8.0.

Checked: typecheck, lint and unit tests for office-reader, core, studio and studio-ui. The .odt fixture is generated from incentivi.docx (headings, nested numbered and bullet lists, links, merged tables, header, footer, note, title); tests assert readOdt and readDocx give the same body, headers, footers, notes and title, and that both give the same HTML in core.

Not here: .odp (presentations, same shape as the pptx reader, next). The fixture is built to LibreOffice's layout, not exported from it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap

…e Word documents (0.8.0)

readOdt gives the same WordDocument readDocx does: headings, list levels, links, tables with
merged cells, headers, footers, notes and the title. Core reads an .odt through the same
HTML conversion as a .docx, so recipes and Studio work on it unchanged.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap
@russoedu
russoedu merged commit 0fae3b4 into main Oct 16, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant