IRONSOFTWAREHOME
IRONPDF NUTZEN

HTML und Webseiten in ASP.NET zu PDF konvertieren mit C# und IronPDF

Curtis Chau
Curtis Chau
Updated: 27. Februar 2026

Dynamische PDF-Erstellung ermöglicht es Ihren .NET-Anwendungen, personalisierte Rechnungen, Echtzeit-Datenberichte und benutzerdefinierte Zertifikate auf Abruf zu erstellen — alles ohne eine einzige statische Vorlage zu berühren. IronPDF macht dies unkompliziert, indem es eine auf Chrome basierende Rendering-Engine bereitstellt, die HTML, CSS und JavaScript direkt in pixelgenaue PDF-Dokumente umwandelt, sodass Sie sich auf die Geschäftslogik anstatt auf die internen Details von PDF konzentrieren können.

Dieser Leitfaden führt Sie durch alle wichtigen Techniken zur Erstellung datengesteuerter PDFs in .NET: Installation der Bibliothek, Anwendung von Platzhaltervorlagen, programmatische Tabellenerstellung, Verwendung bedingter Inhaltsblöcke und Ausführung von JavaScript vor dem Rendern. Jeder Abschnitt enthält ein funktionierendes C#-Codebeispiel und eine Erläuterung, wann man die jeweilige Strategie anwenden sollte. Am Ende dieses Kurses verfügen Sie über ausreichend praktische Kenntnisse, um ein komplettes dynamisches PDF-Generierungssystem zu entwickeln, das auf die spezifischen Anforderungen Ihrer Anwendung zugeschnitten ist.

Dynamische PDF-Generierung .NET mit IronPDF: Bild 1 - IronPDF

Was ist dynamische PDF-Generierung in .NET?

Dynamische PDF-Generierung bedeutet, dass PDF-Dokumente zur Laufzeit erstellt werden, wobei jedes Inhaltselement – ​​Namen, Abbildungen, Datumsangaben, Tabellen, Diagramme – aus Live-Daten und nicht aus einem festen Layout stammt. Die Dokumentstruktur mag gleich bleiben, aber der Inhalt ändert sich mit jeder Anfrage.

Hier sind die Szenarien, in denen dieser Ansatz den größten Nutzen bringt:

  • Rechnungserstellung – Einzelposten, Summen, Steuersätze und Zahlungsbedingungen unterscheiden sich für jede Transaktion.
  • Finanzberichte – Diagramme und Übersichtstabellen greifen auf eine Datenbank zu, die den ganzen Tag über aktualisiert wird.
  • Zertifikate und Diplome – Namen der Empfänger, Abschlussdaten und Kursdetails variieren je nach Datensatz.
  • Rechtsdokumente – Verträge enthalten kundenspezifische Klauseln und Gerichtsstandsregeln.
  • Medizinische Unterlagen – Patientendaten, Testergebnisse und Behandlungspläne erfordern eine individuelle Formatierung

Die herkömmliche Alternative besteht darin, eine Bibliothek statischer Vorlagen zu pflegen und diese für jede Variante manuell zu bearbeiten. Dieser Ansatz stößt schnell an seine Grenzen, wenn das Dokumentenvolumen zunimmt und sich die Geschäftsregeln vervielfachen. Mit der HTML-zu-PDF-Konvertierungs-Engine von IronPDF schreiben Sie die Generierungslogik nur einmal und erzeugen Tausende von korrekt formatierten, datengenauen PDFs ohne manuelle Eingriffe.

IronPDF läuft unter Windows, Linux, macOS, Docker und Azure – die gleiche API funktioniert auf allen Plattformen identisch. Diese plattformübergreifende Konsistenz bedeutet, dass Sie lokal entwickeln und in einem Cloud-Container bereitstellen können, ohne plattformspezifische Anpassungen vornehmen zu müssen. Die Bibliothek ist für .NET 6 und höher ausgelegt und unterstützt sowohl die neuesten .NET Versionen als auch Versionen mit Langzeitunterstützung.

Dynamische PDF-Generierung .NET mit IronPDF: Bild 2 - Funktionen

Wie installiert und konfiguriert man die Bibliothek?

IronPDF wird als NuGet Paket vertrieben und lässt sich in jedes .NET 6- oder späteres Projekt integrieren, einschließlich ASP.NET Core, Blazor und Konsolenanwendungen. Installieren Sie es über die Paket-Manager-Konsole oder die .NET -Befehlszeilenschnittstelle:

