Dokumente in reinem C# konvertieren
HTML, Markdown, Word, Excel und PowerPoint nach PDF und DOCX, in Ihrer eigenen .NET-App. Kein Office, kein Headless-Browser, keine nativen Dateien.
MIT-Lizenz. .NET 8 und .NET 10. Linux, macOS, Windows und arm64.
Von ↓ Nach →
| CSVCSV | DOCXDOCX | HTMLHTML | MarkdownMD | PDFPDF | |
|---|---|---|---|---|---|
| DOC | ✓ | ||||
| DOCX | ✓ | ✓ | ✓ | ||
| HTML | ✓ | ✓ | |||
| Markdown | ✓ | ✓ | |||
| PPTX | ✓ | ||||
| XLSX | ✓ | ✓ | ✓ |
using DocToolkit;
string html = "<h1>Invoice 2026-114</h1><p>Due on receipt</p>";
byte[] pdf = await HtmlToPdfConverter.ConvertAsync(html);
File.WriteAllBytes("output.pdf", pdf);- Downloads auf NuGet
32.674 - Konvertierungen
- 12
- native Dateien im Build
- 0
- neueste Version
- 0.61.0
Version 0.61.0, 32.674 Downloads auf NuGet, Stand 2026-11-14.
In drei Schritten startklar
Kein Server zu installieren, nichts zu registrieren.
- Das Paket hinzufügen
dotnet add package Ank.DocToolkitDas Kernpaket; für Dependency Injection in ASP.NET Core fügen Sie Ank.DocToolkit.Extensions.DependencyInjection hinzu. NuGet - Einen Konverter aufrufen
await HtmlToPdfConverter.ConvertAsync(html)Jeder Konverter ist eine statische Klasse. - Die Bytes abholen
File.WriteAllBytes("output.pdf", pdf)Das PDF kommt als byte[] zurück, zum Speichern, Streamen oder Anhängen.
Alles, was es kann, und eine Anleitung zu jedem Punkt
Jedes Feld öffnet die Seite, die zeigt, wie es geht.
DocToolkit und die anderen Wege der Konvertierung
Was jeder Ansatz auf Ihrem Server braucht, bevor er ein Dokument konvertieren kann.
| Braucht auf dem Server | DocToolkit | Headless-Browser | Office-Installation |
|---|---|---|---|
| Eine Browser-Binärdatei | Nein | Ja, auf den Server heruntergeladen | Nein |
| Office installiert und lizenziert | Nein | Nein | Ja, unter Windows |
| Native Dateien | Keine | Die nativen Bibliotheken des Browsers | Die eigenen Programmdateien von Office |
Die Build-Ausgabe von DocToolkit enthielt 0 native Dateien, gemessen am 2026-08-09, mit dem Paket in einer leeren net8.0-Konsolen-App.
Nichts verlässt Ihren Server
Standardmäßig öffnet keine Konvertierung einen Socket: Stylesheets werden nie abgerufen, und Remote-Bilder sind das einzige Opt-in. 40 Air-Gap-Tests prüfen das.
So funktioniert die Offline-Konvertierung- 0 Sockets standardmäßig
- 40 Air-Gap-Tests
- 1 Opt-in: Remote-Bilder
Fragen
Braucht es Office oder einen Browser?
Nein. DocToolkit ist reiner verwalteter Code: kein Browser, weder headless noch sonst, keine Word-Installation, kein LibreOffice und kein Office-Interop. HTML nach PDF läuft über ein Word-Dokument, das die Bibliothek selbst erstellt.
Läuft es unter Linux, macOS, arm64 und in Docker?
Ja. Die vollständige Testsuite läuft in der CI unter Linux, Windows, macOS und arm64. In Docker genügt ein einfaches .NET-Runtime-Image wie mcr.microsoft.com/dotnet/runtime:8.0, ohne etwas zu installieren; verwenden Sie runtime, nicht runtime-deps.
Welche .NET-Versionen unterstützt es?
Es zielt auf net8.0 und net10.0, die beiden LTS-Versionen. Eine net9.0-App verwendet den net8.0-Build. Einen netstandard2.0-Build gibt es nicht.
Unter welcher Lizenz steht es?
MIT. Seine 38 Abhängigkeiten sind 35 unter MIT, 2 unter Apache-2.0 und OfficeIMO.Core unter MIT, Apache-2.0 und BSD-3-Clause zugleich: keine Umsatzschwellen und keine Gebühren pro Arbeitsplatz.
Macht es Netzwerkaufrufe?
Standardmäßig nicht: Keine Konvertierung öffnet einen Socket, Stylesheets werden nicht abgerufen und Remote-Bilder werden verworfen. 40 Air-Gap-Tests prüfen das. Remote-Bilder sind das einzige Opt-in, pro Aufruf oder über DocToolkitOptions, mit einer Allow-List für Hosts und einer Sperre für Loopback- und private Adressen.
Was kann es nicht?
Es konvertiert die 12 Paare im Raster oben, dazu eine alte .ppt-Datei direkt nach PDF, und sonst nichts. Nichts konvertiert ein PDF in ein anderes Format (es liest PDF-Text und bearbeitet Seiten), nichts liest CSV, und eine alte .xls-Datei wird mit dem Hinweis abgelehnt, sie als .xlsx zu speichern. HTML nach PDF wendet weder Flexbox noch Grid noch Floats an.
Wie installiere ich es?
Führen Sie dotnet add package Ank.DocToolkit aus. Alles darin ist eine statische Klasse, daher gibt es nichts zu registrieren. Für Dependency Injection in ASP.NET Core fügen Sie zusätzlich Ank.DocToolkit.Extensions.DependencyInjection hinzu.