Repository navigation
The Office three, and the one shortfall they share - #106
Merged
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
excel-to-pdfandpowerpoint-to-pdfjoinword-to-pdf, all three throughgo-ooxml/ooxmlv0.2.0 overgo-ooxml/opcv0.1.0.⛔ 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:
word-to-pdfexcel-to-pdfpowerpoint-to-pdfThey 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-pdfnames CBR: a claim whoseshortfall 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:
arrives as an external relationship whose Target is the URL — a reader
calling
opc.Resolvethere loses every link;p:sldIdLst, not the filenames, andDrawingML carries its formatting as attributes where Word uses child
elements — so a shared implementation finds no formatting at all;
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
ParseWorkbookandParsePresentationrather than therepository, so each goes on being checked against the reader it is about.
Measured 2026-10-11 against BentoPDF
3a5f146(v2.8.8, 114 tools),pdfopsand
opsata376bb2(= v0.13.0),ooxmlv0.2.0,opcv0.1.0,odf3d1deee(= v0.7.0),convert45fbb5d,render3bb5dcf,app1feda5d,rtf6bc4897,markdowneafebfd,data128b6c7.🤖 Generated with Claude Code