PM > Install-Package IronPdf

Sobald das Paket installiert ist, können Sie sofort mit der Generierung von PDFs beginnen – während der kostenlosen Testphase ist keine Konfigurationsdatei oder ein API-Schlüssel erforderlich. Für Produktionslizenzen besuchen Sie die IronPDF Lizenzierungsseite und wählen Sie den Plan aus, der zu Ihrem Bereitstellungsmodell passt.

Der Einstiegspunkt für alle Renderings ist ChromePdfRenderer. Der folgende Codeausschnitt zeigt den minimalen Code, der benötigt wird, um eine dynamische HTML-Zeichenkette in eine gespeicherte PDF-Datei umzuwandeln:

using IronPdf;

var renderer = new ChromePdfRenderer();

var customerName = "Alexandra Chen";
var orderNumber = "ORD-2025-001";
var totalAmount = 1499.99m;

var html = $"""
    <h1>Order Confirmation</h1>
    <p>Dear {customerName},</p>
    <p>Thank you for your order #{orderNumber}.</p>
    <p>Total amount: ${totalAmount:F2}</p>
    <p>Your order will be processed within 24 hours.</p>
    """;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("order-confirmation.pdf");

// Stream the bytes directly in a web response if needed
byte[] pdfBytes = pdf.BinaryData;

ChromePdfRenderer behandelt alle Komplexitäten des Renderings intern. String-Interpolation ($"""...""") fügt C#-Variablen in HTML an der Aufrufstelle ein und hält Vorlagen lesbar, wodurch für einfache Fälle eine dedizierte Vorlagenbibliothek entfällt.

Eine vollständige Anleitung zur Einrichtung, einschließlich der Konfiguration für MVC-Views und Blazor Serverprojekte, finden Sie in der IronPDF Dokumentation .

Ausgabe

Dynamische PDF-Generierung .NET mit IronPDF: Bild 5 - PDF-Ausgabe

Wie wendet man die vorlagenbasierte PDF-Generierung an?

Die vorlagenbasierte Generierung trennt das Dokumentdesign von der Datenbindung. Ein Designer erstellt das HTML-Layout einmal, indem er benannte Platzhalter ({{TOKEN}}) an den Stellen einfügt, an denen zur Laufzeit Werte erscheinen sollen. Ihre Anwendung ersetzt diese Token vor dem Rendering. Dies ist das in den Diskussionen über die PDF-Generierung auf Stack Overflow empfohlene Muster für Projekte, bei denen sich die Vorlagen häufiger ändern als der Anwendungscode.

using IronPdf;

// Reusable template -- stored in a file or database in production
var htmlTemplate = """
    <style>
        .invoice { font-family: Arial; max-width: 800px; margin: auto; }
        .header  { background: #f0f0f0; padding: 20px; }
        .label   { font-weight: bold; }
    </style>
    <div class='invoice'>
        <div class='header'>
            <h2>Invoice #{{INVOICE_NUMBER}}</h2>
            <p>Date: {{INVOICE_DATE}}</p>
        </div>
        <p>Bill to: {{CUSTOMER_NAME}}</p>
        <p class='label'>Amount due: ${{TOTAL_AMOUNT}}</p>
    </div>
    """;

var invoiceHtml = htmlTemplate
    .Replace("{{INVOICE_NUMBER}}", "INV-2025-1234")
    .Replace("{{INVOICE_DATE}}", DateTime.Now.ToString("MMM dd, yyyy"))
    .Replace("{{CUSTOMER_NAME}}", "TechCorp Industries")
    .Replace("{{TOTAL_AMOUNT}}", "5,750.00");

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText    = "Invoice",
    DrawDividerLine = true
};

var pdf = renderer.RenderHtmlAsPdf(invoiceHtml);
pdf.SaveAs("invoice.pdf");

Die Token ({{...}}) markieren genau, wo Daten in das Dokument gelangen, sodass Vorlagen von Nicht-Entwicklern lesbar sind. Durch das Speichern von Vorlagen als externe Dateien kann ein Designer das Layout aktualisieren, ohne den Anwendungscode verändern zu müssen. Eine detailliertere Beschreibung dieses Musters finden Sie im IronPDF Vorlagen-Tutorial .

Dynamische PDF-Generierung .NET mit IronPDF: Bild 3 - Dynamische PDF-Generierung .NET - IronPDF

