Rendering comparison · WolfSDK
Wolf, BetterOffice, office2pdf and LibreOffice against Microsoft Office's own PDFs
Agent sandboxes turn Office files into PDFs and page images all day, usually with headless LibreOffice. Two open-source Rust projects now offer another route. We rendered the same files with all four tools and compared every page with the PDF Microsoft Office exports.
Published
The tools
- Wolf is our renderer, the one inside Wolf Runtime. It writes PDF for DOCX, PPTX and XLSX.
- BetterOffice is an Apache-2.0 office suite with DOCX, PPTX and XLSX editors, real-time collaboration and Rust engines. It renders pages and slides to images and has no Office-to-PDF export, so we wrote a small adapter on its public Rust crates.1
- office2pdf is an Apache-2.0 Rust library and command-line tool that converts DOCX, PPTX and XLSX to PDF. We ran its prebuilt release with default options.
- LibreOffice headless is the usual tool in sandboxes today.
How we scored
For every file we have a PDF exported by Microsoft Word, PowerPoint or Excel. Each tool rendered the file, and each page was compared with Office's page as a grayscale structural similarity (SSIM) distance at 150 dpi: 0 is identical, 1 is unrelated. A page Office has and a tool omits counts as distance 1, and so does every page of a failed render. We also count the files where the tool's page count equals Office's.2
We ran two sets of files. The held-out corpus is public documents frozen before any tool's output was viewed; we do not tune Wolf against it. The development corpora are the files we build Wolf against every day, so Wolf's lead there is larger than on files it has not seen. We report both.3
Held-out corpus
Wolf had the lowest distance in all three formats and no failed renders. BetterOffice was second on slides, close behind Wolf and ahead of LibreOffice. On documents and spreadsheets, LibreOffice was second.
| Corpus | Files | Wolf 0.2.22 | BetterOffice 0.5.1 | office2pdf 0.10.0 | LibreOffice 26.8 |
|---|---|---|---|---|---|
| DOCX | 42 | distance 0.088, 0 failed, 39/42 page counts match | distance 0.351, 7 failed, 29/42 page counts match | distance 0.321, 1 failed, 25/42 page counts match | distance 0.203, 0 failed, 36/42 page counts match |
| PPTX | 51 | distance 0.082, 0 failed, 51/51 page counts match | distance 0.093, 0 failed, 51/51 page counts match | distance 0.250, 5 failed, 46/51 page counts match | distance 0.120, 0 failed, 51/51 page counts match |
| XLSX | 38 | distance 0.143, 0 failed, 32/38 page counts match | distance 0.808, 5 failed, 4/38 page counts match | distance 0.403, 2 failed, 11/38 page counts match | distance 0.335, 0 failed, 11/38 page counts match |
Development corpora
Curated files exercise specific features; collected files are public documents gathered from government, research and open-source sources.
| Corpus | Files | Wolf 0.2.22 | BetterOffice 0.5.1 | office2pdf 0.10.0 | LibreOffice 26.8 |
|---|---|---|---|---|---|
| DOCX, curated | 25 | distance 0.016, 0 failed, 25/25 page counts match | distance 0.099, 0 failed, 25/25 page counts match | distance 0.173, 0 failed, 22/25 page counts match | distance 0.096, 0 failed, 23/25 page counts match |
| DOCX, collected | 30 | distance 0.099, 0 failed, 30/30 page counts match | distance 0.518, 9 failed, 12/30 page counts match | distance 0.368, 0 failed, 14/30 page counts match | distance 0.307, 0 failed, 16/30 page counts match |
| PPTX, curated | 17 | distance 0.012, 0 failed, 17/17 page counts match | distance 0.039, 0 failed, 17/17 page counts match | distance 0.069, 0 failed, 17/17 page counts match | distance 0.059, 0 failed, 17/17 page counts match |
| PPTX, collected | 21 | distance 0.100, 0 failed, 21/21 page counts match | distance 0.110, 0 failed, 21/21 page counts match | distance 0.152, 0 failed, 21/21 page counts match | distance 0.129, 0 failed, 21/21 page counts match |
| XLSX, curated | 18 | distance 0.124, 0 failed, 18/18 page counts match | distance 0.686, 1 failed, 3/18 page counts match | distance 0.463, 1 failed, 8/18 page counts match | distance 0.429, 0 failed, 9/18 page counts match |
| XLSX, collected | 27 | distance 0.165, 0 failed, 20/27 page counts match | distance 0.790, 2 failed, 3/27 page counts match | distance 0.370, 0 failed, 9/27 page counts match | distance 0.347, 0 failed, 10/27 page counts match |
What stands out
- BetterOffice is strongest on slides. Its PPTX output was closer to PowerPoint's than LibreOffice's on the held-out corpus and on both development corpora, with every slide count right.
- BetterOffice XLSX has no print layout. It renders each visible sheet as one image of its used range, so print areas, page breaks and fit-to-page are not applied. Its XLSX rows measure a feature it does not offer, and they say nothing about its spreadsheet editor.
- BetterOffice's failures name their cause. Its DOCX failures stopped on unsupported small caps, shape effects, or footnote layout that did not converge. Its XLSX failures stopped on chart sheets or its render size limits.4
- office2pdf improved since 0.8.0. Its distance fell on every corpus we scored with both versions, most of all on the curated XLSX files (0.759 to 0.463). On the held-out corpus, six of its failures were compile errors in its Typst output and two reached the memory limit.
What this does not measure
This is rendering only. It does not cover editing, collaboration, calculation, speed or PDF input. BetterOffice ships browser editors and live collaboration, which Wolf does not attempt. For what Wolf does to the parts of a file an edit should leave alone, see the launch article.
If you render Office files in a sandbox, try Wolf on your own files and tell us where it breaks.