WolfSDKWolfXLWolfPPTWolfDocxWolfRender

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.

Mean SSIM distance to Office's PDF (lower is closer), page counts that match Office's, and failed renders. Hover a mark for details.
CorpusFilesWolf 0.2.22BetterOffice 0.5.1office2pdf 0.10.0LibreOffice 26.8
DOCX42distance 0.088, 0 failed, 39/42 page counts matchdistance 0.351, 7 failed, 29/42 page counts matchdistance 0.321, 1 failed, 25/42 page counts matchdistance 0.203, 0 failed, 36/42 page counts match
PPTX51distance 0.082, 0 failed, 51/51 page counts matchdistance 0.093, 0 failed, 51/51 page counts matchdistance 0.250, 5 failed, 46/51 page counts matchdistance 0.120, 0 failed, 51/51 page counts match
XLSX38distance 0.143, 0 failed, 32/38 page counts matchdistance 0.808, 5 failed, 4/38 page counts matchdistance 0.403, 2 failed, 11/38 page counts matchdistance 0.335, 0 failed, 11/38 page counts match
Mean SSIM distance to Office's PDF (lower is closer), page counts that match Office's, and failed renders. Hover a mark for details.

Development corpora

Curated files exercise specific features; collected files are public documents gathered from government, research and open-source sources.

Same metric on the corpora we develop Wolf against. Wolf's numbers here are optimistic.
CorpusFilesWolf 0.2.22BetterOffice 0.5.1office2pdf 0.10.0LibreOffice 26.8
DOCX, curated25distance 0.016, 0 failed, 25/25 page counts matchdistance 0.099, 0 failed, 25/25 page counts matchdistance 0.173, 0 failed, 22/25 page counts matchdistance 0.096, 0 failed, 23/25 page counts match
DOCX, collected30distance 0.099, 0 failed, 30/30 page counts matchdistance 0.518, 9 failed, 12/30 page counts matchdistance 0.368, 0 failed, 14/30 page counts matchdistance 0.307, 0 failed, 16/30 page counts match
PPTX, curated17distance 0.012, 0 failed, 17/17 page counts matchdistance 0.039, 0 failed, 17/17 page counts matchdistance 0.069, 0 failed, 17/17 page counts matchdistance 0.059, 0 failed, 17/17 page counts match
PPTX, collected21distance 0.100, 0 failed, 21/21 page counts matchdistance 0.110, 0 failed, 21/21 page counts matchdistance 0.152, 0 failed, 21/21 page counts matchdistance 0.129, 0 failed, 21/21 page counts match
XLSX, curated18distance 0.124, 0 failed, 18/18 page counts matchdistance 0.686, 1 failed, 3/18 page counts matchdistance 0.463, 1 failed, 8/18 page counts matchdistance 0.429, 0 failed, 9/18 page counts match
XLSX, collected27distance 0.165, 0 failed, 20/27 page counts matchdistance 0.790, 2 failed, 3/27 page counts matchdistance 0.370, 0 failed, 9/27 page counts matchdistance 0.347, 0 failed, 10/27 page counts match
Same metric on the corpora we develop Wolf against. Wolf's numbers here are optimistic.

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.