Wie erstellt man programmgesteuert PDFs aus Daten?

Wenn der Dokumentinhalt von Schleifen, Aggregationen oder bedingter Formatierung abhängt, bietet die Erstellung des HTML-Strings im Code die größte Kontrolle. Diese Vorgehensweise ist im Finanz- und Betriebsberichtswesen üblich, wo die Anzahl der Zeilen zur Kompilierzeit unbekannt ist. Sie ermöglicht es außerdem, Formatierungsregeln direkt in C# anzuwenden, anstatt sie in eine statische Vorlage einzubetten.

using IronPdf;
using System.Text;

var orderItems = new[]
{
    new { Product = "Premium License",  Quantity = 5, Price = 399.00m },
    new { Product = "Support Package",  Quantity = 1, Price = 299.00m },
    new { Product = "Training Session", Quantity = 2, Price = 150.00m }
};

var sb = new StringBuilder();
sb.Append("<h2>Order Summary</h2>");
sb.Append("<table style='width:100%; border-collapse:collapse;'>");
sb.Append("<tr style='background:#333; color:white;'>");
sb.Append("<th style='padding:10px;'>Product</th><th>Qty</th><th>Unit Price</th><th>Total</th>");
sb.Append("</tr>");

decimal grandTotal = 0;
foreach (var item in orderItems)
{
    var lineTotal = item.Quantity * item.Price;
    grandTotal += lineTotal;
    sb.Append($"""
        <tr>
            <td style='padding:10px;'>{item.Product}</td>
            <td style='text-align:center;'>{item.Quantity}</td>
            <td style='text-align:right;'>${item.Price:F2}</td>
            <td style='text-align:right;'>${lineTotal:F2}</td>
        </tr>
        """);
}

sb.Append($"""
    <tr style='font-weight:bold; background:#f0f0f0;'>
        <td colspan='3' style='padding:10px; text-align:right;'>Grand total:</td>
        <td style='text-align:right; padding:10px;'>${grandTotal:F2}</td>
    </tr>
    """);
sb.Append("</table>");

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(sb.ToString());

pdf.SaveAs("order-summary.pdf");

// Get bytes for a web download response
byte[] pdfData = pdf.BinaryData;

StringBuilder verarbeitet große HTML-Zeichenfolgen effizient. Die foreach Schleife erweitert sich auf so viele Zeilen, wie Ihre Datenquelle bereitstellt, und die laufende grandTotal Berechnung zeigt, wie sich Geschäftslogik natürlich mit HTML-Konstruktion integriert. Bei sehr großen Datensätzen passt dieser Ansatz gut zu den Mehrseiten-Rendering-Optionen von IronPDF .

Ausgabe

Dynamische PDF-Generierung .NET mit IronPDF: Bild 7 - HTML zu PDF-Ausgabe

Wie geht man mit dynamischen Tabellen um, die sich über mehrere Seiten erstrecken?

Aus Datenbanken generierte Berichte enthalten oft unvorhersehbare Zeilenanzahlen. Die korrekte Handhabung automatischer Seitenumbrüche – ohne eine Zeile zu halbieren – erfordert neben den Rendering-Optionen von IronPDF spezifisches CSS. Die page-break-inside: avoid Regel, kombiniert mit korrekter Randkonfiguration, hält jede Zeile intakt, während die Tabelle über Seiten hinweg fließt.

using IronPdf;

var salesData = Enumerable.Range(1, 30).Select(i => new
{
    Month   = $"Month {i}",
    Revenue = 10_000 + (i * 500),
    Growth  = 2.5 + (i * 0.3)
});

var tableHtml = """
    <style>
        table { width: 100%; border-collapse: collapse; page-break-inside: auto; }
        th    { background: #2c3e50; color: white; padding: 12px; }
        td    { padding: 8px; border-bottom: 1px solid #ddd; }
        tr:nth-child(even) { background: #f9f9f9; }
        tr    { page-break-inside: avoid; page-break-after: auto; }
    </style>
    <h2>Sales Performance Report</h2>
    <table>
        <thead><tr><th>Period</th><th>Revenue</th><th>Growth %</th></tr></thead>
        <tbody>
    """;

foreach (var row in salesData)
{
    tableHtml += $"""
        <tr>
            <td>{row.Month}</td>
            <td>${row.Revenue:N0}</td>
            <td>{row.Growth:F1}%</td>
        </tr>
        """;
}

