DocToolkit, a headless browser, or an Office install?

What each approach needs on your server before it can convert a document, what it converts, and what it takes to run. Every cell comes from DocToolkit's own README and guides, or this site's DocToolkit page; where they say nothing, the cell is left empty.

DocToolkit, a headless browser and an Office install, compared. An empty cell is one DocToolkit's documentation says nothing about.
Needs on the serverDocToolkitHeadless browserOffice install
A browser binaryNoYes, downloaded to the serverNo
Office installed and licensedNoNoYes, on Windows
Native filesNoneThe browser's native librariesOffice's own program files
In a containerA plain .NET runtime image, with nothing to apt-get installA headless browser installed into the image: a few hundred MB, and a CVE feed to watch
What it convertsHTML and Markdown to DOCX and PDF; DOCX to HTML, Markdown and PDF; XLSX to CSV, HTML and PDF; PPTX and legacy .ppt to PDF; legacy .doc to DOCXHTML, rendered to PDFDOCX to PDF, through Word: the case DocToolkit's DOCX to PDF guide discusses
HTML layoutText, headings, tables, lists, inline styles and images; no flexbox, grid, floats or absolute positioningPixel-accurate
LicenceMIT; its 35 dependencies are MIT or Apache-2.0, with no revenue thresholdsA licensed Word installation on the server
Server-side useIts container sample is built and run in CI with no networkThrough COM automation, which Microsoft explicitly does not support for server-side use
Network at run timeNone by default; remote images are an opt-in, per call or through DocToolkitOptions, with a host allow-list
PlatformsLinux, macOS, Windows and arm64, each tested in CIWindows

DocToolkit's build output held 0 native files when measured on 2026-08-09, with the package added to an empty net8.0 console app.

Where the cells come from

Each filled cell is taken from DocToolkit's README, its guides (Getting started, Capabilities, Running in production, HTML to Word and PDF, DOCX to PDF), the measurement under the table, or this site's DocToolkit page (its Why pure .NET table). Nothing is filled from memory.

README on GitHubDocumentation

Install

dotnet add package Ank.DocToolkit

NuGetDocumentationGitHub

Everything DocToolkit converts