HTML zu PDF · C#
HTML zu PDF mit C# und PuppeteerSharp
PuppeteerSharp ist die .NET-Portierung von Puppeteer. Sie steuert ein echtes Chromium ueber das DevTools-Protokoll und bietet dieselbe PDF-Treue wie das Node-Original, eingebettet in idiomatischen C#-Code mit async und await.
Code-Beispiel
using PuppeteerSharp;
await new BrowserFetcher().DownloadAsync();
await using var browser = await Puppeteer.LaunchAsync(
new LaunchOptions { Headless = true });
await using var page = await browser.NewPageAsync();
await page.SetContentAsync("<h1>Mahnung</h1><p>Bitte ausgleichen.</p>");
await page.PdfAsync("mahnung.pdf", new PdfOptions
{
Format = PaperFormat.A4,
PrintBackground = true,
}); Hinweise
PuppeteerSharp bringt die volle Chromium-Treue in die .NET-Welt. Da im Hintergrund derselbe Browser laeuft wie bei Puppeteer, gilt dasselbe Qualitaetsniveau: Flexbox, Grid, CSS-Variablen, Webfonts, SVG und per JavaScript erzeugte Inhalte werden korrekt dargestellt. Die API ist nah am Original, nutzt aber C#-Konventionen mit Task-basierter Asynchronitaet und await-Pattern. Beim ersten Lauf laedt BrowserFetcher eine passende Chromium-Version herunter, alternativ verweist man auf eine vorhandene Installation, was in containerisierten Deployments oft sauberer ist. PdfOptions spiegelt die Node-Optionen: Format, PrintBackground, Margin sowie HeaderTemplate und FooterTemplate fuer Seitenzahlen. Wie bei jeder Browser-Loesung sind Startzeit und Speicherbedarf hoeher als bei reinen Bibliotheken, weshalb sich in ASP.NET-Diensten ein wiederverwendeter Browser lohnt. Fuer .NET-Anwendungen, die exakte Bildschirmtreue und modernes CSS brauchen, ist PuppeteerSharp die direkteste und zuverlaessigste Wahl.
FAQ
Häufige Fragen
Woher kommt das Chromium fuer PuppeteerSharp?
Beim ersten Aufruf laedt BrowserFetcher eine passende Chromium-Version herunter. In Containern verweist du besser ueber ExecutablePath auf eine fest installierte Browser-Binary.
Wie nutze ich PuppeteerSharp in ASP.NET effizient?
Halte einen Browser ueber die Lebensdauer des Dienstes offen und erzeuge pro Anfrage nur eine neue Seite. So vermeidest du teure Chromium-Starts bei jedem Request.
Ohne Code geht es auch: Der HTML-zu-PDF-Converter wandelt direkt im Browser um, ohne Installation und ohne Upload.