tableHtml += "</tbody></table>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize   = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop    = 40;
renderer.RenderingOptions.MarginBottom = 40;

renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    CenterText = "{page} of {total-pages}",
    FontSize   = 10
};

var pdf = renderer.RenderHtmlAsPdf(tableHtml);
pdf.SaveAs("sales-report.pdf");

{page} und {total-pages} sind die in IronPDF integrierten Token für die automatische Fußzeilennummerierung. Die Seitenränder sorgen dafür, dass der Inhalt auf jeder Seite nicht an den Rand gerät und verleihen dem fertigen Bericht ein Professional Aussehen, selbst wenn die Tabelle Dutzende von Seiten umfasst.

Hinweise zur Formatierung komplexer Tabellenlayouts, einschließlich verbundener Zellen, finden Sie in der Referenz zu den Rendering-Optionen von IronPDF .

Wie fügt man bedingten Inhalt zu einer PDF-Datei hinzu?

Viele Dokumenttypen enthalten Abschnitte, die nur unter bestimmten Bedingungen angezeigt werden sollen – ein Premium-Abzeichen für Top-Kunden, ein Rabattblock bei einer Werbeaktion, eine Warnung bei einem überfälligen Konto. Die bedingte Logik in C# entspricht dieser Anforderung direkt, und da die Bedingung ausgewertet wird, bevor die HTML-Zeichenfolge erstellt wird, landen keine leeren Platzhalterelemente im endgültigen PDF.

using IronPdf;

var customer = new
{
    Name           = "Global Tech Solutions",
    IsPremium      = true,
    HasDiscount    = true,
    DiscountPct    = 15,
    LoyaltyPoints  = 2500
};

var html = $"""<h2>Customer Profile: {customer.Name}</h2><div style='border:1px solid #ddd; padding:20px;'>""";

if (customer.IsPremium)
{
    html += """<div style='background:gold; padding:10px; margin-bottom:10px;'>PREMIUM MEMBER -- Exclusive benefits applied</div>""";
}

if (customer.HasDiscount)
{
    html += $"""<div style='background:#e8f5e9; padding:10px; margin-bottom:10px;'>Special discount: {customer.DiscountPct}% off all orders</div>""";
}

if (customer.LoyaltyPoints > 0)
{
    html += $"""<div style='background:#f3e5f5; padding:10px;'>Loyalty points balance: {customer.LoyaltyPoints:N0} points</div>""";
}

html += "</div>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("customer-profile.pdf");

Dieses Muster lässt sich auf beliebige regelbasierte Inhalte ausweiten: beispielsweise auf länderspezifische rechtliche Hinweise, auf den Warenkorbwert abgestimmte Werbeabschnitte oder auf die Produktkategorie abgestimmte Sicherheitswarnungen. Das resultierende PDF enthält genau den Inhalt, den es enthalten soll – nicht mehr und nicht weniger.

Ausgabe

Dynamische PDF-Generierung .NET mit IronPDF: Bild 8 - Dynamische PDF-Ausgabe

Wie rendert man JavaScript-basierte Diagramme in einem PDF?

Moderne Dashboards verwenden häufig JavaScript Bibliotheken wie Chart.js oder D3.js , um Diagramme zur Renderzeit zu erstellen. IronPDF kann JavaScript ausführen, bevor die Seite erfasst wird, sodass das Diagramm vollständig gerendert wird, bevor der PDF-Snapshot erstellt wird. Das bedeutet, dass Sie keinen separaten Screenshot-Dienst oder eine serverseitige Bibliothek zum Rendern von Diagrammen benötigen.

using IronPdf;

var chartHtml = """
    <script src='https://cdn.jsdelivr.net/npm/chart.js'></script>
    <canvas id='revenueChart' width='500' height='250'></canvas>
    <script>
        var ctx = document.getElementById('revenueChart').getContext('2d');
        new Chart(ctx, {
            type: 'bar',
            data: {
                labels: ['Q1', 'Q2', 'Q3', 'Q4'],
                datasets: [{
                    label: 'Revenue (thousands)',
                    data: [120, 195, 230, 285],
                    backgroundColor: '#3498db'
                }]
            },
            options: { animation: false }
        });
    </script>
    """;

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(1500);

var pdf = renderer.RenderHtmlAsPdf(chartHtml);
pdf.SaveAs("revenue-chart.pdf");

