Skip to content

The Office three, and the one shortfall they share - #106

Merged
tannevaled merged 1 commit into
mainfrom
the-office-three
Oct 11, 2026
Merged

tannevaled merged 1 commit into
mainfrom
the-office-three

Conversation

@tannevaled

Copy link
Copy Markdown
Contributor

excel-to-pdf and powerpoint-to-pdf join word-to-pdf, all three through
go-ooxml/ooxml v0.2.0 over go-ooxml/opc v0.1.0.

covered       79
not covered   35
parity       69.3% (79/114), every claim verified

⛔ One shortfall, shared by all three

Each of BentoPDF's three Office tools takes the pre-2007 binary format as
well, and nothing in the fleet reads one:

tool missing present
word-to-pdf DOC DOCX, ODT, RTF
excel-to-pdf XLS XLSX, ODS, CSV
powerpoint-to-pdf PPT PPTX, ODP

They are OLE compound files — a different container entirely from OPC, with
its own FAT and its own record streams — so this is a gap of one missing
library
, not of three missing readers. The three shortfalls close together or
not at all, which is worth knowing before anybody starts.

Written down in the table the way cbz-to-pdf names CBR: a claim whose
shortfall is written down can be closed by whoever reads it.

What the three readers found worth writing down

Each format turned out to need a rule that would be a silent defect if guessed:

  • ⛔ Word: a heading is a paragraph wearing a style, and a hyperlink
    arrives as an external relationship whose Target is the URL — a reader
    calling opc.Resolve there loses every link;
  • ⛔ PowerPoint: the slide order is p:sldIdLst, not the filenames, and
    DrawingML carries its formatting as attributes where Word uses child
    elements — so a shared implementation finds no formatting at all;
  • ⛔ Excel: with t="s" the <v> is an index into the shared strings,
    and a cell is placed by its reference — appending in order shifts every
    column after a gap.

The claims name ParseWorkbook and ParsePresentation rather than the
repository, so each goes on being checked against the reader it is about.

Measured 2026-10-11 against BentoPDF 3a5f146 (v2.8.8, 114 tools), pdfops
and ops at a376bb2 (= v0.13.0), ooxml v0.2.0, opc v0.1.0, odf
3d1deee (= v0.7.0), convert 45fbb5d, render 3bb5dcf, app
1feda5d, rtf 6bc4897, markdown eafebfd, data 128b6c7.

🤖 Generated with Claude Code

excel-to-pdf and powerpoint-to-pdf join word-to-pdf, all three through
go-ooxml/ooxml v0.2.0 over go-ooxml/opc v0.1.0.

⛔ EACH OF THE THREE TAKES THE PRE-2007 BINARY FORMAT AS WELL, and nothing in
the fleet reads one:

    word-to-pdf        DOC  (and DOCX ✓, ODT ✓, RTF ✓)
    excel-to-pdf       XLS  (and XLSX ✓, ODS ✓, CSV ✓)
    powerpoint-to-pdf  PPT  (and PPTX ✓, ODP ✓)

They are OLE compound files — a different container entirely from OPC, with its
own FAT and its own record streams — so this is a gap of ONE missing library and
not of three missing readers. That is worth knowing before anybody starts: the
three shortfalls close together or not at all.

Written down in the table the way cbz-to-pdf names CBR, because a claim whose
shortfall is written down can be closed by whoever reads it.

The claims name ParseWorkbook and ParsePresentation rather than the repository,
so each goes on being checked against the reader it is about.

Pasted from the tool's own output:

    covered       79
    not covered   35
    parity       69.3% (79/114), every claim verified

Measured 2026-10-11 against BentoPDF 3a5f146 (v2.8.8, 114 tools), pdfops and
ops at a376bb2 (= v0.13.0), ooxml at v0.2.0, opc at v0.1.0, odf 3d1deee
(= v0.7.0), convert 45fbb5d, render 3bb5dcf, app 1feda5d, rtf 6bc4897,
markdown eafebfd, data 128b6c7.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@tannevaled
tannevaled merged commit 4342478 into main Oct 11, 2026
9 checks passed
@tannevaled
tannevaled deleted the the-office-three branch October 11, 2026 10:28
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