Skip to content

feat(office-reader,core): read OpenDocument presentations (.odp) (0.9.0) - #308

Merged
russoedu merged 2 commits into
mainfrom
feat/odf-presentation
Oct 17, 2026
Merged

russoedu merged 2 commits into
mainfrom
feat/odf-presentation

Conversation

@russoedu

Copy link
Copy Markdown
Collaborator

Part of #294 (ODF parsers): presentations, after spreadsheets (#306) and text (#307). That completes the OpenDocument trio.

  • readOdp in @opencraw/office-reader (/odp entry): the same Deck as readPptx. Text boxes and shapes with their positions converted to points (cm, mm, in, pt, pc, px), reading order, title and placeholder (title, subTitle, body), tables as sheets with merged cells as ranges, charts from the data table they keep (type, title once, series, categories, missing points), speaker notes, hidden slides (by the page style), the slide size from the page layout. Footers, dates, slide numbers and comments are left out.
  • Core reads an .odp (by extension, content type or the file's own mimetype) through the same deck conversion as a .pptx, so table and region extracts, Studio's deck canvas and every output work on it unchanged.
  • ODT and ODP share one table reader (opendocument-table), extracted from the ODT mapper (its tests unchanged).
  • The Studio file picker accepts .odp, and the "not supported" list loses it. Extension 0.9.0.

Checked: typecheck, lint and unit tests for office-reader, core, studio and studio-ui. The .odp fixture is generated from incentivi.pptx (a title, a merged-header table, ten text boxes, a bar chart with a missing point, notes, a hidden slide, footer and slide-number placeholders); a test asserts readOdp and readPptx give an equal Deck, in typed and text mode.

Not here: charts other than the data table they keep (axis scales, colours), SmartArt-like objects, and files exported by LibreOffice itself were not available to test with: the fixture is built to its layout, not exported from it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap

russoedu and others added 2 commits October 17, 2026 00:55
… decks (0.9.0)

readOdp gives the same Deck readPptx does: text boxes and shapes in points, title, tables with
merged cells, charts from their data table, notes and the hidden flag. Core reads an .odp
through the same deck conversion as a .pptx. ODT and ODP share one table reader.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap
…h series

A notes page from LibreOffice may not mark the notes frame: any frame with text on it is
notes, except the footer, date and number furniture. The generated chart fixture now describes
its series and categories the way a real chart does.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap
@russoedu
russoedu merged commit 3591495 into main Oct 17, 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