EnableJavaScript = true aktiviert die Skriptausführung im Headless Chrome-Engine. RenderDelay(1500) fügt nach dem Laden der Seite eine Pause von 1,5 Sekunden hinzu, um asynchrones Diagramm-Rendering abzuschließen, bevor das Bild aufgenommen wird. Die Festlegung von animation: false in den Chart.js-Optionen verhindert, dass animierte Frames während des Übergangs erfasst werden.

Diese Technik funktioniert mit jeder JavaScript Bibliothek. Sie können serverseitige Daten in den <script> Block mit C#-String-Interpolation einfügen, sodass jedes Diagramm aktuelle Datenbankwerte zum Zeitpunkt der Generierung widerspiegelt. Weitere Details zur JavaScript Konfiguration finden Sie im JavaScript Rendering-Leitfaden von IronPDF .

Wie exportiert und liefert man die generierte PDF-Datei?

Sobald RenderHtmlAsPdf ein PdfDocument Objekt zurückgibt, haben Sie je nach Anwendungsart mehrere Lieferoptionen. Das Speichern auf der Festplatte ist die einfachste Methode und funktioniert auch für Batch-Prozesse im Hintergrund. Bei Web-APIs und MVC-Controllern vermeidet das direkte Streaming der Bytes in die HTTP-Antwort das Schreiben temporärer Dateien und hält das Server-Dateisystem sauber.

using IronPdf;
using Microsoft.AspNetCore.Mvc;

// In an ASP.NET Core controller action:
public IActionResult DownloadInvoice(int orderId)
{
    var renderer = new ChromePdfRenderer();
    var html     = BuildInvoiceHtml(orderId);   // your data-binding method
    var pdf      = renderer.RenderHtmlAsPdf(html);

    return File(pdf.BinaryData, "application/pdf", $"invoice-{orderId}.pdf");
}

pdf.BinaryData gibt die rohen Bytes als ein byte[] zurück, das direkt auf das File() Ergebnis von ASP.NET Core abbildet. Der Browser erhält den korrekten MIME-Typ (application/pdf) und löst einen Download-Dialog mit einem sinnvollen Dateinamen aus.

Zu den zusätzlichen Ausgabefunktionen gehören PDF-Zusammenführung , digitale Signaturen , das Archivformat PDF/A , Passwortschutz sowie Text- und Bildextraktion . Diese Funktionen arbeiten mit demselben PdfDocument Objekt, das vom Renderer zurückgegeben wird, sodass Sie Operationen verketten können, ohne Zwischenfiles zu erstellen.

Dynamische PDF-Generierung .NET mit IronPDF: Bild 9 - Lizenzierung

Was sind Ihre nächsten Schritte?

Die dynamische PDF-Generierung in .NET beruht auf drei Bausteinen: einer HTML-Zeichenfolge, die sich mit Ihren Daten ändert, ChromePdfRenderer, um diese Zeichenfolge in ein PDF umzuwandeln, und dem Auslieferungsmechanismus, der zu Ihrer Anwendung passt. IronPDF kümmert sich um alles dazwischen – Seitenumbrüche, Kopf- und Fußzeilen, JavaScript Ausführung und plattformübergreifende Kompatibilität.

Um vom Lesen zum Erstellen überzugehen, installieren Sie zunächst das Paket und führen Sie eines der obigen Beispiele mit Ihren eigenen Daten aus:

dotnet add package IronPdf

Von dort aus können Sie in der IronPDF Dokumentation plattformspezifische Einrichtungshinweise (Azure, Docker, Linux), erweiterte Rendering-Optionen und die vollständige API-Referenz einsehen. Wenn Sie bereit sind, die Software einzusetzen, besuchen Sie die Lizenzierungsseite , um einen Plan auszuwählen, der zu Ihrem Produktionsvolumen passt. Mit der kostenlosen Testversion erhalten Sie vollen Zugriff auf alle Funktionen, ohne dass eine Kreditkarte erforderlich ist. So können Sie Ihre Implementierung überprüfen, bevor Sie sich endgültig entscheiden.

Weitere Leitfäden, die gut mit der dynamischen Generierung harmonieren:

Dynamische PDF-Generierung .NET mit IronPDF: Bild 6 - Plattformübergreifende Kompatibilität

Dynamische PDF-Generierung .NET mit IronPDF: Bild 4 - Installation

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Buchen Sie Ihre kostenlose Live-Demo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Kundenlogos von Iron Software
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Kundenlogos von Iron Software
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.