# Wie man HTML zu PDF in C# konvertiert (Entwicklerleitfaden)
Die Konvertierung von HTML in PDF in C# erscheint oft einfach, bis reale Anforderungen auftauchen. Entwickler stoßen schnell an Grenzen, die sich auf die Genauigkeit der Darstellung, den Einsatz und die Skalierbarkeit auswirken.
Neben dem Rendering ist auch die Kompatibilität der Infrastruktur entscheidend. Die Teams müssen sicherstellen, dass die PDF-Generierung in modernen .NET-Laufzeiten, Cloud-Plattformen und containerisierten Umgebungen ohne Leistungseinbußen funktioniert.
Um diese Lücken zu schließen, bieten moderne Chrome-basierte Lösungen wie IronPDF eine höhere Rendering-Treue, eine breitere Plattformunterstützung und produktionsreife Bereitstellungs-Workflows, die im weiteren Verlauf dieses Leitfadens Schritt für Schritt erläutert werden.
*as-heading:2(TL;DR: Schnellstartanleitung zur Konvertierung von HTML in PDF)*
Mit der [IronPdf](/)-Bibliothek können Sie HTML in C# ganz einfach in PDF konvertieren. Die Bibliothek bietet die Methode `ChromePdfRenderer.RenderHtmlAsPdf`, um aus HTML, CSS und JavaScript hochwertige PDF-Dateien zu erstellen.
```cs
:title=Get started making PDFs now!
new IronPdf.ChromePdfRenderer()
.RenderHtmlAsPdf("<p>Hello World</p>")
.SaveAs("pixelperfect.pdf");
```
Nachdem Sie IronPDF gekauft oder sich für eine 30-tägige Testversion angemeldet haben, finden Sie den Lizenzschlüssel, der an Ihre E-Mail gesendet wurde. Fügen Sie Ihren Lizenzschlüssel am Anfang Ihrer Anwendung hinzu.
```cs
IronPdf.License.LicenseKey = "KEY";
```
*as-heading:2(Warum .NET-Entwickler einen HTML-zu-PDF-Konverter für C# benötigen)*
IronPDF nutzt eine eingebettete Google Chromium-Rendering-Engine, um hochdetaillierte Konvertierungen zu gewährleisten, die das Layout und die Stilgebung Ihrer Webinhalte genau bewahren.
✅ **Robuste Chrome-Rendering-Engine:** Chromes Blink-Engine für genaue HTML-zu-PDF-Konvertierung, jetzt verbessert mit Korrekturen für Speicher, Formulare und Genauigkeit beim Rendern (v2025.9.4)
✅ **Pixelgenaue Genauigkeit:** Generierte PDFs entsprechen genau der Webseite, nicht einer druckerfreundlichen Version. Aktuelle Korrekturen decken benutzerdefinierte Kopf-/Fußzeilen-Clipping, Graustufen-Texterhaltung und Sonderzeichen/Emojis in Metadaten ab (Stand v2025.9.4)
✅ **Volle Unterstützung moderner Webtechnologien:** Komplettunterstützung für CSS3, HTML5, JavaScript für alle HTML-Elemente. Neuere Verbesserungen umfassen die Handhabung von Formularfeldern für lange Textbereiche und Checkboxen.
✅ **5-20x Leistungssteigerung:** Deutlich schneller als Browser-Automatisierung oder Web-Treiber, jetzt mit Speicherleck-Korrekturen und reduzierten Dateigrößen für wiederkehrende Elemente wie Stempel/Kopfzeilen in Batch-Operationen.
✅ **PDF/UA-Konformität:** Zugängliche PDF-Erzeugung, die den Standards von Section 508 entspricht, verbessert für plattformübergreifendes (z. B. Linux) Formular-Rendering.
✅ **Keine externen Abhängigkeiten:** Keine auszuführenden Dateien auf Servern zu installieren
✅ Entwickelt für C#, F# & VB.NET auf .NET 10, 9, 8, 7, 6, Core, Standard oder Framework
IronPDF vereinfacht den Prozess for .NET-Entwickler und bietet eine unkomplizierte und effiziente Lösung zur Erzeugung professionell aussehender PDF-Dokumente aus dem HTML Ihrer Webanwendung. Von Rechnungen und Berichten bis zu Zertifikaten und Archiven können Entwickler mit ihrem vertrauten Web-Stack arbeiten, während IronPDF das Komplexe in nur wenigen Codezeilen handhabt.
**VERWANDT:** <a class="content-anchor" href="/product-updates/changelog/">IronPDF Changelog: Updates, Meilensteine, Roadmap <i class="fa-solid fa-arrow-right"></i></a>
*as-heading:2(Was Sie lernen werden)*
1. [Wie konvertiert man HTML in PDF C#](#1-wie-konvertiert-html-zu-pdf-c-num)
- [Wie konvertiere ich einen HTML-String in PDF](#how-to-convert-html-string-to-pdf)
- [Wie exportiere ich eine vorhandene URL nach PDF](#how-to-export-existing-url-to-pdf)
- [Wie konvertiert man eine HTML-Datei in PDF](#how-to-convert-html-file-to-pdf)
- [So konvertieren Sie Razor Pages in PDF](#how-to-convert-razor-pages-to-pdf)
- [So konvertieren Sie MVC-Ansichten in PDF](#how-to-convert-mvc-views-to-pdf)
2. [So konfigurieren Sie die HTML-zu-PDF-Einstellungen](#2-how-to-configure-html-to-pdf-settings)
- [So legen Sie benutzerdefinierte HTTP-Header, Cookies und Anmeldeinformationen fest](#how-to-set-custom-http-headers-cookies-and-login-credentials)
- [So konfigurieren Sie einen Proxy für die PDF-Darstellung](#how-to-configure-proxy-for-pdf-rendering)
3. [Wie man erweiterte PDF-Erzeugungs- und Sicherheitsfunktionen verwendet](#3-wie-man-erweiterte-pdf-generierung-sicherheitsfunktionen-verwendet)
- [So generieren Sie eine HTML-Vorlage für die Stapel-PDF-Erstellung](#how-to-generate-html-template-for-batch-pdf-creation)
- [Wie generiere ich PDF unter Verwendung der Async-Methode](#how-to-generate-pdf-using-async-method)
- [Wie man erweiterte Sicherheitsfunktionen hinzufügt](#how-to-add-advanced-security-features)
- [So konvertieren Sie HTML-Formulare in ausfüllbare PDFs](#how-to-convert-html-forms-to-fillable-pdfs)
- [So konvertieren Sie bestimmte HTML-Elemente in PDF](#how-to-convert-specific-html-elements-to-pdf)
- [So rendern Sie authentifizierte Seiten als PDF](#how-to-render-authenticated-pages-to-pdf)
4. [Wie man HTML auf Cloud-Plattformen in PDF umwandelt](#4-how-to-deploy-html-to-pdf-on-cloud-platforms)
- [So stellen Sie die Anwendung in Azure bereit](#how-to-deploy-on-azure)
- [Wie man auf AWS Lambda bereitstellt](#how-to-deploy-on-aws-lambda)
- [So stellen Sie mit Docker bereit](#how-to-deploy-with-docker)
5. [Vergleich von IronPDF mit anderen .NET PDF-Bibliotheken](#5-compare-ironpdf-with-other-net-pdf-libraries)
- [Schnelle Entscheidungsmatrix: IronPDF im Vergleich zu anderen .NET-PDF-Konvertern](#quick-decision-matrix-ironpdf-versus-other-net-pdf-converters)
- [Detaillierter Vergleich: IronPDF im Vergleich zu anderen .NET-PDF-Konvertern](#detailed-comparison-ironpdf-versus-other-net-pdf-converters)
- [Real-life HTML to PDF Conversion Comparison: Rendering von Reddits Homepage](#real-life-html-to-pdf-conversion-comparison-rendering-reddits-homepage)
- [Schlussfolgerung zur Leistung und Qualität der PDF-Ausgabe](#conclusion-on-performance-and-output-pdf-quality)
- [Zusammenfassung](#summary)
6. [Fehlerbehebung und technischer Support](#6-troubleshooting--technical-support)
- [Schnelle Lösungen für häufige Fehler](#quick-fixes-on-common-errors)
- [Holen Sie sich Hilfe von den Ingenieuren, die IronPDF entwickelt haben, 24/7](#get-help-from-the-engineers-who-built-ironpdf-247)
## 1. How to Convert HTML to PDF C#
Egal, ob Sie mit HTML-Strings, URLs oder HTML-Dateien arbeiten, IronPDF bietet flexible Optionen, um hochwertige PDF-Dokumente zu erzeugen, die Ihren spezifischen Anforderungen entsprechen.
In diesem Tutorial führen wir Sie durch die häufigsten Szenarien, einschließlich HTML-String zu PDF, URL zu PDF und HTML-Datei zu PDF. Zusätzlich bietet IronPDF auch eine Vielzahl von Operationen zur Bearbeitung von PDF-Dokumenten:
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th><strong>Vielseitige PDF-Konvertierung</strong></th>
<th><strong>Dynamische Webseiten-Konvertierung in PDF</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<ul>
<li><a class="content-anchor" href="/how-to/html-zip-file-to-pdf/">PDF aus HTML-ZIP-Datei konvertieren <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/image-to-pdf/">Bild in PDF umwandeln <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/rasterize-pdf-to-images/">Bild aus PDF konvertieren <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/docx-to-pdf/">DOCX in PDF umwandeln <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/rtf-to-pdf/">Konvertieren von RTF in PDF <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/md-to-pdf/">MD in PDF umwandeln <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/xml-to-pdf/">Konvertieren von XML in PDF <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/pdf-to-html/">Konvertieren von PDF in HTML <i class="fa-solid fa-arrow-right"></i></a></li>
</ul>
</td>
<td>
<ul>
<li><a class="content-anchor" href="/how-to/aspx-to-pdf/">Konvertieren von PDF aus ASPX-Seiten <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/xaml-to-pdf-maui/">XAML in PDF umwandeln (MAUI) <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/csharp-pdf-reports/">PDF-Berichte generieren <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/blazor-tutorial/">Erstellen von PDFs in Blazor Servern <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/razor-to-pdf-blazor-server/">Razor in PDF konvertieren (Blazor Server) <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/cshtml-to-pdf-razor/">Konvertieren von CSHTML in PDF (Razor Pages) <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/cshtml-to-pdf-mvc-core/">Konvertieren von CSHTML in PDF (MVC Core) <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/cshtml-to-pdf-mvc-framework/">Konvertieren von CSHTML in PDF (MVC Framework) <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/cshtml-to-pdf-razor-headless/">Konvertieren von CSHTML in PDF (Headless) <i class="fa-solid fa-arrow-right"></i></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
### Wie man HTML-String zu PDF konvertiert
Die grundlegendste Operation ist der HTML-String zu PDF. Diese Methode ist perfekt für dynamisch generierte HTML-Inhalte. Die `RenderHtmlAsPdf`-Methode unterstützt HTML5, CSS3, JavaScript und Bilder vollständig, wenn Sie HTML direkt in PDF konvertieren.
```csharp
using IronPdf;
// Create the Chrome renderer
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Save the PDF
pdf.SaveAs("output.pdf");
```
#### Leistung
Die Leistung der IronPDF-Konvertierung von Zeichenfolgen, URLs und HTML in PDF wurde auf einem Lenovo-Laptop mit 16 GB RAM gemessen. Das Testdokument ist eine 3-seitige Enterprise-Rechnung mit Standard-CSS-Grid, Farbverläufen und mehrteiligen Tabellen.
Die Ergebnisse lauten wie folgt:
|Metrik| Wert|
|---|---|
| Durchschnittliche Renderzeit | ~486 ms |
| Speicher pro Rendering | ~3,6 MB |
*Gemessen anhand von 5 aufeinanderfolgenden Renderings auf einer 16-Kern-Workstation (Windows 11, .NET 8). Der erste Aufruf umfasst auch eine einmalige Initialisierung der Chromium-Engine (~1,3 s)*
Als ich den Test zum ersten Mal durchführte, war die Renderzeit sehr langsam (über eine Sekunde pro Aufruf!). Nachdem ich mir die Situation angesehen hatte, stellte ich fest, dass mehrere Chromium-Instanzen geöffnet waren und ich im Akkubetrieb arbeitete – beides Faktoren, die verhinderten, dass die Bibliothek ihre wahre Geschwindigkeit unter Beweis stellen konnte. Nachdem ich die konkurrierenden Prozesse geschlossen und den Stecker eingesteckt hatte, lief es besser: Warme Läufe lagen im Durchschnitt bei ~486 ms, wobei der schnellste Wert bei knapp 473 ms lag.
[[t:((Aktualisiert für v2025.9.4) Aktuelle Updates beheben Probleme mit Sonderzeichen/Emojis in HTML-Metadaten und sorgen für eine bessere Handhabung von HTML-Formularfeldern, einschließlich chinesischer Zeichen unter Linux. Testen Sie dynamische Inhalte mit <span style="color: red;">`EnableJavaScript = true`</span>, um optimale Ergebnisse zu erzielen.)]]
Wenn Ihre HTML-Zeichenkette auf lokale Ressourcen wie Bilder oder Stylesheets verweist, verwenden Sie den Parameter `BaseUrlPath`, um HTML-Inhalte mit allen Ressourcen korrekt zu konvertieren:
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-2.cs
```
[[t:(BaseUrlPath gibt IronPDF an, wo Ihre CSS-, JavaScript- und Bilddateien zu finden sind. Alle relativen Pfade in Ihrem HTML-String werden von diesem Verzeichnis aus aufgelöst.)]]
[[w:(Ein Punkt, auf den man achten sollte, und warum das Testen der Ausgabe unabhängig davon, welche Bibliothek man für die automatisierte Dokumentgenerierung verwendet, wichtig ist, ist, dass das Enterprise-Dokument möglicherweise fehlerhafte Elemente oder fehlende Assets enthält, wenn Verweise auf die Systemeinstellungen zurückfallen. IronPDF bietet Ihnen den Parameter `BaseUrlPath`, um relative Pfade auf das richtige Verzeichnis zu verweisen, sodass eine kurze Überprüfung der Ausgabe vor Massenausführungen in der Regel ausreicht, um Fehler zu erkennen.)]]
**VERWANDTER HOW-TO-ARTIKEL:** <a class="content-anchor" href="/how-to/html-string-to-pdf/">Wie man HTML-String in PDF in C# konvertiert <i class="fa-solid fa-arrow-right"></i></a>
### Wie man eine bestehende URL in PDF exportiert
Das Rendern ganzer Webseiten zu PDFs mit C# ermöglicht es Teams, PDF-Design und Backend-Rendering-Arbeiten zu trennen. Dieser Ansatz ermöglicht es Ihnen, jede angegebene URL direkt in das PDF-Format zu konvertieren.
**Print vs. Screen CSS**
Sie können IronPDF so konfigurieren, dass es mit jedem CSS-Medientyp rendert.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-4.cs
```
**JavaScript-Unterstützung**
IronPDF unterstützt JavaScript, jQuery und sogar AJAX vollständig, wenn Sie HTML in PDF konvertieren. Für dynamische HTML-Inhalte können Sie IronPDF so konfigurieren, dass es auf den Abschluss von JavaScript wartet, bevor es Webseiten in PDF rendert. Dies ist perfekt für Single-Page-Anwendungen und dynamische Websites.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-5.cs
```
Die JavaScript-Ausführung kann auch angezeigt werden, wenn ein fortgeschrittener d3.js-Akkord-Diagramm von einer Webseite in das PDF-Format gerendert wird:
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-6.cs
```
**Responsive CSS**
Da responsive Webseiten für die Anzeige in einem Browser konzipiert sind und IronPDF kein echtes Browserfenster im Betriebssystem Ihres Servers öffnet, werden responsive HTML-Elemente möglicherweise in ihrer kleinsten Größe gerendert. `PdfCssMediaType.Print` wird empfohlen, um dieses Problem beim Rendern ganzer Webseiten zu umgehen.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-7.cs
```
**VERWANDTER HOW-TO-ARTIKEL:** <a class="content-anchor" href="/how-to/url-to-pdf/">Wie man URL zu PDF rendert <i class="fa-solid fa-arrow-right"></i></a>
### Wie man HTML-Datei zu PDF konvertiert
Das Konvertieren lokaler HTML-Dateien in PDF bewahrt alle relativen Ressourcen, einschließlich CSS, Bilder und JavaScript, als ob sie mit dem file://-Protokoll geöffnet würden. Diese HTML-zu-PDF-Methode eignet sich am besten zum Konvertieren von Vorlagen oder vordesignierten HTML-Seiten in PDF-Dokumente.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-8.cs
```
#### Leistung
Die Leistung wurde erneut gemessen, indem alle Variablen konstant gehalten wurden, um die vorherige 3-seitige Enterprise-Rechnung aus einer Datei auf der Festplatte zu rendern:
|Metrik| Wert|
|---|---|
| Durchschnittliche Renderzeit | ~502 ms |
| Speicher pro Rendering | ~3,1 MB |
*Gemessen anhand von 5 aufeinanderfolgenden Renderings auf derselben 16-Kern-Workstation (Windows 11, .NET 8). Das dateibasierte Rendering weicht vom In-Memory-String-Rendering um maximal 3 % ab; Das Einlesen des HTML-Codes von der Festplatte verursacht keinen nennenswerten Mehraufwand.*
[[t:(Bewahren Sie Ihre HTML-Dateien in einem separaten Ordner mit ihren Ressourcen (CSS, Bilder) auf, um sie im Browser zu bearbeiten und zu testen, bevor Sie HTML-Dateien in PDF konvertieren. Dies stellt sicher, dass Ihr HTML perfekt für hochwertige PDF-Dokumente gerendert wird.)]]
**VERBUNDENE HOW-TO Artikel:** <a class="content-anchor" href="/how-to/html-file-to-pdf/">HTML-Datei in PDF rendern <i class="fa-solid fa-arrow-right"></i></a>
### So konvertieren Sie Razor Pages in PDF
Wenn Ihr ASP.NET Core Projekt bereits Razor Pages verwendet, können Sie diese direkt in PDF konvertieren, ohne Ihr HTML neu zu erstellen. Die Razor-Erweiterung von IronPDF fügt die Methode `RenderRazorToPdf` hinzu, die Ihre .cshtml-Seite – komplett mit Modell und Layout – in einem einzigen Aufruf als PDF-Dokument rendert.
```shell
PM > Install-Package IronPdf.Extensions.Razor
```
```csharp
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
public class ReportModel : PageModel
{
public IActionResult OnGet()
{
var renderer = new ChromePdfRenderer();
// Render a Razor Page directly to PDF
PdfDocument pdf = renderer.RenderRazorToPdf(this);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
}
}
```
[[i:(RenderRazorToPdf erfordert ein ASP.NET Core Web App-Projekt. Es funktioniert nicht in Konsolenanwendungen oder Klassenbibliotheken – die Razor View-Engine muss in der Host-Pipeline verfügbar sein.)]]
**VERWANDTER ANLEITUNGSARTIKEL:** <a class="content-anchor" href="/how-to/cshtml-to-pdf-razor/">So konvertieren Sie CSHTML in Razor Pages in PDF<i class="fa-solid fa-arrow-right"></i></a>
### Wie man MVC-Ansichten in PDF konvertiert
Teams, die das MVC-Muster verwenden, können PDFs direkt aus ihren bestehenden Views und Controllern generieren. Installieren Sie das MVC Core-Erweiterungspaket und rufen Sie dann `RenderRazorViewToPdf` mit Ihrem View-Pfad und Ihrem Modell auf – IronPDF übernimmt die Razor-Rendering-Pipeline und gibt ein fertiges PDF aus.
Dies ist besonders nützlich für Berichte, Rechnungen und alle Seiten, deren HTML-Code bereits im Browser entworfen und getestet wurde. Die generierte PDF-Datei bewahrt die vollständige Ansichtsausgabe, einschließlich Layoutseiten und Teilansichten.
```shell
PM > Install-Package IronPdf.Extensions.Mvc.Core
```
Registrieren Sie zunächst den Dienst `IRazorViewRenderer` in Ihrer Program.cs, damit Ihre Controller ihn einbinden können:
```csharp
using IronPdf.Extensions.Mvc.Core;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
// Register the Razor view renderer for IronPDF
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
```
Anschließend können Sie in Ihrer Controller-Aktion den Renderer einbinden und jede Ansicht in ein PDF konvertieren:
```csharp
using IronPdf;
using IronPdf.Extensions.Mvc.Core;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
private readonly IRazorViewRenderer _viewRenderService;
// Inject the view renderer via constructor
public ReportController(IRazorViewRenderer viewRenderService)
{
_viewRenderService = viewRenderService;
}
public IActionResult Download()
{
var reportModel = new { Title = "Quarterly Report", Total = 1250.00 };
var renderer = new ChromePdfRenderer();
// Render an MVC View with model data to PDF
PdfDocument pdf = renderer.RenderRazorViewToPdf(
_viewRenderService, "Views/Home/Report.cshtml", reportModel);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
}
}
```
**VERWANDTER ANLEITUNGSARTIKEL:** <a class="content-anchor" href="/how-to/cshtml-to-pdf-mvc-core/">So konvertieren Sie Ansichten in ASP.NET Core MVC in PDF<i class="fa-solid fa-arrow-right"></i></a>
### Dynamische Webseite in PDFs
Müssen Sie Ihre dynamische Webseite bewahren und in PDFs konvertieren, während das exakte Layout und die Formatierung erhalten bleiben? Suchen Sie nicht weiter als IronPDF, das eine Vielzahl von äußerst beliebten dynamischen Webseitensystemen schnell in PDFs konvertiert.
#### PDF aus ASPX-Seiten
Hier ist ein kurzes Codebeispiel zur Konvertierung von ASPX-Seiten als PDF in Active Server Pages.
```cs
:path=/static-assets/pdf/content-code-examples/how-to/aspx-to-pdf-2.cs
```
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden [Leitfaden](https://ironpdf.com/how-to/aspx-to-pdf/).
#### XAML zu PDF (MAUI)
Für Entwickler, die plattformübergreifende Anwendungen erstellen möchten, ist .NET MAUI eine beliebte Wahl unter den Frameworks. IronPDF unterstützt vollumfänglich die Konvertierung von XAML in PDF mit wenigen Schritten.
```cs
:path=/static-assets/pdf/content-code-examples/how-to/xaml-to-pdf-maui-mainpage-xaml-cs.cs
```
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden [Leitfaden](https://ironpdf.com/how-to/xaml-to-pdf-maui/).
#### PDF-Berichte erstellen
Beim Erstellen von PDF-Berichten sind die genauen Abmessungen und das Format entscheidend. Somit ermöglicht IronPDF die nahtlose Erstellung von PDFs mit nur wenigen Schritten.
```cs
:path=/static-assets/pdf/content-code-examples/how-to/csharp-pdf-reports-render-html-file.cs
```
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden [Leitfaden](https://ironpdf.com/how-to/csharp-pdf-reports/).
#### PDFs in Blazor-Servern erstellen
IronPDF unterstützt .NET 6, und da es Projekttypen wie Blazor umfasst, bietet dieses Codebeispiel ein kurzes Beispiel dafür, wie Sie PDFs in Blazor Server erstellen können.
```csharp
@code {
// Model to bind user input
private InputHTMLModel _InputMsgModel = new InputHTMLModel();
private async Task SubmitHTML()
{
// Set your IronPDF license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
// Create a renderer to convert HTML to PDF
var render = new IronPdf.ChromePdfRenderer();
// Render the HTML input into a PDF document
var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);
var fileName = "iron.pdf";
// Create a stream reference for the PDF content
using var streamRef = new DotNetStreamReference(stream: doc.Stream);
// Invoke JavaScript function to download the PDF in the browser
await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
}
public class InputHTMLModel
{
public string HTML { get; set; } = "My new message";
}
}
```
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden [Leitfaden](https://ironpdf.com/how-to/blazor-tutorial/).
#### Razor zu PDF (Blazor Server)
Neben der Erstellung von PDFs auf Blazor-Servern unterstützt IronPDF auch die Erstellung von PDF-Dokumenten aus Razor-Komponenten innerhalb einer Blazor-Seite. Dies macht die Erstellung von PDF-Dateien und -Seiten viel einfacher.
```csharp
[Parameter]
public IEnumerable<PersonInfo> persons { get; set; }
public Dictionary<string, object> Parameters { get; set; } = new Dictionary<string, object>();
protected override async Task OnInitializedAsync()
{
persons = new List<PersonInfo>
{
new PersonInfo { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new PersonInfo { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new PersonInfo { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
}
private async void PrintToPdf()
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Apply text footer
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} - {time}",
DrawDividerLine = true,
RightText = "Page {page} of {total-pages}",
Font = IronSoftware.Drawing.FontTypes.Arial,
FontSize = 11
};
Parameters.Add("persons", persons);
// Render razor component to PDF
PdfDocument pdf = renderer.RenderRazorComponentToPdf<Person>(Parameters);
File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData);
}
```
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden [Leitfaden](https://ironpdf.com/how-to/razor-to-pdf-blazor-server/).
#### CSHTML zu PDF
Die Konvertierung von CSHTML (Razor) in PDF ermöglicht es Ihnen, direkt aus Ihren Webanwendungen professionelle, druckreife Dokumente zu erstellen. Dies ist nützlich für Rechnungen, Berichte, Verträge oder jegliche dynamische Inhalte. IronPDF unterstützt Razor Pages, MVC Core und MVC Framework sowie headless Rendering und ermöglicht eine nahtlose Integration der PDF-Erstellung in Ihre .NET-Anwendungen mit nur wenigen Codezeilen.
##### CSHTML zu PDF (Razor Pages)
```csharp
using IronPdf.Razor.Pages;
public IActionResult OnPostAsync()
{
persons = new List<Person>
{
new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
ViewData["personList"] = persons;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render Razor Page to PDF document
PdfDocument pdf = renderer.RenderRazorToPdf(this);
Response.Headers.Add("Content-Disposition", "inline");
return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");
}
```
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden [Leitfaden](https://ironpdf.com/how-to/cshtml-to-pdf-razor/).
##### CSHTML zu PDF (MVC Core)
```csharp
public async Task<IActionResult> Persons()
{
var persons = new List<Person>
{
new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
if (_httpContextAccessor.HttpContext.Request.Method == HttpMethod.Post.Method)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render View to PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Persons.cshtml", persons);
Response.Headers.Add("Content-Disposition", "inline");
// Output PDF document
return File(pdf.BinaryData, "application/pdf", "viewToPdfMVCCore.pdf");
}
return View(persons);
}
```
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden [Leitfaden](https://ironpdf.com/how-to/cshtml-to-pdf-mvc-core/).
##### CSHTML zu PDF (MVC Framework)
```csharp
public ActionResult Persons()
{
var persons = new List<Person>
{
new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
if (HttpContext.Request.HttpMethod == "POST")
{
// Provide the path to your view file
var viewPath = "~/Views/Home/Persons.cshtml";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render Razor view to PDF document
PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);
Response.Headers.Add("Content-Disposition", "inline");
// View the PDF
return File(pdf.BinaryData, "application/pdf");
}
return View(persons);
}
```
Für eine detailliertere Erklärung dieses Codebeispiels und um zusätzliche Funktionen zu erkunden, bitte verweisen Sie auf unser umfassendes [Handbuch](https://ironpdf.com/how-to/cshtml-to-pdf-mvc-framework/).
##### CSHTML zu PDF (Headlessly)
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/convert-pdf-20.cs
```
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden [Leitfaden](https://ironpdf.com/how-to/cshtml-to-pdf-razor-headlessly/).
## 2. Wie man HTML-zu-PDF-Einstellungen konfiguriert
Was die Bearbeitung von PDF-Dokumenten angeht, bietet IronPDF umfangreiche Anpassungsmöglichkeiten über die Eigenschaft `ChromePdfRenderer.RenderingOptions` für gerenderte PDFs.
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th><strong>Einstellungen</strong></th>
<th><strong>Beschreibung</strong></th>
<th><strong>Beispiel</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<span><code>Papiergröße</code></span>
</td>
<td>
<span>Seitendimensionen für bestehende PDFs einstellen (A4, Letter, Legal, etc.)</span>
</td>
<td>
<span><code>PdfPaperSize.A4</code></span>
</td>
</tr>
<tr>
<td>
<span><code>Papierorientation</code></span>
</td>
<td>
<span>Hoch- oder Querformat für vorhandene PDFs einstellen</span>
</td>
<td>
<span><code>PdfPaperOrientation.Landscape</code></span>
</td>
</tr>
<tr>
<td>
<span><code>MarginTop</code>/<code>Bottom</code>/<code>Left</code>/<code>Right</code></span>
</td>
<td>
<span>Seitenränder in Millimetern einstellen (Standard: 25mm)</span>
</td>
</tr>
<tr>
<td>
<span><code>CssMediaType</code></span>
</td>
<td>
<span>CSS für HTML zu PDF anzeigen oder drucken</span>
</td>
<td>
<span><code>PdfCssMediaType.Print</code></span>
</td>
</tr>
<tr>
<td>
<span><code>PrintHtmlBackgrounds</code></span>
</td>
<td>
<span>Hintergrundfarben/Bilder einfügen (Standard: true)</span>
</td>
<td>
<span>WAHR</span>
</td>
</tr>
<tr>
<td>
<span><code>EnableJavaScript</code></span>
</td>
<td>
<span>JavaScript vor dem Rendern von HTML-Inhalten ausführen</span>
</td>
<td>
<span>WAHR</span>
</td>
</tr>
<tr>
<td>
<span><code>WaitFor.RenderDelay</code></span>
</td>
<td>
<span>Wartezeit für dynamische HTML-Inhalte (ms)</span>
</td>
<td>
<span>500</span>
</td>
</tr>
</tbody>
</table>
</div>
Sehen Sie sich diesen Codeausschnitt für ein vollständiges Konfigurationsbeispiel zur Bearbeitung von PDF-Dokumenten an:
```csharp
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Apply print-specific CSS rules
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Set custom margins in millimeters
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
// Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Set paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Generate PDFs with all settings applied to HTML content
var htmlContent = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>";
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
pdfDocument.SaveAs("styled-output.pdf");
```
[[t:(Verwenden Sie PdfCssMediaType für sauberere, druckoptimierte Layouts im gerenderten PDF-Dateiformat. Verwenden Sie Screen, um genau das wiederzugeben, was Benutzer in ihrem Browser sehen.)]]
**VERWANDTE HOW-TO-ARTIKEL:**
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th>Maßgeschneiderte PDF-Konvertierung</th>
<th>PDF-Layout verfeinern</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<ul>
<li><a class="content-anchor" href="/how-to/rendering-options/">Entdecke alle PDF-Rendering-Methoden <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/custom-margins/">Anpassen der Ränder <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/color-grayscale/">Graustufen erzeugen <i class="fa-solid fa-arrow-right"></i></a></li>
</ul>
</td>
<td>
<ul>
<li><a class="content-anchor" href="/how-to/table-of-contents/">Hinweis zum Einfügen eines Inhaltsverzeichnisses <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/html-to-pdf-page-breaks/">Seitenumbrüche hinzufügen oder vermeiden <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="content-anchor" href="/how-to/viewport-zoom/">How to Fit to Paper & Zoom <i class="fa-solid fa-arrow-right"></i></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
### So legen Sie benutzerdefinierte HTTP-Header, Cookies und Anmeldeinformationen fest
Beim Rendern von URLs, die eine Authentifizierung oder spezifische Anfragemetadaten erfordern, ermöglicht IronPDF das Einbinden von Anmeldeinformationen, Session-Cookies und HTTP-Headern in die Anfrage. Dadurch können Intranet-Dashboards, eingeschränkte Berichte oder API-generierte Seiten direkt als PDF gerendert werden, ohne dass der HTML-Code separat abgerufen werden muss.
Für die Basis- oder NTLM-Authentifizierung setzen Sie ein `LoginCredentials`-Objekt auf dem Renderer. Für tokenbasierten oder sitzungsbasierten Zugriff übergeben Sie Cookies und Header über `RenderingOptions`, bevor Sie `RenderUrlAsPdf` aufrufen.
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword"
};
// Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123";
// Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/quarterly-report");
pdf.SaveAs("quarterly-report.pdf");
```
**VERWANDTE ANLEITUNGSARTIKEL:** <a class="content-anchor" href="/how-to/logins/">PDFs hinter Anmeldeauthentifizierung rendern<i class="fa-solid fa-arrow-right"></i></a> | <a class="content-anchor" href="/how-to/http-request-header/">Benutzerdefinierte HTTP-Anfrageheader<i class="fa-solid fa-arrow-right"></i></a>
### So konfigurieren Sie einen Proxy für die PDF-Darstellung
Beim Rendern von HTML, das externe Ressourcen hinter einem Unternehmensproxy lädt, übergeben Sie die Proxy-Adresse als dritten Parameter an `RenderHtmlAsPdf()`. Dies ist ein Methodenparameter, keine Eigenschaft von `ChromePdfRenderOptions` – er wird also pro Render-Aufruf gesetzt, nicht auf der Renderer-Instanz.
Bei authentifizierten Proxys sind die Anmeldedaten direkt in die URL im Format `http://user:pass@host:port` einzubetten. Sonderzeichen in Passwörtern mit `Uri.EscapeDataString()` URL-kodieren.
```cs
using IronPdf;
var renderer = new ChromePdfRenderer();
// Proxy is the third parameter — not a render option
PdfDocument pdf = renderer.RenderHtmlAsPdf(
"<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
baseUrlOrPath: null,
proxy: "http://proxy.corp.local:8080"
);
pdf.SaveAs("proxied-report.pdf");
```
Beachten Sie, dass `RenderUrlAsPdf()` keinen Proxy-Parameter akzeptiert. Um eine Live-URL hinter einem Proxy darzustellen, rufen Sie zunächst den HTML-Code mit `HttpClient` ab, das mit einem `WebProxy` konfiguriert ist, und übergeben Sie ihn dann an `RenderHtmlAsPdf()` mit dem Proxy-Parameter zum Laden der Assets.
**VERWANDTER ANLEITUNGSARTIKEL:** <a class="content-anchor" href="/how-to/proxy/">So konfigurieren Sie Proxy-Server für die PDF-Darstellung<i class="fa-solid fa-arrow-right"></i></a>
## 3. Wie man erweiterte PDF-Generierungs- & Sicherheitsfunktionen verwendet
Schalten Sie Unternehmensfunktionen für die HTML-zu-PDF-Konvertierung mit erweiterten Vorlagen, Async-Operationen und Sicherheitsfunktionen frei. Diese PDF-Bearbeitungsmethoden ermöglichen es Ihnen, PDF-Dokumente in großem Maßstab zu erstellen, sensible PDF-Dateien zu schützen und die Echtheit von Dokumenten zu gewährleisten, wenn Sie HTML in professionelles PDF-Format konvertieren.
### Wie man eine HTML-Vorlage für Batch-PDF-Erstellung generiert
**Einfaches Batching von PDF-Erstellung**
Batch-PDF-Erstellung ist unerlässlich für das effiziente Erzeugen mehrerer personalisierter PDF-Dokumente. Für grundlegende Szenarien eignet sich die Methode `String.Format` in C# am besten für einfache PDF-Bearbeitung.
```csharp
// Simple HTML templating with String.Format
string htmlTemplate = String.Format("<h1>Hello {0}!</h1>", "World");
// Results in HTML content: <h1>Hello World!</h1>
```
Für längere Vorlagen, wenn Sie PDF-Dokumente generieren müssen, verwenden Sie Platzhalterersetzung in Ihren HTML-Inhalten:
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-16.cs
```
**HTML zu PDF-Vorlage mit Handlebars.NET**
Verwenden Sie bei komplexen Vorlagen mit Schleifen und Bedingungen beim Konvertieren von HTML in PDF die erweiterte Vorlagenfunktion mit `Handlebars.NET`, um PDF-Dokumente mit dynamischen HTML-Inhalten zu erstellen.
```shell
# First, install Handlebars.NET for HTML to PDF templating
PM > Install-Package Handlebars.NET
```
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-21.cs
```
**VERWANDTER HOW-TO-Artikell:** <a class="content-anchor" href="https://github.com/rexm/Handlebars.NET">Erfahren Sie mehr über Handlebars.NET auf GitHub <i class="fa-solid fa-arrow-right"></i></a>
<div>
<h4 style="color: #181818;">PDF-Seitenumbrüche kontrollieren:</h4> Die Verwaltung des Seitenumbruchs in generierten PDF-Dokumenten gewährleistet professionelle, lesbare Layouts, wenn Sie HTML-Schnipsel konvertieren. Verwenden Sie CSS, um den Seitenumbruch in Ihren PDF-Dateien zu steuern.
</div>
```html
<!DOCTYPE html>
<html>
<head>
<style type="text/css" media="print">
.page {
page-break-after: always;
page-break-inside: avoid;
}
</style>
</head>
<body>
<div class="page">
<h1>Page 1 Content</h1>
</div>
<div class="page">
<h1>Page 2 Content</h1>
</div>
<div class="page">
<h1>Page 3 Content</h1>
</div>
</body>
</html>
```
### Wie man PDF mit der Async-Methode generiert
IronPDF liefert Enterprise-Performance mit voller Async- und Multithreading-Unterstützung für Ihre Anforderungen an die HTML-zu-PDF-Konvertierung, wenn Sie PDF-Dateien in großem Maßstab erzeugen müssen.
```csharp
using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
public class PdfGenerationService
{
// Async method for non-blocking PDF generation from HTML content
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
// Async HTML to PDF conversion preserves thread pool
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
// Return PDF files as byte array for web responses
return pdf.BinaryData;
}
// Concurrent batch PDF generation for multiple HTML strings
public async Task GenerateMultiplePdfsAsync(List<string> htmlVorlagen)
{
var renderer = new ChromePdfRenderer();
// Create parallel conversion tasks to generate PDF documents
var tasks = htmlVorlagen.Select(html =>
renderer.RenderHtmlAsPdfAsync(html)
);
// Await all PDF conversions simultaneously
var pdfs = await Task.WhenAll(tasks);
// Save generated PDF files from HTML content
for (int i = 0; i < pdfs.Length; i++)
{
pdfs[i].SaveAs($"document-{i}.pdf");
}
}
}
```
[[t:(Tipps zur Leistungsoptimierung bei der HTML-zu-PDF-Konvertierung)]]
- Verwenden Sie 64-Bit-Systeme für optimale PDF-Erzeugungsleistung.
- Sorgen Sie für ausreichende Serverressourcen, wenn Sie PDF-Dokumente generieren (vermeiden Sie unzureichende Gratisangebote)
- Gewähren Sie ausreichende RenderDelay für komplexes JavaScript in HTML-Inhalten.
- Verwenden Sie `ChromePdfRenderer`-Instanzen nach Möglichkeit wieder.
- Nutzen Sie die Speicheroptimierungen von v2025.9.4 für Batch-Operationen zur Reduzierung der Ressourcennutzung; testen Sie für reduzierte Dateigrößen mit wiederkehrenden benutzerdefinierten Kopf-/Fußzeilen.
**VERBUNDENE HOW-TO-Artikel:** <a class="content-anchor" href="/how-to/async/">Wie man PDFs mit Async und Multithreading erzeugt <i class="fa-solid fa-arrow-right"></i></a>
### Wie man erweiterte Sicherheitsfunktionen hinzufügt
**Wie man PDF-Dateien in .NET mit einem Passwort schützt**
Schützen Sie empfindliche generierte PDF-Dokumente mit Passwörtern und Berechtigungen, wenn Sie HTML-Inhalte in geschütztes PDF-Format konvertieren.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-24.cs
```
**Wie man digitale Signaturen zu PDF-Dateien hinzufügt**
Fügen Sie kryptografische Signaturen hinzu, um die Echtheit von PDF-Dokumenten zu gewährleisten, wenn Sie PDF-Dateien aus HTML-Inhalten generieren.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-25.cs
```
**VERBUNDENE HOW-TO-Artikel:** <a class="content-anchor" href="/how-to/signing/">Digitales Signieren von PDF-Dokumenten mit C# <i class="fa-solid fa-arrow-right"></i></a>
### So konvertieren Sie HTML-Formulare in ausfüllbare PDFs
Um standardmäßige HTML-Formularelemente in interaktive, ausfüllbare PDF-Formularfelder umzuwandeln, aktivieren Sie die Rendering-Option `CreatePdfFormsFromHtml`. Dadurch bleiben Texteingabefelder, Kontrollkästchen, Optionsfelder und Dropdown-Menüs im generierten PDF-Dokument als bearbeitbare Felder erhalten.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-26.cs
```
[[w:(Jedes Formularfeld in Ihrem HTML-Code muss ein eindeutiges `name`-Attribut haben. Doppelte Namen führen dazu, dass Felder im generierten PDF denselben Wert haben, was beim Ausfüllen des Formulars zu unerwartetem Verhalten führt.)]]
**VERWANDTER ANLEITUNGSARTIKEL:** <a class="content-anchor" href="/how-to/create-forms/">Wie man ausfüllbare PDF-Formulare in C# erstellt<i class="fa-solid fa-arrow-right"></i></a>
### Wie man bestimmte HTML-Elemente in PDF konvertiert
Um nur einen bestimmten Abschnitt einer Seite anstatt des gesamten Dokuments darzustellen, isolieren Sie das Zielelement vor dem Rendern. Der direkteste Ansatz nutzt die Rendering-Option `JavaScript`, um den Dokumenttext durch den Inhalt des Zielelements zu ersetzen, kombiniert mit `WaitFor.HtmlQuerySelector()`, um sicherzustellen, dass das Element vor der Extraktion vorhanden ist. Der folgende Ausschnitt bewahrt `document.head`, damit Stylesheets und Schriftarten übernommen werden – ohne diesen Schritt würden CSS-Regeln, die auf Vorfahren-Selektoren basieren, in der extrahierten PDF-Datei verloren gehen.
Für serverseitige Szenarien, in denen Sie Zugriff auf den rohen HTML-Code haben, extrahieren Sie das Zielfragment mit einem Parser wie AngleSharp und übergeben Sie es an `RenderHtmlAsPdf()` – eine JavaScript-Ausführung ist nicht erforderlich.
```cs
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-27.cs
```
**VERWANDTER ANLEITUNGSARTIKEL:** <a class="content-anchor" href="/how-to/html-element-to-pdf/">So konvertieren Sie HTML-Elemente und Teilseiten in PDF<i class="fa-solid fa-arrow-right"></i></a>
### Wie man authentifizierte Seiten als PDF rendert
Es gibt drei Mechanismen zum Rendern von Seiten, die eine Authentifizierung erfordern: Netzwerk-Anmeldeinformationen, benutzerdefinierte Cookies und HTTP-Anforderungsheader. Diese decken die häufigsten Authentifizierungsszenarien bei der Konvertierung geschützter Webinhalte in PDF ab.
**Anmeldeinformationen**
Verwenden Sie `ChromeHttpLoginCredentials` für die Basic-, Digest- oder NTLM-Authentifizierung, wenn Sie geschützte URLs in PDF konvertieren.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-28.cs
```
**Cookies und HTTP-Header**
Für tokenbasierte oder sitzungsbasierte Authentifizierung fügen Sie benutzerdefinierte Cookies und HTTP-Header direkt an die Rendering-Anfrage an.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-29.cs
```
[[t:(Bei HTML-Formular-basierten Anmeldungen (POST-Benutzername/Passwort) sollten Sie zunächst die Authentifizierung mit `HttpClient` durchführen und anschließend die resultierenden Cookies an das `CustomCookies`-Wörterbuch übergeben, um die geschützte Seite darzustellen.)]]
**VERWANDTER ANLEITUNGSARTIKEL:** <a class="content-anchor" href="/how-to/logins/">So konvertieren Sie HTML hinter der Anmeldeauthentifizierung in PDF<i class="fa-solid fa-arrow-right"></i></a>
### Wie generiere ich PDFs aus mehreren HTML-Snippets?
Um PDFs durch die Kombination von HTML-Snippets zu erzeugen, können Sie diese [zusammenführen](https://ironpdf.com/examples/merge-pdfs/) . Dadurch werden mehrteilige Berichte erstellt oder Inhalte aus verschiedenen Quellen kombiniert:
```cs
var renderer = new ChromePdfRenderer();
PdfDocument part1 = renderer.RenderHtmlAsPdf("<h1>Section 1</h1><p>First section content</p>");
PdfDocument part2 = renderer.RenderHtmlAsPdf("<h1>Section 2</h1><p>Second section content</p>");
var merged = PdfDocument.Merge(part1, part2);
merged.SaveAs("Merged.pdf");
// Alternative approach: copy specific pages
var combinedDoc = new PdfDocument();
combinedDoc.CopyPage(part1, 0); // Copy first page
combinedDoc.CopyPage(part2, 0); // Copy first page
combinedDoc.SaveAs("Combined.pdf");
```
Dies ist hilfreich beim Erstellen mehrteiliger Berichte aus verschiedenen HTML-Fragmenten. Sie können auch [Lesezeichen hinzufügen](https://ironpdf.com/how-to/bookmarks/) , um die Navigation zu verbessern.

### Wie konvertiere ich HTML in Web-APIs in PDF?
In ASP.NET Web API können PDFs generiert und zurückgegeben werden, ohne sie auf der Festplatte zu speichern. Hierfür wird [MemoryStream](https://ironpdf.com/how-to/pdf-to-memory-stream/) verwendet. Dieses Muster eignet sich ideal für [Blazor Anwendungen](https://ironpdf.com/how-to/blazor-tutorial/) und RESTful-Dienste:
```cs
[HttpGet("download")]
public IActionResult GetPdf()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Web Report</h1><p>Generated dynamically.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
var bytes = pdf.BinaryData;
// Optional: Add metadata
pdf.MetaData.Author = "API Service";
pdf.MetaData.CreationDate = DateTime.Now;
return File(bytes, "application/pdf", "report.pdf");
}
```
Dieses Muster eignet sich hervorragend für die serverseitige PDF-Generierung in .NET 10 Webanwendungen. Sie können [CSHTML-Ansichten](https://ironpdf.com/how-to/cshtml-to-pdf-mvc-core/) in MVC-Anwendungen integrieren.
### Wie fügt man Kopfzeilen, Wasserzeichen und Sicherheitseinstellungen hinzu?
#### Hinzufügen Professional Kopf- und Fußzeilen
Kopf- und Fußzeilen, die Seitenzahlen, Datumsangaben oder Markenlogos anzeigen, machen mehrseitige Dokumente wesentlich lesbarer und Professional. IronPDF verarbeitet sie als HTML-Fragmente, sodass Sie die volle CSS-Formatierung einschließlich Bildern und Markenfarben nutzen können:
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
MaxHeight = 50,
HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>",
BaseUrl = new Uri(@"file:///C:/assets/")
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
MaxHeight = 30,
HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>",
DrawDividerLine = true
};
renderer.RenderingOptions.MarginTop = 60;
renderer.RenderingOptions.MarginBottom = 40;
var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>");
pdf.SaveAs("report-with-headers.pdf");
```
Platzhalter wie `{page}` und `{total-pages}` werden bei der Darstellung automatisch ersetzt. Überprüfen Sie das [Kopf- und Fußzeilen-Tutorial](https://ironpdf.com/how-to/headers-and-footers/) für dynamische Datumsinjektion, Logoplatzierung und wechselnde Seitenstile.
#### Anwendung von Wasserzeichen, Verschlüsselung und digitalen Signaturen
Wasserzeichen schützen Entwürfe und vertrauliche Berichte. Passwortschutz und Berechtigungseinstellungen schränken ein, wer eine PDF-Datei drucken, kopieren oder bearbeiten darf. Digitale Signaturen fügen Verträgen und regulierten Dokumenten eine überprüfbare Authentizitätsebene hinzu. Sie können alle drei in einem einzigen Arbeitsablauf kombinieren:
```csharp
using IronPdf;
using System.Sicherheit.Cryptography.X509Certificates;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions.</p>");
// Watermark
pdf.ApplyWatermark(
"<div style='font-size:72px;color:red;opacity:0.3;'>DRAFT</div>",
rotation: 45,
opacity: 30
);
// Encryption and permissions
pdf.SicherheitSettings.UserPassword = "user123";
pdf.SicherheitSettings.OwnerPassword = "owner456";
pdf.SicherheitSettings.AllowUserPrinting = IronPdf.Sicherheit.PdfPrintSicherheit.NoPrint;
pdf.SicherheitSettings.AllowUserCopyPasteContent = false;
// Digital signature
var cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password");
var signature = new PdfSignature(cert)
{
SigningContact = "Jane Smith",
SigningLocation = "New York, NY",
SigningReason = "Contract Approval"
};
pdf.Sign(signature);
pdf.SaveAsRevision("signed-contract.pdf");
```
Lernen Sie mehr über [Wasserzeichentechniken](https://ironpdf.com/how-to/custom-watermark/) , [PDF-Sicherheitseinstellungen](https://ironpdf.com/how-to/pdf-permissions-passwords/) und [zertifikatsbasierte Signaturen](https://ironpdf.com/examples/digitally-sign-a-pdf/) einschließlich HSM-Integration für Hardware-Sicherheitsmodule.
## 4. Wie man HTML auf Cloud-Plattformen in PDF umwandelt
Die Bereitstellung der HTML-zu-PDF-Konvertierung in Cloud-Umgebungen erfordert eine spezifische Konfiguration für das Headless-Rendering, temporäre Dateipfade und die Ressourcenzuweisung. Dieser Abschnitt behandelt die gängigsten Cloud-Plattformen und containerisierten Bereitstellungen mit IronPDF.
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th>Plattform</th>
<th>Min Ressourcen</th>
<th>Paket</th>
<th>AutoConfig</th>
<th>Temporärer Pfad</th>
<th>Schlüssel-Fang</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<span>Azure App Service</span>
</td>
<td>
<span>Stufe B1 (Grundstufe)</span>
</td>
<td>
<span><code>IronPdf.Linux</code></span>
</td>
<td>
<span><code>true</code></span>
</td>
<td>
<span>/tmp</span>
</td>
<td>
<span>Kostenlose/Shared-Tarife scheitern – keine GPU, zu wenig Speicher</span>
</td>
</tr>
<tr>
<td>
<span>Azure Functions (Windows)</span>
</td>
<td>
<span>B1-Ebene</span>
</td>
<td>
<span><code>IronPdf</code></span>
</td>
<td>
<span><code>true</code></span>
</td>
<td>
<span>/tmp</span>
</td>
<td>
<span>Deaktivieren Sie die Option "Aus Paketdatei ausführen".</span>
</td>
</tr>
<tr>
<td>
<span>AWS Lambda</span>
</td>
<td>
<span>512 MB / 330 Sekunden Timeout</span>
</td>
<td>
<span><code>IronPdf.Linux</code></span>
</td>
<td>
<span><code>true</code></span>
</td>
<td>
<span>/tmp (erforderlich)</span>
</td>
<td>
<span>Das Standarddateisystem ist schreibgeschützt.</span>
</td>
</tr>
<tr>
<td>
<span>Docker (Ubuntu/Debian)</span>
</td>
<td>
<span>Bildabhängig</span>
</td>
<td>
<span><code>IronPdf.Linux</code></span>
</td>
<td>
<span><code>false</code></span>
</td>
<td>
<span>Standardbild</span>
</td>
<td>
<span>Auf <code>false</code> setzen – Dockerfile kümmert sich um Abhängigkeiten</span>
</td>
</tr>
</tbody>
</table>
</div>
### So stellen Sie die Bereitstellung in Azure vor
Bei der Bereitstellung in Azure Functions oder App Service deaktivieren Sie die GPU-Beschleunigung und stellen Sie sicher, dass Ihre Hosting-Ebene genügend Arbeitsspeicher für das Chrome-basierte Rendering bereitstellt. Fügen Sie diese Einstellungen beim Start der Anwendung hinzu, bevor Rendering-Aufrufe erfolgen.
Azure-Sandboxes laufen ohne grafische Oberfläche und ohne GPU-Zugriff, und die kostenlosen/gemeinsamen Tarife (F1, D1) verfügen nicht über die Ressourcen, die Chrome benötigt. Streben Sie eine **B1-Einstufung (Basis)** oder höher an.
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-30.cs
```
[[e:(Die Azure App Service Free- und Shared-Tarife (F1, D1) verfügen nicht über genügend Ressourcen für das Chrome-basierte PDF-Rendering. Verwenden Sie mindestens die Tarifstufe **B1 (Basic)** oder höher, um Speichermangel- und Prozesszeitüberschreitungsfehler zu vermeiden.)]]
**VERWANDTE EINSTIEGSLEITFADEN:** <a class="content-anchor" href="/get-started/azure/">So stellen Sie IronPDF auf Azure bereit<i class="fa-solid fa-arrow-right"></i></a>
### Wie man auf AWS Lambda bereitstellt
AWS Lambda erfordert eine Docker-basierte Bereitstellung für das Chrome-basierte PDF-Rendering. Das Standard-Lambda-Dateisystem ist schreibgeschützt, daher müssen alle temporären und Bereitstellungs-Pfade auf `/tmp` verweisen.
Konfigurieren Sie diese Einstellungen am Anfang Ihres Funktionshandlers, bevor Sie Rendering-Aufrufe durchführen.
```csharp
using Amazon.Lambda.Core;
using IronPdf;
public class PdfFunction
{
public string FunctionHandler(string input, ILambdaContext context)
{
// Lambda's only writable directory
var tmpPath = "/tmp/";
IronPdf.Installation.TempFolderPath = tmpPath;
IronPdf.Installation.CustomDeploymentDirectory = tmpPath;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Let IronPDF install Chrome dependencies on first cold start
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
context.Logger.LogLine("Rendering PDF...");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(input);
// Save to /tmp before uploading to S3 or returning
var outputPath = $"{tmpPath}output.pdf";
pdf.SaveAs(outputPath);
return outputPath;
}
}
```
[[i:(Konfigurieren Sie Ihre Lambda-Funktion mit mindestens **512 MB Arbeitsspeicher** und einem minimalen **Timeout von 60 Sekunden** . Das Rendering mit Chrome ist speicherintensiv, und Kaltstarts erfordern zusätzliche Initialisierungszeit für die eingebettete Browser-Engine.)]]
**VERWANDTE EINSTIEGSLEITFADEN:** <a class="content-anchor" href="/get-started/aws/">So stellen Sie IronPDF auf AWS Lambda bereit<i class="fa-solid fa-arrow-right"></i></a>
### Wie man mit Docker bereitstellt
Verwenden Sie für Docker-Bereitstellungen das NuGet-Paket `IronPdf.Linux`, um die Image-Größe zu reduzieren und das Herunterladen von Assets zur Laufzeit zu vermeiden. Dieses Paket enthält vorkonfigurierte, Linux-native Binärdateien, die für containerisierte Umgebungen optimiert sind.
Setzen Sie `LinuxAndDockerDependenciesAutoConfig = false`, wenn Ihre Dockerfile die Abhängigkeiten der gemeinsam genutzten Bibliotheken von Chrome bereits über `apt-get` installiert. Die automatische Installation zur Laufzeit ist in diesem Fall überflüssig und kann zu Berechtigungsfehlern oder längeren Kaltstarts führen.
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th>Plattform</th>
<th>Paket</th>
<th>Schlüsselkonfiguration</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<span>Ubuntu 22.04 / Debian</span>
</td>
<td>
<span><code>IronPdf.Linux</code></span>
</td>
<td>
<span>Standardeinstellung – funktioniert sofort nach dem Auspacken</span>
</td>
</tr>
<tr>
<td>
<span>Alpine Linux</span>
</td>
<td>
<span><code>IronPdf.Linux</code></span>
</td>
<td>
<span>Installieren Sie Chromium über eine APK-Datei in der Dockerfile.</span>
</td>
</tr>
<tr>
<td>
<span>Amazon Linux 2</span>
</td>
<td>
<span><code>IronPdf.Linux</code></span>
</td>
<td>
<span>Verwenden Sie <code>LinuxAndDockerDependenciesAutoConfig = true</code></span>
</td>
</tr>
<tr>
<td>
<span>Windows-Container</span>
</td>
<td>
<span><code>IronPdf</code></span>
</td>
<td>
<span>Keine zusätzliche Konfiguration erforderlich</span>
</td>
</tr>
</tbody>
</table>
</div>
<br />
Ein minimales mehrstufiges Dockerfile für ein Ubuntu/Debian-basiertes Image:
```dockerfile
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
COPY . .
RUN dotnet publish -c Release -o /out
FROM mcr.microsoft.com/dotnet/aspnet:8.0
# Install Chrome dependencies for PDF rendering
RUN apt-get update && apt-get install -y \
libglib2.0-0 libnss3 libatk1.0-0 libatk-bridge2.0-0 \
libcups2 libdrm2 libxkbcommon0 libxcomposite1 \
libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 \
libcairo2 libasound2 libxshmfence1 && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /out .
ENTRYPOINT ["dotnet", "MyApp.dll"]
```
<br />
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-33.cs
```
**VERWANDTE EINSTIEGSLEITFADEN:** <a class="content-anchor" href="/get-started/ironpdf-docker/">So verwenden Sie IronPDF mit Docker<i class="fa-solid fa-arrow-right"></i></a>
### Wie kann die HTML-zu-PDF-Leistung in .NET Core optimiert und skaliert werden?
IronPDFs Chromium-Engine rendert die meisten Seiten bereits in < 1 s auf moderner Hardware, aber der Durchsatz kann durch **Batch-Verarbeitung, Aktivierung von Multithreading und Reduzierung des Headless Chrome-Overheads** vervielfacht werden. Die folgenden Tipps gelten gleichermaßen für alle .NET-Versionen.
#### 1. Batch-Rendern in einem Hintergrund-Thread-Pool
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-12.cs
```
- `ChromePdfRenderer` is **[thread-safe](/examples/threading/)**; eine einzelne Instanz kann Dutzende gleichzeitiger Aufgaben ohne Deadlocks bedienen.
- `Parallel.ForEach` saturiert jeden CPU-Kern; typische Server sehen 4–6× Durchsatzsteigerungen im Vergleich zu einer Einzel-Thread-Schleife.
- Wenn sich ASP.NET-Anfragen stauen, [verlagern Sie schwere Renders zu einem gehosteten Hintergrunddienst oder einer Nachrichtenwarteschlange ein](https://stackoverflow.com/questions/65237160/ironpdf-deadlocks-when-running-in-parallel), um die Antwortzeiten niedrig zu halten.
#### 2. Startkosten für Headless Chrome reduzieren
IronPDF liefert sein eigenes Chromium-Build, aber jeder Render verursacht eine kleine Startsteuer. Pooling hilft, und **Linux-Container** müssen zwei native libs enthalten:
```dockerfile
RUN apt-get update && \
apt-get install -y --no-install-recommends libnss3 libatk1.0-0
```
Das Fehlen einer der Bibliotheken manifestiert sich als `libnss3.so not found` Fehler in den Docker-Protokollen.
[Empfohlene Chrome-Flags (automatisch von IronPDF angewendet)](https://stackoverflow.com/questions/66947545/chrome-headless-not-working-as-root-with-no-sandbox) beinhalten `--disable-gpu` und `--no-sandbox`, um Speicher- und Root-User-Probleme in Containern zu reduzieren.
#### 3. Warten Sie auf spätes JavaScript mit `RenderDelay` oder `WaitFor`
Seiten, die Zähler animieren oder Daten nach `DOMContentLoaded` abrufen, benötigen möglicherweise eine kurze Verzögerung:
```csharp
renderer.RenderingOptions.RenderDelay = 200; // ms
// OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')";
```
Siehe das dedizierte **[WaitFor-Tutorial](/how-to/waitfor/)** für benutzerdefinierte Versprechen und DOM-Abfragen.
#### 4. Debug-Logging für eine Anfrage aktivieren
```csharp
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-15.cs
```
Live DevTools-Spuren zeigen fehlende Schriftarten, 404-Bilder und Zeitsereignisse ohne erneutes Kompilieren des Codes.
#### 5. PDF-Vorlagen wiederverwenden anstatt neu zu rendern
Für Rechnungsdurchläufe, [erstellen Sie ein **Vorlagen-PDF** mit Platzhaltern](/troubleshooting/ironpdf-performance-assistance/) wie `[[name]]` und führen Sie einen Textaustausch durch, anstatt komplexes HTML neu zu erstellen. Es ist 10× schneller und speicherschonend.
#### Weiterführende Lektüre
- How-to – [PDFs mit async / Multithreading erstellen](/how-to/async/)
- Fehlerbehebung – [Performance Assistance Center](/troubleshooting/ironpdf-performance-assistance/)
- Beispiel – [Threaded Rendering Demo](/examples/threading/)
---
## 5. Vergleich von IronPDF mit anderen .NET PDF-Bibliotheken
IronPDF ist die Lösung der Wahl für viele Teams, wenn es um C#-PDF-Erzeugung geht, dank seiner robusten Chrom-basierten Rendering-Engine, benutzerfreundlichen APIs und häufigen Produktverbesserungen. Lassen Sie uns IronPDF mit anderen PDF-Konvertern vergleichen, um die beste Lösung für Ihre PDF-Erzeugungsanforderungen zu finden.
### Schnelle Entscheidungsmatrix: IronPDF gegenüber anderen .NET PDF-Konvertern
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-medium [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-4 [&_td]:align-top [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_td_ul]:m-0 [&_td_ul]:list-none [&_td_ul]:p-0 [&_td_ul>li+li]:mt-2">
<thead>
<tr>
<th>Lösung</th>
<th>Wann zu verwenden</th>
<th>Am besten geeignet für</th>
</tr>
</thead>
<tbody>
<tr style="background-color: #f8fdff;">
<td>
<span><strong>IronPDF</strong></span>
</td>
<td>
<span>Konvertierung moderner Websites/HTML in PDF mit exakter visueller Treue.</span>
</td>
<td>
<span>Unternehmensanwendungen, die eine zuverlässige HTML-Rendering-Engine, dynamische Inhalte und professionellen Support erfordern.</span>
</td>
</tr>
<tr>
<td>
<span>wkhtmltopdf</span>
</td>
<td>
<span>Einfache HTML-Konvertierung in unkritischen Anwendungen, bei denen eine veraltete Darstellung akzeptabel ist.</span>
</td>
<td>
<span>Grundlegende Dokumentenerierung mit Legacy HTML/CSS.</span>
</td>
</tr>
<tr>
<td>
<span>Syncfusion</span>
</td>
<td>
<span>Wenn Sie bereits in das Syncfusion-Ökosystem investiert haben oder für eine kostenlose Community-Lizenz in Frage kommen.</span>
</td>
<td>
<span>Organisationen, die mehrere Syncfusion-Komponenten verwenden.</span>
</td>
</tr>
<tr>
<td>
<span>Aspose.PDF</span>
</td>
<td>
<span>Komplexe PDF-Bearbeitung, wenn die Qualität der HTML-Darstellung weniger wichtig ist.</span>
</td>
<td>
<span>Umfassende PDF-Bearbeitungsfunktionen, die über die HTML-Konvertierung hinausgehen.</span>
</td>
</tr>
</tbody>
</table>
</div>
**VERWANDTE VERGLEICHE:**
<ul>
<li><a class="content-anchor" href="/competitors/syncfusion-vs-ironpdf/">Vergleich IronPDF und Syncfusion <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="mt-2 content-anchor" href="/competitors/aspose-vs-ironpdf/">Vergleich IronPDF und Aspose <i class="fa-solid fa-arrow-right"></i></a></li>
</ul>
### Detaillierter Vergleich: IronPDF gegenüber anderen .NET PDF-Konvertern
<div>
<div class="my-6 max-w-full overflow-x-auto">
<table class="w-full min-w-[1000px] border-separate border-spacing-0 overflow-clip rounded-lg border border-[#D9E5E9] [&_th]:border [&_th]:border-[#D9E5E9] [&_th]:px-3 [&_th]:py-4 [&_th]:text-center [&_th]:text-sm [&_th]:font-bold [&_th]:text-[#181818] [&_td]:border [&_td]:border-[#D9E5E9] [&_td]:px-3 [&_td]:py-3 [&_td]:text-center [&_td]:align-middle [&_td]:text-[13.5px]/[1.5] [&_td]:text-[#181818] [&_a]:underline [&_.iron-col]:bg-[#F1F9FB] [&_.recommended]:block [&_.recommended]:text-[11px] [&_.recommended]:font-bold [&_.recommended]:text-[#E01A59] [&_.col-name]:block [&_.col-name]:text-sm [&_.col-name]:font-bold [&_.section-row_td]:bg-[#F5F8FA] [&_.section-row_td]:font-bold [&_.section-row_td]:uppercase [&_.section-row_td]:tracking-wide [&_.section-row_td]:text-xs [&_.section-row_td]:text-[#5A6B77] [&_.chip]:inline-block [&_.chip]:whitespace-nowrap [&_.chip]:rounded [&_.chip]:px-2 [&_.chip]:py-0.5 [&_.chip]:text-xs [&_.chip]:font-semibold [&_.chip-full]:bg-[#E8F6F1] [&_.chip-full]:text-[#44806B] [&_.chip-good]:bg-[#E8F6F1] [&_.chip-good]:text-[#44806B] [&_.chip-free]:bg-[#E8F6F1] [&_.chip-free]:text-[#44806B] [&_.chip-partial]:bg-[#FFF2DA] [&_.chip-partial]:text-[#A66E0A] [&_.chip-limited]:bg-[#FFF2DA] [&_.chip-limited]:text-[#A66E0A] [&_.chip-no]:bg-[#FFE1E2] [&_.chip-no]:text-[#A8181D] [&_.chip-iron]:bg-[#DEEFFC] [&_.chip-iron]:text-[#1D629B] [&_.price-val]:block [&_.price-val]:font-bold [&_.price-note]:mt-0.5 [&_.price-note]:block [&_.price-note]:text-[11px] [&_.price-note]:leading-snug [&_.price-note]:text-[#5A6B77] [&_.winner-tag]:ml-1 [&_.winner-tag]:inline-block [&_.winner-tag]:rounded [&_.winner-tag]:bg-[#E8F6F1] [&_.winner-tag]:px-1.5 [&_.winner-tag]:py-0.5 [&_.winner-tag]:text-[11px] [&_.winner-tag]:font-bold [&_.winner-tag]:text-[#44806B]">
<thead>
<tr>
<th>Merkmal</th>
<th class="iron-col">
<span class="recommended">★ Empfohlen:</span>
<span class="col-name">IronPDF</span>
</th>
<th>wkhtmltopdf</th>
<th>iText</th>
<th>Aspose.PDF</th>
<th>Syncfusion</th>
<th>Apryse</th>
<th>SelectPdf</th>
<th>Spire.PDF</th>
<th>PDFSharp</th>
<th>QuestPDF</th>
</tr>
</thead>
<tbody>
<tr class="section-row">
<td colspan="11">Rendering & Konvertierung</td>
</tr>
<tr>
<td>Rendering-Genauigkeit</td>
<td class="iron-col">Pixelperfekt – <span class="winner-tag">das Beste</span></td>
<td>Druckansicht</td>
<td>Nur programmatisch</td>
<td>Gut</td>
<td>Gut</td>
<td>Gut</td>
<td>Gut</td>
<td>Niedriges Niveau</td>
<td>Keine Darstellung</td>
<td>Code-First-Layout</td>
</tr>
<tr>
<td>HTML5-Unterstützung</td>
<td class="iron-col"><span class="chip> chip-full">Voll</span></td>
<td><span class="chip> chip-limited">Veraltet</span></td>
<td><span class="chip> chip-partial">Hinzufügen Auf</span></td>
<td><span class="chip> chip-partial">Teilweise</span></td>
<td><span class="chip> chip-full">Voll</span></td>
<td><span class="chip> chip-partial">Modul</span></td>
<td><span class="chip> chip-full">Voll</span></td>
<td><span class="chip> chip-limited">Beschränkt</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-no">Nein (Code-First)</span></td>
</tr>
<tr>
<td>CSS3-Unterstützung</td>
<td class="iron-col"><span class="chip> chip-full">Voll</span></td>
<td><span class="chip> chip-limited">Beschränkt</span></td>
<td><span class="chip> chip-partial">Hinzufügen Auf</span></td>
<td><span class="chip> chip-partial">Teilweise</span></td>
<td><span class="chip> chip-full">Voll</span></td>
<td><span class="chip> chip-partial">Modul</span></td>
<td><span class="chip> chip-full">Voll</span></td>
<td><span class="chip> chip-limited">Beschränkt</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-no">Nein (Code-First)</span></td>
</tr>
<tr>
<td>JavaScript-Ausführung</td>
<td class="iron-col">
<span class="chip> chip-full">Vollständig</span>
<span class="winner-tag">Best</span>
</td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-limited">Umstritten</span></td>
<td><span class="chip> chip-partial">Beschränkt</span></td>
<td><span class="chip> chip-partial">Beschränkt</span></td>
<td><span class="chip> chip-partial">Beschränkt</span></td>
<td><span class="chip> chip-limited">Sehr begrenzt</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
</tr>
<tr>
<td>HTML→PDF (Modernes Layout)</td>
<td class="iron-col">Eingebettetes Chromium <span class="winner-tag">Best</span></td>
<td>Qt WebKit (veraltet)</td>
<td>Kostenpflichtiges Zusatzangebot</td>
<td>Teilweise; JS umstritten</td>
<td>Blink Engine</td>
<td>Erfordert Modul</td>
<td>Vollständiges HTML→PDF</td>
<td>Bildbasiert</td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-no">Kein HTML-Renderer</span></td>
</tr>
<tr>
<td>PDF→Bildwiedergabe</td>
<td class="iron-col"><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-partial">Ja</span></td>
<td><span class="chip> chip-partial">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-partial">Beschränkt</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-partial">Nur eigene Dokumente</span></td>
</tr>
<tr class="section-row">
<td colspan="11">Dokumentenvorgänge</td>
</tr>
<tr>
<td>PDFs programmatisch generieren</td>
<td class="iron-col"><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-partial">Nur HTML</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-good">Grundlegend</span></td>
<td><span class="chip> chip-full">Ja (Fluent API)</span></td>
</tr>
<tr>
<td>Zusammenführen, Aufteilen & Neu anordnen</td>
<td class="iron-col"><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-partial">Beschränkt</span></td>
<td><span class="chip> chip-full">Ja</span></td>
</tr>
<tr>
<td>Kopfzeilen / Fußzeilen / Seitenzahlen</td>
<td class="iron-col">HTML/Text/Bild <span class="winner-tag">am besten</span></td>
<td>Begrenzt</td>
<td>Ja</td>
<td>Über Veranstaltungen</td>
<td>Über Veranstaltungen</td>
<td>Ja</td>
<td>Vorlagen</td>
<td>Handbuch</td>
<td>Nur Handbuch</td>
<td><span class="chip> chip-full">Spielautomaten erster Klasse</span></td>
</tr>
<tr>
<td>Wasserzeichen & Stempel</td>
<td class="iron-col"><span class="chip> chip-full">Text & Bild</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-partial">Beschränkt</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-full">Ja (Overlays)</span></td>
</tr>
<tr>
<td>Text aus PDFs extrahieren</td>
<td class="iron-col"><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-good">Grundlegend</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
</tr>
<tr>
<td>OCR für gescannte PDFs</td>
<td class="iron-col">Über IronOCR <span class="winner-tag">Integrated</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-partial">Hinzufügen Auf</span></td>
<td><span class="chip> chip-partial">Separates Produkt</span></td>
<td><span class="chip> chip-partial">Hinzufügen Auf</span></td>
<td><span class="chip> chip-partial">Hinzufügen Auf</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-partial">Workaround</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
</tr>
<tr class="section-row">
<td colspan="11">Sicherheit und Konformität</td>
</tr>
<tr>
<td>Digitale Signaturen</td>
<td class="iron-col"><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-good">Beispielcode</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-no">Nicht dokumentiert</span></td>
</tr>
<tr>
<td>PDF/A-Konformität</td>
<td class="iron-col"><span class="chip> chip-full">Ja (PDF/A-3B)</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-full">Vollständiges PDF/A</span></td>
<td><span class="chip> chip-full">Validieren & Erstellen</span></td>
<td><span class="chip> chip-good">Erfordert ein natives SDK</span></td>
<td><span class="chip> chip-good">PDF-Konformität</span></td>
<td><span class="chip> chip-no">NEIN</span></td>
<td><span class="chip> chip-full">Ja</span></td>
<td><span class="chip> chip-partial">Beschränkt</span></td>
<td><span class="chip> chip-full">PDF/A-2x & 3x</span></td>
</tr>
<tr class="section-row">
<td colspan="11">Plattform- und Entwicklererfahrung</td>
</tr>
<tr>
<td>Plattformübergreifend</td>
<td class="iron-col">Windows · Linux · macOS <span class="winner-tag">Alle 3</span></td>
<td>Abhängig von Binärdateien</td>
<td>.NET Standard 2.0</td>
<td>Linux-Zusatzkonfiguration</td>
<td>Blink + .NET Server</td>
<td>Natives SDK</td>
<td>Nur für Windows *</td>
<td>Begrenzte Linux-Dokumentation</td>
<td>Windows-orientiert</td>
<td><span class="chip> chip-full">Windows/Linux/macOS</span></td>
</tr>
<tr>
<td>Cloud- und Docker-Bereitstellung</td>
<td class="iron-col">Azure · AWS · Docker <span class="winner-tag">Beste</span></td>
<td>Komplex; Altlasten</td>
<td>Mehrere Pakete</td>
<td>Teilweise; Container</td>
<td>Blink Extras benötigt</td>
<td>Einheimische Abteilungen</td>
<td>Nur für Windows</td>
<td>Begrenzte Informationen</td>
<td>Einfach; leicht</td>
<td><span class="chip> chip-full">Docker/K8s; Lokal</span></td>
</tr>
<tr class="section-row">
<td colspan="11">Support & Dokumentation</td>
</tr>
<tr>
<td>Dokumentation</td>
<td class="iron-col">Umfangreich + <span class="winner-tag">Kopieren</span> /Einfügen</td>
<td>Teilweise CLI-Dokumentation</td>
<td>Umfangreich; KB</td>
<td>Breit; GitHub</td>
<td>Hilfezentrum</td>
<td>Sprachübergreifender Katalog</td>
<td>Leitfäden für Einsteiger</td>
<td>Programm</td>
<td>Community-Leitfäden</td>
<td><span class="chip> chip-full">Strukturierte + Begleit-App</span></td>
</tr>
<tr>
<td>Entwicklerunterstützung</td>
<td class="iron-col">24/7 Ingenieure <span class="winner-tag">Beste</span></td>
<td>Nur für die Community</td>
<td>Abonnement inklusive</td>
<td>Forum + Bezahlt</td>
<td>24/5 Direct-Trac</td>
<td>Kommerziell</td>
<td>E-Mail</td>
<td>Forum + E-Mail</td>
<td>Nur für die Community</td>
<td><span class="chip> chip-partial">Community + GitHub</span></td>
</tr>
<tr class="section-row">
<td colspan="11">Lizenzierung & Preisgestaltung</td>
</tr>
<tr>
<td>Lizenzmodell</td>
<td class="iron-col"><span class="chip> chip-iron">Ewige</span></td>
<td><span class="chip> chip-free">Open Source</span></td>
<td><span class="chip> chip-partial">AGPL / Abonnement</span></td>
<td><span class="chip> chip-good">Ewige</span></td>
<td><span class="chip> chip-partial">Jahresabonnement</span></td>
<td><span class="chip> chip-partial">Kundenspezifisch / Verbrauch</span></td>
<td><span class="chip> chip-good">Ewige</span></td>
<td><span class="chip> chip-partial">Jahresabonnement</span></td>
<td><span class="chip> chip-free">Kostenlos (MIT)</span></td>
<td><span class="chip> chip-free">MIT Kostenlose / Bezahlte Stufen</span></td>
</tr>
<tr>
<td>Startpreis</td>
<td class="iron-col">
<span class="price-val iron-price">
<a href="https://ironpdf.com/licensing/">$liteLicense</a>
</span>
<span class="price-note">Unbefristet · 1 Entwickler</span>
</td>
<td><span class="price-val"> style="color:#16a34a">Frei</span></td>
<td>
<span class="price-val">~45.000 $/Jahr</span>
<span class="price-note">Individuelles Angebot</span>
</td>
<td>
<span class="price-val">1.175 $+</span>
<span class="price-note">pro Entwickler</span>
</td>
<td>
<span class="price-val">995 $/Jahr</span>
<span class="price-note">Abonnement · Kostenlos <1 Mio. $</span>
</td>
<td>
<span class="price-val">~9.000 $+/Jahr</span>
<span class="price-note">Individuelles Angebot</span>
</td>
<td>
<span class="price-val">499 $+</span>
<span class="price-note">Unbefristet</span>
</td>
<td>
<span class="price-val">999 $/Jahr</span>
<span class="price-note">Jahresabonnement</span>
</td>
<td><span class="price-val"> style="color:#16a34a">Frei</span></td>
<td>
<span class="price-val"> style="color:#16a34a">Kostenlose</span>
<span class="price-note">Community MIT <1 Mio. $</span>
</td>
</tr>
<tr>
<td>Kostenlose Testversion</td>
<td class="iron-col">30 Tage · Voller Funktionsumfang <span class="winner-tag">· Keine Einschränkungen</span></td>
<td>Nicht verfügbar (kostenlos)</td>
<td>30 Tage</td>
<td>Ja (mit Wasserzeichen)</td>
<td>Community <$1M Rev</td>
<td>Ja</td>
<td>Community (5 Seiten)</td>
<td>Kostenlos (10 Seiten)</td>
<td>Nicht verfügbar (kostenlos)</td>
<td>N/A (MIT Free <$1M)</td>
</tr>
<tr>
<td>Preistransparenz</td>
<td class="iron-col">Veröffentlicht und am <span class="winner-tag">besten</span></td>
<td>Open Source</td>
<td><span class="chip> chip-limited">Komplex AGPL</span></td>
<td><span class="chip> chip-partial">Viele Ebenen</span></td>
<td><span class="chip> chip-good">Angebot anfordern</span></td>
<td><span class="chip> chip-limited">Keine Preisangaben veröffentlicht</span></td>
<td><span class="chip> chip-good">Veröffentlicht</span></td>
<td><span class="chip> chip-good">Veröffentlicht</span></td>
<td>MIT-Lizenz; Keine Einschränkungen</td>
<td>MIT; Vertrauensbasiert</td>
</tr>
</tbody>
</table>
</div>
</div>
### Vergleich der HTML-zu-PDF-Konvertierung im echten Leben: Rendering der Reddit-Startseite
Um die Qualität der Ausgabe-PDF zu bewerten, haben wir diese Bibliotheken mit der Startseite von Reddit getestet, die dynamische Webinhalte, modernes CSS und HTML-Elemente von JavaScript enthält. Diese Seite dient als ideales Testbeispiel für die Ausgabe-PDF-Erstellung.
https://www.reddit.com/

**IronPDF**

IronPDF liefert pixelgenaue Ergebnisse, indem es alle dynamischen Webinhalte, modernen Webfonts, Styling und interaktive Elemente genau so erhält, wie sie in Chrome angezeigt werden - alles in nur wenigen Codezeilen.
**Syncfusion**

Syncfusion gerenderte PDF mit den meisten Abschnitten und Stylings fehlt, insbesondere mit dynamischen Inhalten. Ursprünglich durch Reddits Sicherheit blockiert. Bessere Ergebnisse erfordern umfangreiche Anpassungen der Befehlszeile, dennoch bleibt das Ergebnis unvollständig.
**Aspose.PDF**

Aspose.PDF erforderte zunächst einen manuellen HTML-Download (keine direkte URL-Unterstützung). Nach der Konvertierung fehlte es der Ausgabe an ordentlichem Format und fast alle Inhaltsabschnitte fehlten, was sie für moderne Webs mit dynamischen Inhalten ungeeignet machte.
**wkhtmltopdf**

wkhtmltopdf wurde schnell abgeschlossen, erzeugte aber eine einfache, statische Seite, die wichtige Inhalte wie Live-Updates, dynamische Elemente und interaktive Abschnitte vermisste. Dies demonstriert die Inkompatibilität von wkhtmltopdf mit modernen, JavaScript-gesteuerten Websites.
### Schlussfolgerung zur Leistung und Ausgabe-PDF-Qualität
Für .NET-Entwickler, die einen zuverlässigen HTML-zu-PDF-Konverter benötigen, sticht IronPDF mit minimalem Code, einfach zu verwendenden APIs und häufigen Produktverbesserungen heraus.
In einem realen Test mit Webinhalten lieferte es die schnellsten und genausten Ergebnisse, während Syncfusion hinterherhinkte, Aspose zusätzliche Schritte erforderte und wkhtmltopdf moderne Stylings verpasste. IronPDF bietet das beste Gleichgewicht zwischen Geschwindigkeit, Genauigkeit und Einfachheit für heutige HTML-zu-PDF-Konvertierungsworkflows.
**Bitte beachten:**
Aspose, Syncfusion und wkhtmltopdf sind Warenzeichen ihrer jeweiligen Eigentümer. Diese Seite ist nicht mit ihnen verbunden oder wird von ihnen unterstützt. Alle Namen, Logos und Marken gehören ihren Eigentümern und Vergleiche basieren auf öffentlich verfügbaren Informationen zum Zeitpunkt des Schreibens.
### Zusammenfassung
Diese Anleitung deckte alles ab, was zum Konvertieren von HTML zu PDF in .NET erforderlich ist: von der grundlegenden Zeichenfolgenkonvertierung bis zu erweiterten Funktionen wie asynchrone Verarbeitung, digitale Signaturen und Stapelerzeugung. Wir haben drei Konvertierungsmethoden demonstriert, wesentliche Konfigurationen, erweiterte Funktionen und Sicherheitseinstellungen sowie IronPDF mit anderen Bibliotheken im Rahmen eines realen Tests der dynamischen Dokumenterzeugung verglichen.
Während Konkurrenten Schwierigkeiten mit modernen Websites hatten oder komplexe Umgehungsmöglichkeiten erforderlich waren, lieferte IronPDF fehlerfreie Ergebnisse mit minimalem Code und einer leistungsstarken Rendering-Engine.
Bereit, Ihren PDF-Workflow zu vereinfachen und vielseitige PDF-Erstellung mit nur wenigen Codezeilen zu erleben? Installieren Sie IronPDF über den NuGet-Paket-Manager (oder wählen Sie NuGet-Paket verwalten in Visual Studio) und konvertieren Sie noch heute Ihr erstes HTML zu PDF.
[Starten Sie Ihre kostenlose 30-tägige Testversion](/licensing/) für Produkttests ohne Wasserzeichen. [Flexible Lizenzierung](/licensing/) beginnt bei `$liteLicense` mit transparenten Team-Preisen, die sich Ihren Anforderungen anpassen.
<a class="content-anchor" href="/licensing/">IronPDF-Lizenzierung anzeigen <i class="fa-solid fa-arrow-right"></i></a>
## 6. Fehlerbehebung und technischer Support
Haben Sie Probleme mit den folgenden Fehlern bei der HTML-zu-PDF-Konvertierung? IronPDF bietet 24/7 Ingenieurunterstützung über das Chat-Widget auf [https://ironpdf.com/](/)
### Schnelle Lösungen für häufige Fehler
- Langsames erstes Rendering? Normal. Chrome initialisiert in 2-3s, dann beschleunigt es.
- Cloud-Probleme? Verwenden Sie mindestens Azure B1 oder gleichwertige Ressourcen.
- Fehlende Assets? Basiswege setzen oder als Base64 einbetten.
- Fehlende Elemente? Fügen Sie `RenderDelay` für die JavaScript-Ausführung hinzu.
- Speicher beim Rendern? Aktualisieren Sie auf v2025.9.4 für Korrekturen bei HTML-zu-PDF, Stempeln und Kopfzeilen/Fußzeilen.
- Formularfeldprobleme (z. B. lange Textbereiche, Kontrollkästchen)? Behoben in v2025.7.17; sichere einzigartige Namen für Kontrollkästchen.
- Benutzerspezifisches Header/Footer-Überlappen oder spezielle Zeichen beschädigt? Gelöst in v2025.8.8; testen Sie Wortumbruch und Metadaten.
### Hilfe von den Ingenieuren, die IronPDF entwickelt haben, 24/7
<ul>
<li><a class="content-anchor" href="/troubleshooting/engineering-request-pdf/">Umfassender Leitfaden zur Fehlersuche <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="mt-2 content-anchor" href="/troubleshooting/ronpdf-leistung-unterstuetzung/">Leistungsoptimierungsstrategien <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="mt-2 content-anchor" href="/troubleshooting/engineering-request-pdf/">Engineering Support-Anfragen <i class="fa-solid fa-arrow-right"></i></a></li>
<li><a class="mt-2 content-anchor" href="/fehlersuche/schnell-ironpdf-fehlersuche/">Schnell-Checkliste zur Fehlersuche <i class="fa-solid fa-arrow-right"></i></a></li>
</ul>
*as-heading:2(Nächste Schritte)*
<div class="my-6 grid grid-cols-1 gap-4 pb-10 sm:grid-cols-2 lg:grid-cols-3">
<div class="group flex h-full flex-col gap-8 rounded-lg border border-[#E7EEF0] bg-white p-6 transition-all duration-200 hover:shadow-[0_4px_12px_0_rgb(24_24_24/0.08)]">
<span class="flex flex-col gap-4">
<span class="flex h-8 max-w-10 items-center justify-center text-[32px] text-[#678CB1]"><i class="fa-duotone fa-solid fa-graduation-cap"></i></span>
<span class="text-[15px]/[1.6] font-bold text-[#181818]">Zusammenführen oder Teilen von PDF-Dokumenten</span>
</span>
<a href="/how-to/headers-and-footers/" class="mt-auto flex items-center gap-2 text-sm/[1.4] font-bold text-[#2A95D5] no-underline transition-colors duration-200 group-hover:text-[#E01A59]">Siehe How-To <span class="inline-flex items-center transition-transform duration-200 group-hover:translate-x-1"><i class="fa-solid fa-arrow-right"></i></span></a>
</div>
<div class="group flex h-full flex-col gap-8 rounded-lg border border-[#E7EEF0] bg-white p-6 transition-all duration-200 hover:shadow-[0_4px_12px_0_rgb(24_24_24/0.08)]">
<span class="flex flex-col gap-4">
<span class="flex h-8 max-w-10 items-center justify-center text-[32px] text-[#678CB1]"><i class="fa-duotone fa-solid fa-graduation-cap"></i></span>
<span class="text-[15px]/[1.6] font-bold text-[#181818]">Hinzufügen von benutzerdefinierten Kopf- und Fußzeilen zu PDF-Dateien</span>
</span>
<a href="/how-to/merge-or-split-pdfs/" class="mt-auto flex items-center gap-2 text-sm/[1.4] font-bold text-[#2A95D5] no-underline transition-colors duration-200 group-hover:text-[#E01A59]">Siehe How-To <span class="inline-flex items-center transition-transform duration-200 group-hover:translate-x-1"><i class="fa-solid fa-arrow-right"></i></span></a>
</div>
<div class="group flex h-full flex-col gap-8 rounded-lg border border-[#E7EEF0] bg-white p-6 transition-all duration-200 hover:shadow-[0_4px_12px_0_rgb(24_24_24/0.08)]">
<span class="flex flex-col gap-4">
<span class="flex h-8 max-w-10 items-center justify-center text-[32px] text-[#678CB1]"><i class="fa-duotone fa-solid fa-graduation-cap"></i></span>
<span class="text-[15px]/[1.6] font-bold text-[#181818]">Schwärzen von Text und Regionen in PDF-Dateien</span>
</span>
<a href="/how-to/redact-text/" class="mt-auto flex items-center gap-2 text-sm/[1.4] font-bold text-[#2A95D5] no-underline transition-colors duration-200 group-hover:text-[#E01A59]">Siehe How-To <span class="inline-flex items-center transition-transform duration-200 group-hover:translate-x-1"><i class="fa-solid fa-arrow-right"></i></span></a>
</div>
</div>
<div class="tutorials-navigation">
<a href="/how-to/create-new-pdfs/" class="tutorials-navigation__cta tutorials-navigation__cta--left"><i class="fa-solid fa-chevron-left"></i>Creating PDFs in C#</a>
<a href="/tutorials/csharp-edit-pdf-complete-tutorial/" class="tutorials-navigation__cta tutorials_navigation__cta--right">Editing PDFs in C#<i class="fa-solid fa-arrow-right"></i></a>
</div>
Die Konvertierung von HTML in PDF in C# erscheint oft einfach, bis reale Anforderungen auftauchen. Entwickler stoßen schnell an Grenzen, die sich auf die Genauigkeit der Darstellung, den Einsatz und die Skalierbarkeit auswirken.
Neben dem Rendering ist auch die Kompatibilität der Infrastruktur entscheidend. Die Teams müssen sicherstellen, dass die PDF-Generierung in modernen .NET-Laufzeiten, Cloud-Plattformen und containerisierten Umgebungen ohne Leistungseinbußen funktioniert.
Um diese Lücken zu schließen, bieten moderne Chrome-basierte Lösungen wie IronPDF eine höhere Rendering-Treue, eine breitere Plattformunterstützung und produktionsreife Bereitstellungs-Workflows, die im weiteren Verlauf dieses Leitfadens Schritt für Schritt erläutert werden.
TL;DR: Schnellstartanleitung zur Konvertierung von HTML in PDF
Mit der IronPdf-Bibliothek können Sie HTML in C# ganz einfach in PDF konvertieren. Die Bibliothek bietet die Methode ChromePdfRenderer.RenderHtmlAsPdf, um aus HTML, CSS und JavaScript hochwertige PDF-Dateien zu erstellen.
1Install IronPDF with NuGet Package Manager
PM > Install-Package IronPdf
Install-Package IronPdf
2Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.
new IronPdf.ChromePdfRenderer()
.RenderHtmlAsPdf("<p>Hello World</p>")
.SaveAs("pixelperfect.pdf");
C#
3Bereitstellen zum Testen in Ihrer Live-Umgebung
Beginnen Sie noch heute, IronPDF in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
Nachdem Sie IronPDF gekauft oder sich für eine 30-tägige Testversion angemeldet haben, finden Sie den Lizenzschlüssel, der an Ihre E-Mail gesendet wurde. Fügen Sie Ihren Lizenzschlüssel am Anfang Ihrer Anwendung hinzu.
Warum .NET-Entwickler einen HTML-zu-PDF-Konverter für C# benötigen
IronPDF nutzt eine eingebettete Google Chromium-Rendering-Engine, um hochdetaillierte Konvertierungen zu gewährleisten, die das Layout und die Stilgebung Ihrer Webinhalte genau bewahren.
✅ Robuste Chrome-Rendering-Engine: Chromes Blink-Engine für genaue HTML-zu-PDF-Konvertierung, jetzt verbessert mit Korrekturen für Speicher, Formulare und Genauigkeit beim Rendern (v2025.9.4)
✅ Pixelgenaue Genauigkeit: Generierte PDFs entsprechen genau der Webseite, nicht einer druckerfreundlichen Version. Aktuelle Korrekturen decken benutzerdefinierte Kopf-/Fußzeilen-Clipping, Graustufen-Texterhaltung und Sonderzeichen/Emojis in Metadaten ab (Stand v2025.9.4)
✅ Volle Unterstützung moderner Webtechnologien: Komplettunterstützung für CSS3, HTML5, JavaScript für alle HTML-Elemente. Neuere Verbesserungen umfassen die Handhabung von Formularfeldern für lange Textbereiche und Checkboxen.
✅ 5-20x Leistungssteigerung: Deutlich schneller als Browser-Automatisierung oder Web-Treiber, jetzt mit Speicherleck-Korrekturen und reduzierten Dateigrößen für wiederkehrende Elemente wie Stempel/Kopfzeilen in Batch-Operationen.
✅ PDF/UA-Konformität: Zugängliche PDF-Erzeugung, die den Standards von Section 508 entspricht, verbessert für plattformübergreifendes (z. B. Linux) Formular-Rendering.
✅ Keine externen Abhängigkeiten: Keine auszuführenden Dateien auf Servern zu installieren
✅ Entwickelt für C#, F# & VB.NET auf .NET 10, 9, 8, 7, 6, Core, Standard oder Framework
IronPDF vereinfacht den Prozess for .NET-Entwickler und bietet eine unkomplizierte und effiziente Lösung zur Erzeugung professionell aussehender PDF-Dokumente aus dem HTML Ihrer Webanwendung. Von Rechnungen und Berichten bis zu Zertifikaten und Archiven können Entwickler mit ihrem vertrauten Web-Stack arbeiten, während IronPDF das Komplexe in nur wenigen Codezeilen handhabt.
Egal, ob Sie mit HTML-Strings, URLs oder HTML-Dateien arbeiten, IronPDF bietet flexible Optionen, um hochwertige PDF-Dokumente zu erzeugen, die Ihren spezifischen Anforderungen entsprechen.
In diesem Tutorial führen wir Sie durch die häufigsten Szenarien, einschließlich HTML-String zu PDF, URL zu PDF und HTML-Datei zu PDF. Zusätzlich bietet IronPDF auch eine Vielzahl von Operationen zur Bearbeitung von PDF-Dokumenten:
Die grundlegendste Operation ist der HTML-String zu PDF. Diese Methode ist perfekt für dynamisch generierte HTML-Inhalte. Die RenderHtmlAsPdf-Methode unterstützt HTML5, CSS3, JavaScript und Bilder vollständig, wenn Sie HTML direkt in PDF konvertieren.
using IronPdf;// Create the Chrome renderervar renderer = new ChromePdfRenderer();// Convert HTML string to PDFvar pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");// Save the PDFpdf.SaveAs("output.pdf");
using IronPdf;
// Create the Chrome renderer
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Save the PDF
pdf.SaveAs("output.pdf");
ImportsIronPdf' Create the Chrome rendererDim renderer As New ChromePdfRenderer()' Convert HTML string to PDFDim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")' Save the PDFpdf.SaveAs("output.pdf")
Imports IronPdf
' Create the Chrome renderer
Dim renderer As New ChromePdfRenderer()
' Convert HTML string to PDF
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
' Save the PDF
pdf.SaveAs("output.pdf")
Leistung
Die Leistung der IronPDF-Konvertierung von Zeichenfolgen, URLs und HTML in PDF wurde auf einem Lenovo-Laptop mit 16 GB RAM gemessen. Das Testdokument ist eine 3-seitige Enterprise-Rechnung mit Standard-CSS-Grid, Farbverläufen und mehrteiligen Tabellen.
Die Ergebnisse lauten wie folgt:
Metrik
Wert
Durchschnittliche Renderzeit
~486 ms
Speicher pro Rendering
~3,6 MB
Gemessen anhand von 5 aufeinanderfolgenden Renderings auf einer 16-Kern-Workstation (Windows 11, .NET 8). Der erste Aufruf umfasst auch eine einmalige Initialisierung der Chromium-Engine (~1,3 s)
Als ich den Test zum ersten Mal durchführte, war die Renderzeit sehr langsam (über eine Sekunde pro Aufruf!). Nachdem ich mir die Situation angesehen hatte, stellte ich fest, dass mehrere Chromium-Instanzen geöffnet waren und ich im Akkubetrieb arbeitete – beides Faktoren, die verhinderten, dass die Bibliothek ihre wahre Geschwindigkeit unter Beweis stellen konnte. Nachdem ich die konkurrierenden Prozesse geschlossen und den Stecker eingesteckt hatte, lief es besser: Warme Läufe lagen im Durchschnitt bei ~486 ms, wobei der schnellste Wert bei knapp 473 ms lag.
Tipps: (Aktualisiert für v2025.9.4) Aktuelle Updates beheben Probleme mit Sonderzeichen/Emojis in HTML-Metadaten und sorgen für eine bessere Handhabung von HTML-Formularfeldern, einschließlich chinesischer Zeichen unter Linux. Testen Sie dynamische Inhalte mit EnableJavaScript = true, um optimale Ergebnisse zu erzielen.
Wenn Ihre HTML-Zeichenkette auf lokale Ressourcen wie Bilder oder Stylesheets verweist, verwenden Sie den Parameter BaseUrlPath, um HTML-Inhalte mit allen Ressourcen korrekt zu konvertieren:
using IronPdf;var renderer = new ChromePdfRenderer();// Convert HTML content with local image and CSS referencesstring html = @" <link rel='stylesheet' href='styles.css'> <img src='logo.png' alt='Company Logo'> <h1>Company Report</h1> <p>Annual report content...</p>";// Set base path for resolving relative URLs in HTML to PDF conversionvar pdf = renderer.RenderHtmlAsPdf(html, @"C:\MyProject\Assets\");pdf.SaveAs("report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Convert HTML content with local image and CSS references
string html = @"
<link rel='stylesheet' href='styles.css'>
<img src='logo.png' alt='Company Logo'>
<h1>Company Report</h1>
<p>Annual report content...</p>";
// Set base path for resolving relative URLs in HTML to PDF conversion
var pdf = renderer.RenderHtmlAsPdf(html, @"C:\MyProject\Assets\");
pdf.SaveAs("report.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()' Convert HTML content with local image and CSS referencesDim html AsString = " <link rel='stylesheet' href='styles.css'> <img src='logo.png' alt='Company Logo'> <h1>Company Report</h1> <p>Annual report content...</p>"' Set base path for resolving relative URLs in HTML to PDF conversionDim pdf = renderer.RenderHtmlAsPdf(html, "C:\MyProject\Assets\")pdf.SaveAs("report.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Convert HTML content with local image and CSS references
Dim html As String = "
<link rel='stylesheet' href='styles.css'>
<img src='logo.png' alt='Company Logo'>
<h1>Company Report</h1>
<p>Annual report content...</p>"
' Set base path for resolving relative URLs in HTML to PDF conversion
Dim pdf = renderer.RenderHtmlAsPdf(html, "C:\MyProject\Assets\")
pdf.SaveAs("report.pdf")
Tipps: BaseUrlPath gibt IronPDF an, wo Ihre CSS-, JavaScript- und Bilddateien zu finden sind. Alle relativen Pfade in Ihrem HTML-String werden von diesem Verzeichnis aus aufgelöst.
Warnung: Ein Punkt, auf den man achten sollte, und warum das Testen der Ausgabe unabhängig davon, welche Bibliothek man für die automatisierte Dokumentgenerierung verwendet, wichtig ist, ist, dass das Enterprise-Dokument möglicherweise fehlerhafte Elemente oder fehlende Assets enthält, wenn Verweise auf die Systemeinstellungen zurückfallen. IronPDF bietet Ihnen den Parameter BaseUrlPath, um relative Pfade auf das richtige Verzeichnis zu verweisen, sodass eine kurze Überprüfung der Ausgabe vor Massenausführungen in der Regel ausreicht, um Fehler zu erkennen.
Das Rendern ganzer Webseiten zu PDFs mit C# ermöglicht es Teams, PDF-Design und Backend-Rendering-Arbeiten zu trennen. Dieser Ansatz ermöglicht es Ihnen, jede angegebene URL direkt in das PDF-Format zu konvertieren.
Print vs. Screen CSS
Sie können IronPDF so konfigurieren, dass es mit jedem CSS-Medientyp rendert.
using IronPdf;using IronPdf.Rendering;// Initialize HTML to PDF convertervar renderer = new ChromePdfRenderer();// Configure CSS media type for rendering specified URLsrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;// Screen media type shows the entire web page as displayed on screen
using IronPdf;
using IronPdf.Rendering;
// Initialize HTML to PDF converter
var renderer = new ChromePdfRenderer();
// Configure CSS media type for rendering specified URLs
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Screen media type shows the entire web page as displayed on screen
ImportsIronPdfImportsIronPdf.Rendering' Initialize HTML to PDF converterDim renderer As New ChromePdfRenderer()' Configure CSS media type for rendering specified URLsrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print' Screen media type shows the entire web page as displayed on screen
Imports IronPdf
Imports IronPdf.Rendering
' Initialize HTML to PDF converter
Dim renderer As New ChromePdfRenderer()
' Configure CSS media type for rendering specified URLs
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
' Screen media type shows the entire web page as displayed on screen
JavaScript-Unterstützung
IronPDF unterstützt JavaScript, jQuery und sogar AJAX vollständig, wenn Sie HTML in PDF konvertieren. Für dynamische HTML-Inhalte können Sie IronPDF so konfigurieren, dass es auf den Abschluss von JavaScript wartet, bevor es Webseiten in PDF rendert. Dies ist perfekt für Single-Page-Anwendungen und dynamische Websites.
using IronPdf;// Configure JavaScript rendering for dynamic HTML content to PDFvar renderer = new ChromePdfRenderer();// Enable JavaScript execution during PDF generationrenderer.RenderingOptions.EnableJavaScript = true;// WaitFor.RenderDelay pauses before capturing the HTMLrenderer.RenderingOptions.WaitFor.RenderDelay(500); // milliseconds
using IronPdf;
// Configure JavaScript rendering for dynamic HTML content to PDF
var renderer = new ChromePdfRenderer();
// Enable JavaScript execution during PDF generation
renderer.RenderingOptions.EnableJavaScript = true;
// WaitFor.RenderDelay pauses before capturing the HTML
renderer.RenderingOptions.WaitFor.RenderDelay(500); // milliseconds
ImportsIronPdf' Configure JavaScript rendering for dynamic HTML content to PDFDim renderer As New ChromePdfRenderer()' Enable JavaScript execution during PDF generationrenderer.RenderingOptions.EnableJavaScript = True' WaitFor.RenderDelay pauses before capturing the HTMLrenderer.RenderingOptions.WaitFor.RenderDelay(500) ' milliseconds
Imports IronPdf
' Configure JavaScript rendering for dynamic HTML content to PDF
Dim renderer As New ChromePdfRenderer()
' Enable JavaScript execution during PDF generation
renderer.RenderingOptions.EnableJavaScript = True
' WaitFor.RenderDelay pauses before capturing the HTML
renderer.RenderingOptions.WaitFor.RenderDelay(500) ' milliseconds
Die JavaScript-Ausführung kann auch angezeigt werden, wenn ein fortgeschrittener d3.js-Akkord-Diagramm von einer Webseite in das PDF-Format gerendert wird:
using IronPdf;// Create renderer for JavaScript-heavy HTMLvar renderer = new ChromePdfRenderer();// Convert d3.js visualization web page to PDFvar pdf = renderer.RenderUrlAsPdf("https://observablehq.com/@d3/chord-diagram");// Save the interactive chart as static PDFpdf.SaveAs("chart.pdf");
using IronPdf;
// Create renderer for JavaScript-heavy HTML
var renderer = new ChromePdfRenderer();
// Convert d3.js visualization web page to PDF
var pdf = renderer.RenderUrlAsPdf("https://observablehq.com/@d3/chord-diagram");
// Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf");
ImportsIronPdf' Create renderer for JavaScript-heavy HTMLDim renderer As New ChromePdfRenderer()' Convert d3.js visualization web page to PDFDim pdf = renderer.RenderUrlAsPdf("https://observablehq.com/@d3/chord-diagram")' Save the interactive chart as static PDFpdf.SaveAs("chart.pdf")
Imports IronPdf
' Create renderer for JavaScript-heavy HTML
Dim renderer As New ChromePdfRenderer()
' Convert d3.js visualization web page to PDF
Dim pdf = renderer.RenderUrlAsPdf("https://observablehq.com/@d3/chord-diagram")
' Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf")
Responsive CSS
Da responsive Webseiten für die Anzeige in einem Browser konzipiert sind und IronPDF kein echtes Browserfenster im Betriebssystem Ihres Servers öffnet, werden responsive HTML-Elemente möglicherweise in ihrer kleinsten Größe gerendert. PdfCssMediaType.Print wird empfohlen, um dieses Problem beim Rendern ganzer Webseiten zu umgehen.
// Configure for optimal responsive design handling in HTML to PDFrenderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
// Configure for optimal responsive design handling in HTML to PDF
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Das Konvertieren lokaler HTML-Dateien in PDF bewahrt alle relativen Ressourcen, einschließlich CSS, Bilder und JavaScript, als ob sie mit dem file://-Protokoll geöffnet würden. Diese HTML-zu-PDF-Methode eignet sich am besten zum Konvertieren von Vorlagen oder vordesignierten HTML-Seiten in PDF-Dokumente.
using IronPdf;// Initialize ChromePdfRenderer for HTML file conversionvar renderer = new ChromePdfRenderer();// Convert HTML file to PDF documents// Preserves all relative paths and linked resources in HTMLvar pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");// Save the HTML file as PDF pdf.SaveAs("Invoice.pdf");// All CSS, JavaScript, and images load correctly in the generated PDF
using IronPdf;
// Initialize ChromePdfRenderer for HTML file conversion
var renderer = new ChromePdfRenderer();
// Convert HTML file to PDF documents
// Preserves all relative paths and linked resources in HTML
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
// Save the HTML file as PDF
pdf.SaveAs("Invoice.pdf");
// All CSS, JavaScript, and images load correctly in the generated PDF
ImportsIronPdf' Initialize ChromePdfRenderer for HTML file conversionDim renderer As New ChromePdfRenderer()' Convert HTML file to PDF documents' Preserves all relative paths and linked resources in HTMLDim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")' Save the HTML file as PDF pdf.SaveAs("Invoice.pdf")' All CSS, JavaScript, and images load correctly in the generated PDF
Imports IronPdf
' Initialize ChromePdfRenderer for HTML file conversion
Dim renderer As New ChromePdfRenderer()
' Convert HTML file to PDF documents
' Preserves all relative paths and linked resources in HTML
Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
' Save the HTML file as PDF
pdf.SaveAs("Invoice.pdf")
' All CSS, JavaScript, and images load correctly in the generated PDF
Leistung
Die Leistung wurde erneut gemessen, indem alle Variablen konstant gehalten wurden, um die vorherige 3-seitige Enterprise-Rechnung aus einer Datei auf der Festplatte zu rendern:
Metrik
Wert
Durchschnittliche Renderzeit
~502 ms
Speicher pro Rendering
~3,1 MB
Gemessen anhand von 5 aufeinanderfolgenden Renderings auf derselben 16-Kern-Workstation (Windows 11, .NET 8). Das dateibasierte Rendering weicht vom In-Memory-String-Rendering um maximal 3 % ab; Das Einlesen des HTML-Codes von der Festplatte verursacht keinen nennenswerten Mehraufwand.
Tipps: Bewahren Sie Ihre HTML-Dateien in einem separaten Ordner mit ihren Ressourcen (CSS, Bilder) auf, um sie im Browser zu bearbeiten und zu testen, bevor Sie HTML-Dateien in PDF konvertieren. Dies stellt sicher, dass Ihr HTML perfekt für hochwertige PDF-Dokumente gerendert wird.
Wenn Ihr ASP.NET Core Projekt bereits Razor Pages verwendet, können Sie diese direkt in PDF konvertieren, ohne Ihr HTML neu zu erstellen. Die Razor-Erweiterung von IronPDF fügt die Methode RenderRazorToPdf hinzu, die Ihre .cshtml-Seite – komplett mit Modell und Layout – in einem einzigen Aufruf als PDF-Dokument rendert.
PM > Install-Package IronPdf.Extensions.Razor
PM > Install-Package IronPdf.Extensions.Razor
SHELL
using IronPdf;using Microsoft.AspNetCore.Mvc;using Microsoft.AspNetCore.Mvc.RazorPages;public class ReportModel : PageModel{ public IActionResultOnGet() { var renderer = new ChromePdfRenderer(); // Render a Razor Page directly to PDF PdfDocument pdf = renderer.RenderRazorToPdf(this);Response.Headers.Add("Content-Disposition", "inline"); return new FileContentResult(pdf.BinaryData, "application/pdf"); }}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
public class ReportModel : PageModel
{
public IActionResult OnGet()
{
var renderer = new ChromePdfRenderer();
// Render a Razor Page directly to PDF
PdfDocument pdf = renderer.RenderRazorToPdf(this);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
}
}
ImportsIronPdfImportsMicrosoft.AspNetCore.MvcImportsMicrosoft.AspNetCore.Mvc.RazorPagesPublic Class ReportModelInheritsPageModel Public Function OnGet() AsIActionResult Dim renderer As New ChromePdfRenderer() ' Render a Razor Page directly to PDF Dim pdf AsPdfDocument = renderer.RenderRazorToPdf(Me) Response.Headers.Add("Content-Disposition", "inline") Return New FileContentResult(pdf.BinaryData, "application/pdf") End FunctionEnd Class
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Public Class ReportModel
Inherits PageModel
Public Function OnGet() As IActionResult
Dim renderer As New ChromePdfRenderer()
' Render a Razor Page directly to PDF
Dim pdf As PdfDocument = renderer.RenderRazorToPdf(Me)
Response.Headers.Add("Content-Disposition", "inline")
Return New FileContentResult(pdf.BinaryData, "application/pdf")
End Function
End Class
Hinweis:: RenderRazorToPdf erfordert ein ASP.NET Core Web App-Projekt. Es funktioniert nicht in Konsolenanwendungen oder Klassenbibliotheken – die Razor View-Engine muss in der Host-Pipeline verfügbar sein.
Teams, die das MVC-Muster verwenden, können PDFs direkt aus ihren bestehenden Views und Controllern generieren. Installieren Sie das MVC Core-Erweiterungspaket und rufen Sie dann RenderRazorViewToPdf mit Ihrem View-Pfad und Ihrem Modell auf – IronPDF übernimmt die Razor-Rendering-Pipeline und gibt ein fertiges PDF aus.
Dies ist besonders nützlich für Berichte, Rechnungen und alle Seiten, deren HTML-Code bereits im Browser entworfen und getestet wurde. Die generierte PDF-Datei bewahrt die vollständige Ansichtsausgabe, einschließlich Layoutseiten und Teilansichten.
PM > Install-Package IronPdf.Extensions.Mvc.Core
PM > Install-Package IronPdf.Extensions.Mvc.Core
SHELL
Registrieren Sie zunächst den Dienst IRazorViewRenderer in Ihrer Program.cs, damit Ihre Controller ihn einbinden können:
using IronPdf.Extensions.Mvc.Core;var builder = WebApplication.CreateBuilder(args);builder.Services.AddControllersWithViews();// Register the Razor view renderer for IronPDFbuilder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
using IronPdf.Extensions.Mvc.Core;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
// Register the Razor view renderer for IronPDF
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
ImportsIronPdf.Extensions.Mvc.CoreDim builder = WebApplication.CreateBuilder(args)builder.Services.AddControllersWithViews()' Register the Razor view renderer for IronPDFbuilder.Services.AddSingleton(OfIHttpContextAccessor, HttpContextAccessor)()builder.Services.AddSingleton(OfIRazorViewRenderer, RazorViewRenderer)()
Imports IronPdf.Extensions.Mvc.Core
Dim builder = WebApplication.CreateBuilder(args)
builder.Services.AddControllersWithViews()
' Register the Razor view renderer for IronPDF
builder.Services.AddSingleton(Of IHttpContextAccessor, HttpContextAccessor)()
builder.Services.AddSingleton(Of IRazorViewRenderer, RazorViewRenderer)()
Anschließend können Sie in Ihrer Controller-Aktion den Renderer einbinden und jede Ansicht in ein PDF konvertieren:
using IronPdf;using IronPdf.Extensions.Mvc.Core;using Microsoft.AspNetCore.Mvc;public class ReportController : Controller{ private readonly IRazorViewRenderer _viewRenderService; // Inject the view renderer via constructor publicReportController(IRazorViewRenderer viewRenderService) { _viewRenderService = viewRenderService; } public IActionResultDownload() { var reportModel = new { Title = "Quarterly Report", Total = 1250.00 }; var renderer = new ChromePdfRenderer(); // Render an MVC View with model data to PDF PdfDocument pdf = renderer.RenderRazorViewToPdf( _viewRenderService, "Views/Home/Report.cshtml", reportModel);Response.Headers.Add("Content-Disposition", "inline"); return new FileContentResult(pdf.BinaryData, "application/pdf"); }}
using IronPdf;
using IronPdf.Extensions.Mvc.Core;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
private readonly IRazorViewRenderer _viewRenderService;
// Inject the view renderer via constructor
public ReportController(IRazorViewRenderer viewRenderService)
{
_viewRenderService = viewRenderService;
}
public IActionResult Download()
{
var reportModel = new { Title = "Quarterly Report", Total = 1250.00 };
var renderer = new ChromePdfRenderer();
// Render an MVC View with model data to PDF
PdfDocument pdf = renderer.RenderRazorViewToPdf(
_viewRenderService, "Views/Home/Report.cshtml", reportModel);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
}
}
ImportsIronPdfImportsIronPdf.Extensions.Mvc.CoreImportsMicrosoft.AspNetCore.MvcPublic Class ReportControllerInheritsController PrivateReadOnly _viewRenderService AsIRazorViewRenderer ' Inject the view renderer via constructor Public Sub New(viewRenderService AsIRazorViewRenderer) _viewRenderService = viewRenderService End Sub Public Function Download() AsIActionResult Dim reportModel = New With {.Title = "Quarterly Report", .Total = 1250.0} Dim renderer = New ChromePdfRenderer() ' Render an MVC View with model data to PDF Dim pdf AsPdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Report.cshtml", reportModel) Response.Headers.Add("Content-Disposition", "inline") Return New FileContentResult(pdf.BinaryData, "application/pdf") End FunctionEnd Class
Imports IronPdf
Imports IronPdf.Extensions.Mvc.Core
Imports Microsoft.AspNetCore.Mvc
Public Class ReportController
Inherits Controller
Private ReadOnly _viewRenderService As IRazorViewRenderer
' Inject the view renderer via constructor
Public Sub New(viewRenderService As IRazorViewRenderer)
_viewRenderService = viewRenderService
End Sub
Public Function Download() As IActionResult
Dim reportModel = New With {.Title = "Quarterly Report", .Total = 1250.0}
Dim renderer = New ChromePdfRenderer()
' Render an MVC View with model data to PDF
Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Report.cshtml", reportModel)
Response.Headers.Add("Content-Disposition", "inline")
Return New FileContentResult(pdf.BinaryData, "application/pdf")
End Function
End Class
Müssen Sie Ihre dynamische Webseite bewahren und in PDFs konvertieren, während das exakte Layout und die Formatierung erhalten bleiben? Suchen Sie nicht weiter als IronPDF, das eine Vielzahl von äußerst beliebten dynamischen Webseitensystemen schnell in PDFs konvertiert.
PDF aus ASPX-Seiten
Hier ist ein kurzes Codebeispiel zur Konvertierung von ASPX-Seiten als PDF in Active Server Pages.
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using IronPdf;namespace AspxToPdfTutorial{ public partial class Invoice : System.Web.UI.Page { protected voidPage_Load(object sender, EventArgs e) {IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser); } }}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using IronPdf;
namespace AspxToPdfTutorial
{
public partial class Invoice : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser);
}
}
}
ImportsSystemImportsSystem.Collections.GenericImportsSystem.LinqImportsSystem.WebImportsSystem.Web.UIImportsSystem.Web.UI.WebControlsImportsIronPdfNamespaceAspxToPdfTutorialPartialPublic Class InvoiceInheritsSystem.Web.UI.PageProtected Sub Page_Load(ByVal sender AsObject, ByVal e AsEventArgs)IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser) End Sub End ClassEndNamespace
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports IronPdf
Namespace AspxToPdfTutorial
Partial Public Class Invoice
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
IronPdf.AspxToPdf.RenderThisPageAsPdf(IronPdf.AspxToPdf.FileBehavior.InBrowser)
End Sub
End Class
End Namespace
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden Leitfaden.
XAML zu PDF (MAUI)
Für Entwickler, die plattformübergreifende Anwendungen erstellen möchten, ist .NET MAUI eine beliebte Wahl unter den Frameworks. IronPDF unterstützt vollumfänglich die Konvertierung von XAML in PDF mit wenigen Schritten.
using IronPdf.Extensions.Maui;namespace mauiSample;public partial class MainPage : ContentPage{ publicMainPage() {InitializeComponent(); } private voidPrintToPdf(object sender, EventArgs e) { ChromePdfRenderer renderer = new ChromePdfRenderer(); // Apply HTML header renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() {HtmlFragment = "<h1>Header</h1>", }; // Render PDF from Maui Page PdfDocument pdf = renderer.RenderContentPageToPdf<MainPage, App>().Result; pdf.SaveAs(@"C:\Users\lyty1\Downloads\contentPageToPdf.pdf"); }}
using IronPdf.Extensions.Maui;
namespace mauiSample;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void PrintToPdf(object sender, EventArgs e)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Apply HTML header
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<h1>Header</h1>",
};
// Render PDF from Maui Page
PdfDocument pdf = renderer.RenderContentPageToPdf<MainPage, App>().Result;
pdf.SaveAs(@"C:\Users\lyty1\Downloads\contentPageToPdf.pdf");
}
}
ImportsIronPdf.Extensions.MauiNamespace mauiSamplePartialPublic Class MainPageInheritsContentPage Public Sub New()InitializeComponent() End Sub Private Sub PrintToPdf(ByVal sender AsObject, ByVal e AsEventArgs) Dim renderer As New ChromePdfRenderer() ' Apply HTML header renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {.HtmlFragment = "<h1>Header</h1>"} ' Render PDF from Maui Page Dim pdf AsPdfDocument = renderer.RenderContentPageToPdf(OfMainPage, App)().Result pdf.SaveAs("C:\Users\lyty1\Downloads\contentPageToPdf.pdf") End Sub End ClassEndNamespace
Imports IronPdf.Extensions.Maui
Namespace mauiSample
Partial Public Class MainPage
Inherits ContentPage
Public Sub New()
InitializeComponent()
End Sub
Private Sub PrintToPdf(ByVal sender As Object, ByVal e As EventArgs)
Dim renderer As New ChromePdfRenderer()
' Apply HTML header
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {.HtmlFragment = "<h1>Header</h1>"}
' Render PDF from Maui Page
Dim pdf As PdfDocument = renderer.RenderContentPageToPdf(Of MainPage, App)().Result
pdf.SaveAs("C:\Users\lyty1\Downloads\contentPageToPdf.pdf")
End Sub
End Class
End Namespace
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden Leitfaden.
PDF-Berichte erstellen
Beim Erstellen von PDF-Berichten sind die genauen Abmessungen und das Format entscheidend. Somit ermöglicht IronPDF die nahtlose Erstellung von PDFs mit nur wenigen Schritten.
using IronPdf;ChromePdfRenderer renderer = new ChromePdfRenderer();renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf");
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf");
ImportsIronPdfPrivate renderer As New ChromePdfRenderer()renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf")
Imports IronPdf
Private renderer As New ChromePdfRenderer()
renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf")
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden Leitfaden.
PDFs in Blazor-Servern erstellen
IronPDF unterstützt .NET 6, und da es Projekttypen wie Blazor umfasst, bietet dieses Codebeispiel ein kurzes Beispiel dafür, wie Sie PDFs in Blazor Server erstellen können.
@code { // Model to bind user input private InputHTMLModel _InputMsgModel = new InputHTMLModel(); private async TaskSubmitHTML() { // Set your IronPDF license keyIronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"; // Create a renderer to convert HTML to PDF var render = new IronPdf.ChromePdfRenderer(); // Render the HTML input into a PDF document var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML); var fileName = "iron.pdf"; // Create a stream reference for the PDF content using var streamRef = new DotNetStreamReference(stream: doc.Stream); // Invoke JavaScript function to download the PDF in the browser awaitJS.InvokeVoidAsync("SubmitHTML", fileName, streamRef); } public class InputHTMLModel { public stringHTML { get; set; } = "My new message"; }}
@code {
// Model to bind user input
private InputHTMLModel _InputMsgModel = new InputHTMLModel();
private async Task SubmitHTML()
{
// Set your IronPDF license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
// Create a renderer to convert HTML to PDF
var render = new IronPdf.ChromePdfRenderer();
// Render the HTML input into a PDF document
var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);
var fileName = "iron.pdf";
// Create a stream reference for the PDF content
using var streamRef = new DotNetStreamReference(stream: doc.Stream);
// Invoke JavaScript function to download the PDF in the browser
await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
}
public class InputHTMLModel
{
public string HTML { get; set; } = "My new message";
}
}
codeIf True Then ' Model to bind user input privateInputHTMLModel _InputMsgModel = New InputHTMLModel()'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:' private async Task SubmitHTML()' {' ' Set your IronPDF license key' IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";'' ' Create a renderer to convert HTML to PDF' var render = New IronPdf.ChromePdfRenderer();'' ' Render the HTML input into a PDF document' var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);'' var fileName = "iron.pdf";'' ' Create a stream reference for the PDF content' var streamRef = New DotNetStreamReference(stream: doc.Stream);'' ' Invoke JavaScript function to download the PDF in the browser' await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);' }'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:' public class InputHTMLModel' {' public string HTML' {' get;' set;' } = "My new message";' }End If
code
If True Then
' Model to bind user input
private InputHTMLModel _InputMsgModel = New InputHTMLModel()
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' private async Task SubmitHTML()
' {
' ' Set your IronPDF license key
' IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
'
' ' Create a renderer to convert HTML to PDF
' var render = New IronPdf.ChromePdfRenderer();
'
' ' Render the HTML input into a PDF document
' var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);
'
' var fileName = "iron.pdf";
'
' ' Create a stream reference for the PDF content
' var streamRef = New DotNetStreamReference(stream: doc.Stream);
'
' ' Invoke JavaScript function to download the PDF in the browser
' await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
' }
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' public class InputHTMLModel
' {
' public string HTML
' {
' get;
' set;
' } = "My new message";
' }
End If
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden Leitfaden.
Razor zu PDF (Blazor Server)
Neben der Erstellung von PDFs auf Blazor-Servern unterstützt IronPDF auch die Erstellung von PDF-Dokumenten aus Razor-Komponenten innerhalb einer Blazor-Seite. Dies macht die Erstellung von PDF-Dateien und -Seiten viel einfacher.
[Parameter]publicIEnumerable<PersonInfo> persons { get; set; }publicDictionary<string, object> Parameters { get; set; } = new Dictionary<string, object>();protected override async TaskOnInitializedAsync(){ persons = new List<PersonInfo> { new PersonInfo { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" }, new PersonInfo { Name = "Bob", Title = "Mr.", Description = "Software Engineer" }, new PersonInfo { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" } };}private async voidPrintToPdf(){ ChromePdfRenderer renderer = new ChromePdfRenderer(); // Apply text footer renderer.RenderingOptions.TextFooter = new TextHeaderFooter() {LeftText = "{date} - {time}",DrawDividerLine = true,RightText = "Page {page} of {total-pages}",Font = IronSoftware.Drawing.FontTypes.Arial,FontSize = 11 };Parameters.Add("persons", persons); // Render razor component to PDF PdfDocument pdf = renderer.RenderRazorComponentToPdf<Person>(Parameters);File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData);}
[Parameter]
public IEnumerable<PersonInfo> persons { get; set; }
public Dictionary<string, object> Parameters { get; set; } = new Dictionary<string, object>();
protected override async Task OnInitializedAsync()
{
persons = new List<PersonInfo>
{
new PersonInfo { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new PersonInfo { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new PersonInfo { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
}
private async void PrintToPdf()
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Apply text footer
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} - {time}",
DrawDividerLine = true,
RightText = "Page {page} of {total-pages}",
Font = IronSoftware.Drawing.FontTypes.Arial,
FontSize = 11
};
Parameters.Add("persons", persons);
// Render razor component to PDF
PdfDocument pdf = renderer.RenderRazorComponentToPdf<Person>(Parameters);
File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData);
}
<Parameter>Public Property persons AsIEnumerable(OfPersonInfo)Public Property ParametersAsDictionary(OfString, Object) = New Dictionary(OfString, Object)()ProtectedOverridesAsync Function OnInitializedAsync() AsTask persons = New List(OfPersonInfo) From { New PersonInfoWith {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"}, New PersonInfoWith {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"}, New PersonInfoWith {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"} }End FunctionPrivateAsync Sub PrintToPdf() Dim renderer As New ChromePdfRenderer() ' Apply text footer renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With { .LeftText = "{date} - {time}", .DrawDividerLine = True, .RightText = "Page {page} of {total-pages}", .Font = IronSoftware.Drawing.FontTypes.Arial, .FontSize = 11 }Parameters.Add("persons", persons) ' Render razor component to PDF Dim pdf AsPdfDocument = renderer.RenderRazorComponentToPdf(OfPerson)(Parameters)File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData)End Sub
<Parameter>
Public Property persons As IEnumerable(Of PersonInfo)
Public Property Parameters As Dictionary(Of String, Object) = New Dictionary(Of String, Object)()
Protected Overrides Async Function OnInitializedAsync() As Task
persons = New List(Of PersonInfo) From {
New PersonInfo With {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"},
New PersonInfo With {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"},
New PersonInfo With {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"}
}
End Function
Private Async Sub PrintToPdf()
Dim renderer As New ChromePdfRenderer()
' Apply text footer
renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} - {time}",
.DrawDividerLine = True,
.RightText = "Page {page} of {total-pages}",
.Font = IronSoftware.Drawing.FontTypes.Arial,
.FontSize = 11
}
Parameters.Add("persons", persons)
' Render razor component to PDF
Dim pdf As PdfDocument = renderer.RenderRazorComponentToPdf(Of Person)(Parameters)
File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData)
End Sub
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden Leitfaden.
CSHTML zu PDF
Die Konvertierung von CSHTML (Razor) in PDF ermöglicht es Ihnen, direkt aus Ihren Webanwendungen professionelle, druckreife Dokumente zu erstellen. Dies ist nützlich für Rechnungen, Berichte, Verträge oder jegliche dynamische Inhalte. IronPDF unterstützt Razor Pages, MVC Core und MVC Framework sowie headless Rendering und ermöglicht eine nahtlose Integration der PDF-Erstellung in Ihre .NET-Anwendungen mit nur wenigen Codezeilen.
CSHTML zu PDF (Razor Pages)
using IronPdf.Razor.Pages;public IActionResultOnPostAsync(){ persons = new List<Person> { new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" }, new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" }, new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" } };ViewData["personList"] = persons; ChromePdfRenderer renderer = new ChromePdfRenderer(); // Render Razor Page to PDF document PdfDocument pdf = renderer.RenderRazorToPdf(this);Response.Headers.Add("Content-Disposition", "inline"); returnFile(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");}
using IronPdf.Razor.Pages;
public IActionResult OnPostAsync()
{
persons = new List<Person>
{
new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
ViewData["personList"] = persons;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render Razor Page to PDF document
PdfDocument pdf = renderer.RenderRazorToPdf(this);
Response.Headers.Add("Content-Disposition", "inline");
return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");
}
ImportsIronPdf.Razor.PagesPublic Function OnPostAsync() AsIActionResult persons = New List(OfPerson) From { New PersonWith {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"}, New PersonWith {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"}, New PersonWith {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"} }ViewData("personList") = persons Dim renderer As New ChromePdfRenderer() ' Render Razor Page to PDF document Dim pdf AsPdfDocument = renderer.RenderRazorToPdf(Me) Response.Headers.Add("Content-Disposition", "inline") ReturnFile(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf")End Function
Imports IronPdf.Razor.Pages
Public Function OnPostAsync() As IActionResult
persons = New List(Of Person) From {
New Person With {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"},
New Person With {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"},
New Person With {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"}
}
ViewData("personList") = persons
Dim renderer As New ChromePdfRenderer()
' Render Razor Page to PDF document
Dim pdf As PdfDocument = renderer.RenderRazorToPdf(Me)
Response.Headers.Add("Content-Disposition", "inline")
Return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf")
End Function
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden Leitfaden.
CSHTML zu PDF (MVC Core)
public async Task<IActionResult> Persons(){ var persons = new List<Person> { new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" }, new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" }, new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" } }; if (_httpContextAccessor.HttpContext.Request.Method == HttpMethod.Post.Method) { ChromePdfRenderer renderer = new ChromePdfRenderer(); // Render View to PDF document PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Persons.cshtml", persons);Response.Headers.Add("Content-Disposition", "inline"); // Output PDF document returnFile(pdf.BinaryData, "application/pdf", "viewToPdfMVCCore.pdf"); } returnView(persons);}
public async Task<IActionResult> Persons()
{
var persons = new List<Person>
{
new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
if (_httpContextAccessor.HttpContext.Request.Method == HttpMethod.Post.Method)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render View to PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Persons.cshtml", persons);
Response.Headers.Add("Content-Disposition", "inline");
// Output PDF document
return File(pdf.BinaryData, "application/pdf", "viewToPdfMVCCore.pdf");
}
return View(persons);
}
PublicAsync Function Persons() AsTask(OfIActionResult) Dim persons = New List(OfPerson) From { New PersonWith {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"}, New PersonWith {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"}, New PersonWith {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"} } If _httpContextAccessor.HttpContext.Request.Method = HttpMethod.Post.MethodThen Dim renderer As New ChromePdfRenderer() ' Render View to PDF document Dim pdf AsPdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Persons.cshtml", persons) Response.Headers.Add("Content-Disposition", "inline") ' Output PDF document ReturnFile(pdf.BinaryData, "application/pdf", "viewToPdfMVCCore.pdf") End If ReturnView(persons)End Function
Public Async Function Persons() As Task(Of IActionResult)
Dim persons = New List(Of Person) From {
New Person With {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"},
New Person With {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"},
New Person With {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"}
}
If _httpContextAccessor.HttpContext.Request.Method = HttpMethod.Post.Method Then
Dim renderer As New ChromePdfRenderer()
' Render View to PDF document
Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Persons.cshtml", persons)
Response.Headers.Add("Content-Disposition", "inline")
' Output PDF document
Return File(pdf.BinaryData, "application/pdf", "viewToPdfMVCCore.pdf")
End If
Return View(persons)
End Function
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden Leitfaden.
CSHTML zu PDF (MVC Framework)
public ActionResultPersons(){ var persons = new List<Person> { new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" }, new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" }, new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" } }; if (HttpContext.Request.HttpMethod == "POST") { // Provide the path to your view file var viewPath = "~/Views/Home/Persons.cshtml"; ChromePdfRenderer renderer = new ChromePdfRenderer(); // Render Razor view to PDF document PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);Response.Headers.Add("Content-Disposition", "inline"); // View the PDF returnFile(pdf.BinaryData, "application/pdf"); } returnView(persons);}
public ActionResult Persons()
{
var persons = new List<Person>
{
new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
if (HttpContext.Request.HttpMethod == "POST")
{
// Provide the path to your view file
var viewPath = "~/Views/Home/Persons.cshtml";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render Razor view to PDF document
PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);
Response.Headers.Add("Content-Disposition", "inline");
// View the PDF
return File(pdf.BinaryData, "application/pdf");
}
return View(persons);
}
Public Function Persons() AsActionResult Dim persons = New List(OfPerson) From { New PersonWith {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"}, New PersonWith {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"}, New PersonWith {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"} } IfHttpContext.Request.HttpMethod = "POST" Then ' Provide the path to your view file Dim viewPath = "~/Views/Home/Persons.cshtml" Dim renderer As New ChromePdfRenderer() ' Render Razor view to PDF document Dim pdf AsPdfDocument = renderer.RenderView(Me.HttpContext, viewPath, persons) Response.Headers.Add("Content-Disposition", "inline") ' View the PDF ReturnFile(pdf.BinaryData, "application/pdf") End If ReturnView(persons)End Function
Public Function Persons() As ActionResult
Dim persons = New List(Of Person) From {
New Person With {.Name = "Alice", .Title = "Mrs.", .Description = "Software Engineer"},
New Person With {.Name = "Bob", .Title = "Mr.", .Description = "Software Engineer"},
New Person With {.Name = "Charlie", .Title = "Mr.", .Description = "Software Engineer"}
}
If HttpContext.Request.HttpMethod = "POST" Then
' Provide the path to your view file
Dim viewPath = "~/Views/Home/Persons.cshtml"
Dim renderer As New ChromePdfRenderer()
' Render Razor view to PDF document
Dim pdf As PdfDocument = renderer.RenderView(Me.HttpContext, viewPath, persons)
Response.Headers.Add("Content-Disposition", "inline")
' View the PDF
Return File(pdf.BinaryData, "application/pdf")
End If
Return View(persons)
End Function
Für eine detailliertere Erklärung dieses Codebeispiels und um zusätzliche Funktionen zu erkunden, bitte verweisen Sie auf unser umfassendes Handbuch.
CSHTML zu PDF (Headlessly)
app.MapGet("/PrintPdf", async () =>{ // Set your IronPDF license keyIronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"; // Enable detailed logging for troubleshootingIronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All; // Render the Razor view to an HTML string string html = awaitRazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml"); // Create a new instance of ChromePdfRenderer ChromePdfRenderer renderer = new ChromePdfRenderer(); // Render the HTML string as a PDF document PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot"); // Return the PDF file as a response returnResults.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");});
app.MapGet("/PrintPdf", async () =>
{
// Set your IronPDF license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
// Enable detailed logging for troubleshooting
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;
// Render the Razor view to an HTML string
string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");
// Create a new instance of ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the HTML string as a PDF document
PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");
// Return the PDF file as a response
return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
ImportsIronPdfImportsMicrosoft.AspNetCore.Httpapp.MapGet("/PrintPdf", Async Function() AsTask(OfIResult) ' Set your IronPDF license keyIronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01" ' Enable detailed logging for troubleshootingIronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All ' Render the Razor view to an HTML string Dim html AsString = AwaitRazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml") ' Create a new instance of ChromePdfRenderer Dim renderer As New ChromePdfRenderer() ' Render the HTML string as a PDF document Dim pdf AsPdfDocument = renderer.RenderHtmlAsPdf(html, "./wwwroot") ' Return the PDF file as a response ReturnResults.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")End Function)
Imports IronPdf
Imports Microsoft.AspNetCore.Http
app.MapGet("/PrintPdf", Async Function() As Task(Of IResult)
' Set your IronPDF license key
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
' Enable detailed logging for troubleshooting
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All
' Render the Razor view to an HTML string
Dim html As String = Await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml")
' Create a new instance of ChromePdfRenderer
Dim renderer As New ChromePdfRenderer()
' Render the HTML string as a PDF document
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html, "./wwwroot")
' Return the PDF file as a response
Return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")
End Function)
Für eine ausführlichere Erklärung dieses Codebeispiels und zur Erkundung seiner zusätzlichen Funktionalität lesen Sie bitte unseren umfassenden Leitfaden.
2. Wie man HTML-zu-PDF-Einstellungen konfiguriert
Was die Bearbeitung von PDF-Dokumenten angeht, bietet IronPDF umfangreiche Anpassungsmöglichkeiten über die Eigenschaft ChromePdfRenderer.RenderingOptions für gerenderte PDFs.
Einstellungen
Beschreibung
Beispiel
Papiergröße
Seitendimensionen für bestehende PDFs einstellen (A4, Letter, Legal, etc.)
PdfPaperSize.A4
Papierorientation
Hoch- oder Querformat für vorhandene PDFs einstellen
PdfPaperOrientation.Landscape
MarginTop/Bottom/Left/Right
Seitenränder in Millimetern einstellen (Standard: 25mm)
JavaScript vor dem Rendern von HTML-Inhalten ausführen
WAHR
WaitFor.RenderDelay
Wartezeit für dynamische HTML-Inhalte (ms)
500
Sehen Sie sich diesen Codeausschnitt für ein vollständiges Konfigurationsbeispiel zur Bearbeitung von PDF-Dokumenten an:
using IronPdf;using IronPdf.Rendering;var renderer = new ChromePdfRenderer();// Apply print-specific CSS rulesrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;// Set custom margins in millimetersrenderer.RenderingOptions.MarginTop = 50;renderer.RenderingOptions.MarginBottom = 50;// Enable background colors and imagesrenderer.RenderingOptions.PrintHtmlBackgrounds = true;// Set paper size and orientationrenderer.RenderingOptions.PaperSize = PdfPaperSize.A4;renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;// Generate PDFs with all settings applied to HTML contentvar htmlContent = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>";var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);pdfDocument.SaveAs("styled-output.pdf");
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Apply print-specific CSS rules
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Set custom margins in millimeters
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
// Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Set paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Generate PDFs with all settings applied to HTML content
var htmlContent = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>";
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
pdfDocument.SaveAs("styled-output.pdf");
ImportsIronPdfImportsIronPdf.RenderingDim renderer As New ChromePdfRenderer()' Apply print-specific CSS rulesrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print' Set custom margins in millimetersrenderer.RenderingOptions.MarginTop = 50renderer.RenderingOptions.MarginBottom = 50' Enable background colors and imagesrenderer.RenderingOptions.PrintHtmlBackgrounds = True' Set paper size and orientationrenderer.RenderingOptions.PaperSize = PdfPaperSize.A4renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape' Generate PDFs with all settings applied to HTML contentDim htmlContent AsString = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>"Dim pdfDocument AsPdfDocument = renderer.RenderHtmlAsPdf(htmlContent)pdfDocument.SaveAs("styled-output.pdf")
Imports IronPdf
Imports IronPdf.Rendering
Dim renderer As New ChromePdfRenderer()
' Apply print-specific CSS rules
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
' Set custom margins in millimeters
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
' Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = True
' Set paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
' Generate PDFs with all settings applied to HTML content
Dim htmlContent As String = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>"
Dim pdfDocument As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
pdfDocument.SaveAs("styled-output.pdf")
Tipps: Verwenden Sie PdfCssMediaType für sauberere, druckoptimierte Layouts im gerenderten PDF-Dateiformat. Verwenden Sie Screen, um genau das wiederzugeben, was Benutzer in ihrem Browser sehen.
So legen Sie benutzerdefinierte HTTP-Header, Cookies und Anmeldeinformationen fest
Beim Rendern von URLs, die eine Authentifizierung oder spezifische Anfragemetadaten erfordern, ermöglicht IronPDF das Einbinden von Anmeldeinformationen, Session-Cookies und HTTP-Headern in die Anfrage. Dadurch können Intranet-Dashboards, eingeschränkte Berichte oder API-generierte Seiten direkt als PDF gerendert werden, ohne dass der HTML-Code separat abgerufen werden muss.
Für die Basis- oder NTLM-Authentifizierung setzen Sie ein LoginCredentials-Objekt auf dem Renderer. Für tokenbasierten oder sitzungsbasierten Zugriff übergeben Sie Cookies und Header über RenderingOptions, bevor Sie RenderUrlAsPdf aufrufen.
using IronPdf;var renderer = new ChromePdfRenderer();// Network authentication (Basic, Digest, NTLM)renderer.LoginCredentials = new ChromeHttpLoginCredentials{NetworkUsername = "user@domain.com",NetworkPassword = "securePassword"};// Session cookies for authenticated pagesrenderer.RenderingOptions.CustomCookies["sessionId"] = "abc123";// Custom HTTP headers (e.g., Bearer tokens, API keys)renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/quarterly-report");pdf.SaveAs("quarterly-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword"
};
// Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123";
// Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/quarterly-report");
pdf.SaveAs("quarterly-report.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()' Network authentication (Basic, Digest, NTLM)renderer.LoginCredentials = New ChromeHttpLoginCredentialsWith { .NetworkUsername = "user@domain.com", .NetworkPassword = "securePassword"}' Session cookies for authenticated pagesrenderer.RenderingOptions.CustomCookies("sessionId") = "abc123"' Custom HTTP headers (e.g., Bearer tokens, API keys)renderer.RenderingOptions.CustomHttpRequestHeaders("Authorization") = "Bearer eyJhbGciOi..."Dim pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/quarterly-report")pdf.SaveAs("quarterly-report.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = New ChromeHttpLoginCredentials With {
.NetworkUsername = "user@domain.com",
.NetworkPassword = "securePassword"
}
' Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies("sessionId") = "abc123"
' Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders("Authorization") = "Bearer eyJhbGciOi..."
Dim pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/quarterly-report")
pdf.SaveAs("quarterly-report.pdf")
So konfigurieren Sie einen Proxy für die PDF-Darstellung
Beim Rendern von HTML, das externe Ressourcen hinter einem Unternehmensproxy lädt, übergeben Sie die Proxy-Adresse als dritten Parameter an RenderHtmlAsPdf(). Dies ist ein Methodenparameter, keine Eigenschaft von ChromePdfRenderOptions – er wird also pro Render-Aufruf gesetzt, nicht auf der Renderer-Instanz.
Bei authentifizierten Proxys sind die Anmeldedaten direkt in die URL im Format http://user:pass@host:port einzubetten. Sonderzeichen in Passwörtern mit Uri.EscapeDataString() URL-kodieren.
using IronPdf;var renderer = new ChromePdfRenderer();// Proxy is the third parameter — not a render optionPdfDocument pdf = renderer.RenderHtmlAsPdf( "<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>", baseUrlOrPath: null, proxy: "http://proxy.corp.local:8080");pdf.SaveAs("proxied-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Proxy is the third parameter — not a render option
PdfDocument pdf = renderer.RenderHtmlAsPdf(
"<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
baseUrlOrPath: null,
proxy: "http://proxy.corp.local:8080"
);
pdf.SaveAs("proxied-report.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()' Proxy is the third parameter — not a render optionDim pdf AsPdfDocument = renderer.RenderHtmlAsPdf( "<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>", baseUrlOrPath:=Nothing, proxy:="http://proxy.corp.local:8080")pdf.SaveAs("proxied-report.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Proxy is the third parameter — not a render option
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
"<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
baseUrlOrPath:=Nothing,
proxy:="http://proxy.corp.local:8080"
)
pdf.SaveAs("proxied-report.pdf")
Beachten Sie, dass RenderUrlAsPdf() keinen Proxy-Parameter akzeptiert. Um eine Live-URL hinter einem Proxy darzustellen, rufen Sie zunächst den HTML-Code mit HttpClient ab, das mit einem WebProxy konfiguriert ist, und übergeben Sie ihn dann an RenderHtmlAsPdf() mit dem Proxy-Parameter zum Laden der Assets.
3. Wie man erweiterte PDF-Generierungs- & Sicherheitsfunktionen verwendet
Schalten Sie Unternehmensfunktionen für die HTML-zu-PDF-Konvertierung mit erweiterten Vorlagen, Async-Operationen und Sicherheitsfunktionen frei. Diese PDF-Bearbeitungsmethoden ermöglichen es Ihnen, PDF-Dokumente in großem Maßstab zu erstellen, sensible PDF-Dateien zu schützen und die Echtheit von Dokumenten zu gewährleisten, wenn Sie HTML in professionelles PDF-Format konvertieren.
Wie man eine HTML-Vorlage für Batch-PDF-Erstellung generiert
Einfaches Batching von PDF-Erstellung
Batch-PDF-Erstellung ist unerlässlich für das effiziente Erzeugen mehrerer personalisierter PDF-Dokumente. Für grundlegende Szenarien eignet sich die Methode String.Format in C# am besten für einfache PDF-Bearbeitung.
// Simple HTML templating with String.Formatstring htmlTemplate = String.Format("<h1>Hello {0}!</h1>", "World");// Results in HTML content: <h1>Hello World!</h1>
// Simple HTML templating with String.Format
string htmlTemplate = String.Format("<h1>Hello {0}!</h1>", "World");
// Results in HTML content: <h1>Hello World!</h1>
' Simple HTML templating with String.FormatDim htmlTemplate AsString = String.Format("<h1>Hello {0}!</h1>", "World")' Results in HTML content: <h1>Hello World!</h1>
' Simple HTML templating with String.Format
Dim htmlTemplate As String = String.Format("<h1>Hello {0}!</h1>", "World")
' Results in HTML content: <h1>Hello World!</h1>
Für längere Vorlagen, wenn Sie PDF-Dokumente generieren müssen, verwenden Sie Platzhalterersetzung in Ihren HTML-Inhalten:
using IronPdf;// Define reusable HTML template for PDF filesvar htmlTemplate = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>";// Customer names for batch PDF conversion processingvar names = new[] { "John", "James", "Jenny" };// Create personalized PDF documents for each customervar renderer = new ChromePdfRenderer();foreach (var name in names){ // Replace placeholder with actual data in HTML string var htmlInstance = htmlTemplate.Replace("[[NAME]]", name); // Generate personalized PDF document from HTML content var pdf = renderer.RenderHtmlAsPdf(htmlInstance); // Save with customer-specific filename as PDF files pdf.SaveAs($"{name}-invoice.pdf");}
using IronPdf;
// Define reusable HTML template for PDF files
var htmlTemplate = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>";
// Customer names for batch PDF conversion processing
var names = new[] { "John", "James", "Jenny" };
// Create personalized PDF documents for each customer
var renderer = new ChromePdfRenderer();
foreach (var name in names)
{
// Replace placeholder with actual data in HTML string
var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);
// Generate personalized PDF document from HTML content
var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
// Save with customer-specific filename as PDF files
pdf.SaveAs($"{name}-invoice.pdf");
}
ImportsIronPdf' Define reusable HTML template for PDF filesDim htmlTemplate AsString = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>"' Customer names for batch PDF conversion processingDim names AsString() = {"John", "James", "Jenny"}' Create personalized PDF documents for each customerDim renderer As New ChromePdfRenderer()For Each name In names ' Replace placeholder with actual data in HTML string Dim htmlInstance AsString = htmlTemplate.Replace("[[NAME]]", name) ' Generate personalized PDF document from HTML content Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance) ' Save with customer-specific filename as PDF files pdf.SaveAs($"{name}-invoice.pdf")Next
Imports IronPdf
' Define reusable HTML template for PDF files
Dim htmlTemplate As String = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>"
' Customer names for batch PDF conversion processing
Dim names As String() = {"John", "James", "Jenny"}
' Create personalized PDF documents for each customer
Dim renderer As New ChromePdfRenderer()
For Each name In names
' Replace placeholder with actual data in HTML string
Dim htmlInstance As String = htmlTemplate.Replace("[[NAME]]", name)
' Generate personalized PDF document from HTML content
Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance)
' Save with customer-specific filename as PDF files
pdf.SaveAs($"{name}-invoice.pdf")
Next
HTML zu PDF-Vorlage mit Handlebars.NET
Verwenden Sie bei komplexen Vorlagen mit Schleifen und Bedingungen beim Konvertieren von HTML in PDF die erweiterte Vorlagenfunktion mit Handlebars.NET, um PDF-Dokumente mit dynamischen HTML-Inhalten zu erstellen.
# First, install Handlebars.NET for HTML to PDF templatingPM > Install-Package Handlebars.NET
# First, install Handlebars.NET for HTML to PDF templating
PM > Install-Package Handlebars.NET
SHELL
using HandlebarsDotNet;using IronPdf;// Define Handlebars template with placeholders for HTML contentvar source = @"<div class=""entry""> <h1>{{title}}</h1> <div class=""body""> {{body}} </div> </div>";// Compile template for reuse in PDF conversionvar template = Handlebars.Compile(source);// Create data object (can be database records) for HTML to PDF directlyvar data = new { title = "Monthly Report", body = "Sales increased by 15% this month."};// Merge template with data to create HTML contentvar htmlResult = template(data);// Convert templated HTML to PDF using the PDF convertervar renderer = new ChromePdfRenderer();var pdf = renderer.RenderHtmlAsPdf(htmlResult);pdf.SaveAs("monthly-report.pdf");
using HandlebarsDotNet;
using IronPdf;
// Define Handlebars template with placeholders for HTML content
var source =
@"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>";
// Compile template for reuse in PDF conversion
var template = Handlebars.Compile(source);
// Create data object (can be database records) for HTML to PDF directly
var data = new {
title = "Monthly Report",
body = "Sales increased by 15% this month."
};
// Merge template with data to create HTML content
var htmlResult = template(data);
// Convert templated HTML to PDF using the PDF converter
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlResult);
pdf.SaveAs("monthly-report.pdf");
ImportsHandlebarsDotNetImportsIronPdf' Define Handlebars template with placeholders for HTML contentDim source AsString = "<div class=""entry""> <h1>{{title}}</h1> <div class=""body""> {{body}} </div> </div>"' Compile template for reuse in PDF conversionDim template = Handlebars.Compile(source)' Create data object (can be database records) for HTML to PDF directlyDim data = New With { .title = "Monthly Report", .body = "Sales increased by 15% this month."}' Merge template with data to create HTML contentDim htmlResult = template(data)' Convert templated HTML to PDF using the PDF converterDim renderer = New ChromePdfRenderer()Dim pdf = renderer.RenderHtmlAsPdf(htmlResult)pdf.SaveAs("monthly-report.pdf")
Imports HandlebarsDotNet
Imports IronPdf
' Define Handlebars template with placeholders for HTML content
Dim source As String =
"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>"
' Compile template for reuse in PDF conversion
Dim template = Handlebars.Compile(source)
' Create data object (can be database records) for HTML to PDF directly
Dim data = New With {
.title = "Monthly Report",
.body = "Sales increased by 15% this month."
}
' Merge template with data to create HTML content
Dim htmlResult = template(data)
' Convert templated HTML to PDF using the PDF converter
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlResult)
pdf.SaveAs("monthly-report.pdf")
Die Verwaltung des Seitenumbruchs in generierten PDF-Dokumenten gewährleistet professionelle, lesbare Layouts, wenn Sie HTML-Schnipsel konvertieren. Verwenden Sie CSS, um den Seitenumbruch in Ihren PDF-Dateien zu steuern.
IronPDF liefert Enterprise-Performance mit voller Async- und Multithreading-Unterstützung für Ihre Anforderungen an die HTML-zu-PDF-Konvertierung, wenn Sie PDF-Dateien in großem Maßstab erzeugen müssen.
using IronPdf;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;public class PdfGenerationService{ // Async method for non-blocking PDF generation from HTML content public async Task<byte[]> GeneratePdfAsync(string html) { var renderer = new ChromePdfRenderer(); // Async HTML to PDF conversion preserves thread pool var pdf = await renderer.RenderHtmlAsPdfAsync(html); // Return PDF files as byte array for web responses return pdf.BinaryData; } // Concurrent batch PDF generation for multiple HTML strings public async TaskGenerateMultiplePdfsAsync(List<string> htmlVorlagen) { var renderer = new ChromePdfRenderer(); // Create parallel conversion tasks to generate PDF documents var tasks = htmlVorlagen.Select(html => renderer.RenderHtmlAsPdfAsync(html) ); // Await all PDF conversions simultaneously var pdfs = awaitTask.WhenAll(tasks); // Save generated PDF files from HTML content for (int i = 0; i < pdfs.Length; i++) { pdfs[i].SaveAs($"document-{i}.pdf"); } }}
using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
public class PdfGenerationService
{
// Async method for non-blocking PDF generation from HTML content
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
// Async HTML to PDF conversion preserves thread pool
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
// Return PDF files as byte array for web responses
return pdf.BinaryData;
}
// Concurrent batch PDF generation for multiple HTML strings
public async Task GenerateMultiplePdfsAsync(List<string> htmlVorlagen)
{
var renderer = new ChromePdfRenderer();
// Create parallel conversion tasks to generate PDF documents
var tasks = htmlVorlagen.Select(html =>
renderer.RenderHtmlAsPdfAsync(html)
);
// Await all PDF conversions simultaneously
var pdfs = await Task.WhenAll(tasks);
// Save generated PDF files from HTML content
for (int i = 0; i < pdfs.Length; i++)
{
pdfs[i].SaveAs($"document-{i}.pdf");
}
}
}
C#
Tipps: Tipps zur Leistungsoptimierung bei der HTML-zu-PDF-Konvertierung
Verwenden Sie 64-Bit-Systeme für optimale PDF-Erzeugungsleistung.
Sorgen Sie für ausreichende Serverressourcen, wenn Sie PDF-Dokumente generieren (vermeiden Sie unzureichende Gratisangebote)
Gewähren Sie ausreichende RenderDelay für komplexes JavaScript in HTML-Inhalten.
Verwenden Sie ChromePdfRenderer-Instanzen nach Möglichkeit wieder.
Nutzen Sie die Speicheroptimierungen von v2025.9.4 für Batch-Operationen zur Reduzierung der Ressourcennutzung; testen Sie für reduzierte Dateigrößen mit wiederkehrenden benutzerdefinierten Kopf-/Fußzeilen.
Wie man erweiterte Sicherheitsfunktionen hinzufügt
Wie man PDF-Dateien in .NET mit einem Passwort schützt
Schützen Sie empfindliche generierte PDF-Dokumente mit Passwörtern und Berechtigungen, wenn Sie HTML-Inhalte in geschütztes PDF-Format konvertieren.
using IronPdf;var renderer = new ChromePdfRenderer();// Convert HTML to PDF with securityvar pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>");// Configure security settings for PDF filespdf.SecuritySettings.UserPassword = "user123"; // Password to open PDF documentspdf.SecuritySettings.OwnerPassword = "owner456"; // Password to modify PDF files// Set granular permissions for PDF formatpdf.SecuritySettings.AllowUserCopyPasteContent = false;pdf.SecuritySettings.AllowUserAnnotations = false;pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowQuality;// Apply strong encryption to PDF documentspdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256;pdf.SaveAs("secure-document.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Convert HTML to PDF with security
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>");
// Configure security settings for PDF files
pdf.SecuritySettings.UserPassword = "user123"; // Password to open PDF documents
pdf.SecuritySettings.OwnerPassword = "owner456"; // Password to modify PDF files
// Set granular permissions for PDF format
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowQuality;
// Apply strong encryption to PDF documents
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256;
pdf.SaveAs("secure-document.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()' Convert HTML to PDF with securityDim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>")' Configure security settings for PDF filespdf.SecuritySettings.UserPassword = "user123" ' Password to open PDF documentspdf.SecuritySettings.OwnerPassword = "owner456" ' Password to modify PDF files' Set granular permissions for PDF formatpdf.SecuritySettings.AllowUserCopyPasteContent = Falsepdf.SecuritySettings.AllowUserAnnotations = Falsepdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowQuality' Apply strong encryption to PDF documentspdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256pdf.SaveAs("secure-document.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Convert HTML to PDF with security
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>")
' Configure security settings for PDF files
pdf.SecuritySettings.UserPassword = "user123" ' Password to open PDF documents
pdf.SecuritySettings.OwnerPassword = "owner456" ' Password to modify PDF files
' Set granular permissions for PDF format
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowQuality
' Apply strong encryption to PDF documents
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256
pdf.SaveAs("secure-document.pdf")
Wie man digitale Signaturen zu PDF-Dateien hinzufügt
Fügen Sie kryptografische Signaturen hinzu, um die Echtheit von PDF-Dokumenten zu gewährleisten, wenn Sie PDF-Dateien aus HTML-Inhalten generieren.
using IronPdf;using IronPdf.Signing;var renderer = new ChromePdfRenderer();// Generate PDF from HTML pagevar pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>");// Create digital signature with certificate for PDF filesvar signature = new PdfSignature("certificate.pfx", "password"){SigningContact = "legal@company.com",SigningLocation = "New York, NY",SigningReason = "Contract Approval"};// Apply signature to PDF documentspdf.Sign(signature);pdf.SaveAs("signed-contract.pdf");
using IronPdf;
using IronPdf.Signing;
var renderer = new ChromePdfRenderer();
// Generate PDF from HTML page
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>");
// Create digital signature with certificate for PDF files
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "legal@company.com",
SigningLocation = "New York, NY",
SigningReason = "Contract Approval"
};
// Apply signature to PDF documents
pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");
So konvertieren Sie HTML-Formulare in ausfüllbare PDFs
Um standardmäßige HTML-Formularelemente in interaktive, ausfüllbare PDF-Formularfelder umzuwandeln, aktivieren Sie die Rendering-Option CreatePdfFormsFromHtml. Dadurch bleiben Texteingabefelder, Kontrollkästchen, Optionsfelder und Dropdown-Menüs im generierten PDF-Dokument als bearbeitbare Felder erhalten.
using IronPdf;var renderer = new ChromePdfRenderer();// Enable HTML form to PDF form conversionrenderer.RenderingOptions.CreatePdfFormsFromHtml = true;string htmlForm = @" <h2>Employee Onboarding Form</h2> <form> <label>Full Name:</label> <input type='text' name='fullName' value='' /><br/> <label>Department:</label> <select name='department'> <option value='engineering'>Engineering</option> <option value='marketing'>Marketing</option> <option value='sales'>Sales</option> </select><br/> <label>Agree to Terms:</label> <input type='checkbox' name='agreeTerms' /> </form>";var pdf = renderer.RenderHtmlAsPdf(htmlForm);pdf.SaveAs("onboarding-form.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Enable HTML form to PDF form conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
string htmlForm = @"
<h2>Employee Onboarding Form</h2>
<form>
<label>Full Name:</label>
<input type='text' name='fullName' value='' /><br/>
<label>Department:</label>
<select name='department'>
<option value='engineering'>Engineering</option>
<option value='marketing'>Marketing</option>
<option value='sales'>Sales</option>
</select><br/>
<label>Agree to Terms:</label>
<input type='checkbox' name='agreeTerms' />
</form>";
var pdf = renderer.RenderHtmlAsPdf(htmlForm);
pdf.SaveAs("onboarding-form.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()' Enable HTML form to PDF form conversionrenderer.RenderingOptions.CreatePdfFormsFromHtml = TrueDim htmlForm AsString = " <h2>Employee Onboarding Form</h2> <form> <label>Full Name:</label> <input type='text' name='fullName' value='' /><br/> <label>Department:</label> <select name='department'> <option value='engineering'>Engineering</option> <option value='marketing'>Marketing</option> <option value='sales'>Sales</option> </select><br/> <label>Agree to Terms:</label> <input type='checkbox' name='agreeTerms' /> </form>"Dim pdf = renderer.RenderHtmlAsPdf(htmlForm)pdf.SaveAs("onboarding-form.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Enable HTML form to PDF form conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
Dim htmlForm As String = "
<h2>Employee Onboarding Form</h2>
<form>
<label>Full Name:</label>
<input type='text' name='fullName' value='' /><br/>
<label>Department:</label>
<select name='department'>
<option value='engineering'>Engineering</option>
<option value='marketing'>Marketing</option>
<option value='sales'>Sales</option>
</select><br/>
<label>Agree to Terms:</label>
<input type='checkbox' name='agreeTerms' />
</form>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlForm)
pdf.SaveAs("onboarding-form.pdf")
Warnung: Jedes Formularfeld in Ihrem HTML-Code muss ein eindeutiges name-Attribut haben. Doppelte Namen führen dazu, dass Felder im generierten PDF denselben Wert haben, was beim Ausfüllen des Formulars zu unerwartetem Verhalten führt.
Wie man bestimmte HTML-Elemente in PDF konvertiert
Um nur einen bestimmten Abschnitt einer Seite anstatt des gesamten Dokuments darzustellen, isolieren Sie das Zielelement vor dem Rendern. Der direkteste Ansatz nutzt die Rendering-Option JavaScript, um den Dokumenttext durch den Inhalt des Zielelements zu ersetzen, kombiniert mit WaitFor.HtmlQuerySelector(), um sicherzustellen, dass das Element vor der Extraktion vorhanden ist. Der folgende Ausschnitt bewahrt document.head, damit Stylesheets und Schriftarten übernommen werden – ohne diesen Schritt würden CSS-Regeln, die auf Vorfahren-Selektoren basieren, in der extrahierten PDF-Datei verloren gehen.
Für serverseitige Szenarien, in denen Sie Zugriff auf den rohen HTML-Code haben, extrahieren Sie das Zielfragment mit einem Parser wie AngleSharp und übergeben Sie es an RenderHtmlAsPdf() – eine JavaScript-Ausführung ist nicht erforderlich.
using IronPdf;// Full page HTML containing the target elementstring fullPageHtml = @"<html><body> <header><h1>Acme Corp Invoice</h1></header> <div id='invoice-summary'> <h2>Invoice #12345</h2> <p>Total: $1,250.00</p> </div> <footer>Confidential</footer></body></html>";var renderer = new ChromePdfRenderer();renderer.RenderingOptions.EnableJavaScript = true;// Replace the body with only the target elementrenderer.RenderingOptions.Javascript = @" var el = document.querySelector('#invoice-summary'); if (el) { var head = document.head.innerHTML; document.body.innerHTML = el.outerHTML; document.head.innerHTML = head; }";// Wait for the target element before JS executesrenderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000);var pdf = renderer.RenderHtmlAsPdf(fullPageHtml);pdf.SaveAs("invoice-summary.pdf");
using IronPdf;
// Full page HTML containing the target element
string fullPageHtml = @"
<html>
<body>
<header><h1>Acme Corp Invoice</h1></header>
<div id='invoice-summary'>
<h2>Invoice #12345</h2>
<p>Total: $1,250.00</p>
</div>
<footer>Confidential</footer>
</body>
</html>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
// Replace the body with only the target element
renderer.RenderingOptions.Javascript = @"
var el = document.querySelector('#invoice-summary');
if (el) {
var head = document.head.innerHTML;
document.body.innerHTML = el.outerHTML;
document.head.innerHTML = head;
}
";
// Wait for the target element before JS executes
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000);
var pdf = renderer.RenderHtmlAsPdf(fullPageHtml);
pdf.SaveAs("invoice-summary.pdf");
ImportsIronPdf' Full page HTML containing the target elementDim fullPageHtml AsString = "<html><body> <header><h1>Acme Corp Invoice</h1></header> <div id='invoice-summary'> <h2>Invoice #12345</h2> <p>Total: $1,250.00</p> </div> <footer>Confidential</footer></body></html>"Dim renderer As New ChromePdfRenderer()renderer.RenderingOptions.EnableJavaScript = True' Replace the body with only the target elementrenderer.RenderingOptions.Javascript = " var el = document.querySelector('#invoice-summary'); if (el) { var head = document.head.innerHTML; document.body.innerHTML = el.outerHTML; document.head.innerHTML = head; }"' Wait for the target element before JS executesrenderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000)Dim pdf = renderer.RenderHtmlAsPdf(fullPageHtml)pdf.SaveAs("invoice-summary.pdf")
Imports IronPdf
' Full page HTML containing the target element
Dim fullPageHtml As String = "
<html>
<body>
<header><h1>Acme Corp Invoice</h1></header>
<div id='invoice-summary'>
<h2>Invoice #12345</h2>
<p>Total: $1,250.00</p>
</div>
<footer>Confidential</footer>
</body>
</html>"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
' Replace the body with only the target element
renderer.RenderingOptions.Javascript = "
var el = document.querySelector('#invoice-summary');
if (el) {
var head = document.head.innerHTML;
document.body.innerHTML = el.outerHTML;
document.head.innerHTML = head;
}
"
' Wait for the target element before JS executes
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000)
Dim pdf = renderer.RenderHtmlAsPdf(fullPageHtml)
pdf.SaveAs("invoice-summary.pdf")
Es gibt drei Mechanismen zum Rendern von Seiten, die eine Authentifizierung erfordern: Netzwerk-Anmeldeinformationen, benutzerdefinierte Cookies und HTTP-Anforderungsheader. Diese decken die häufigsten Authentifizierungsszenarien bei der Konvertierung geschützter Webinhalte in PDF ab.
Anmeldeinformationen
Verwenden Sie ChromeHttpLoginCredentials für die Basic-, Digest- oder NTLM-Authentifizierung, wenn Sie geschützte URLs in PDF konvertieren.
using IronPdf;var renderer = new ChromePdfRenderer();// Configure network authenticationrenderer.LoginCredentials = new ChromeHttpLoginCredentials{NetworkUsername = "user@domain.com",NetworkPassword = "securePassword",AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic};var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports");pdf.SaveAs("authenticated-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Configure network authentication
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword",
AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic
};
var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports");
pdf.SaveAs("authenticated-report.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()' Configure network authenticationrenderer.LoginCredentials = New ChromeHttpLoginCredentialsWith { .NetworkUsername = "user@domain.com", .NetworkPassword = "securePassword", .AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic}Dim pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports")pdf.SaveAs("authenticated-report.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Configure network authentication
renderer.LoginCredentials = New ChromeHttpLoginCredentials With {
.NetworkUsername = "user@domain.com",
.NetworkPassword = "securePassword",
.AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic
}
Dim pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports")
pdf.SaveAs("authenticated-report.pdf")
Cookies und HTTP-Header
Für tokenbasierte oder sitzungsbasierte Authentifizierung fügen Sie benutzerdefinierte Cookies und HTTP-Header direkt an die Rendering-Anfrage an.
using IronPdf;var renderer = new ChromePdfRenderer();// Add session cookiesrenderer.RenderingOptions.CustomCookies["sessionId"] = "abc123token";renderer.RenderingOptions.CustomCookies["authToken"] = "bearer-xyz";// Add custom HTTP headers (e.g., API key or Bearer token)renderer.RenderingOptions.HttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";var pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard");pdf.SaveAs("dashboard.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Add session cookies
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123token";
renderer.RenderingOptions.CustomCookies["authToken"] = "bearer-xyz";
// Add custom HTTP headers (e.g., API key or Bearer token)
renderer.RenderingOptions.HttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard");
pdf.SaveAs("dashboard.pdf");
C#
Tipps: Bei HTML-Formular-basierten Anmeldungen (POST-Benutzername/Passwort) sollten Sie zunächst die Authentifizierung mit HttpClient durchführen und anschließend die resultierenden Cookies an das CustomCookies-Wörterbuch übergeben, um die geschützte Seite darzustellen.
Wie generiere ich PDFs aus mehreren HTML-Snippets?
Um PDFs durch die Kombination von HTML-Snippets zu erzeugen, können Sie diese zusammenführen . Dadurch werden mehrteilige Berichte erstellt oder Inhalte aus verschiedenen Quellen kombiniert:
var renderer = new ChromePdfRenderer();PdfDocument part1 = renderer.RenderHtmlAsPdf("<h1>Section 1</h1><p>First section content</p>");PdfDocument part2 = renderer.RenderHtmlAsPdf("<h1>Section 2</h1><p>Second section content</p>");var merged = PdfDocument.Merge(part1, part2);merged.SaveAs("Merged.pdf");// Alternative approach: copy specific pagesvar combinedDoc = new PdfDocument();combinedDoc.CopyPage(part1, 0); // Copy first pagecombinedDoc.CopyPage(part2, 0); // Copy first pagecombinedDoc.SaveAs("Combined.pdf");
var renderer = new ChromePdfRenderer();
PdfDocument part1 = renderer.RenderHtmlAsPdf("<h1>Section 1</h1><p>First section content</p>");
PdfDocument part2 = renderer.RenderHtmlAsPdf("<h1>Section 2</h1><p>Second section content</p>");
var merged = PdfDocument.Merge(part1, part2);
merged.SaveAs("Merged.pdf");
// Alternative approach: copy specific pages
var combinedDoc = new PdfDocument();
combinedDoc.CopyPage(part1, 0); // Copy first page
combinedDoc.CopyPage(part2, 0); // Copy first page
combinedDoc.SaveAs("Combined.pdf");
Dim renderer = New ChromePdfRenderer()Dim part1 AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Section 1</h1><p>First section content</p>")Dim part2 AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Section 2</h1><p>Second section content</p>")Dim merged = PdfDocument.Merge(part1, part2)merged.SaveAs("Merged.pdf")' Alternative approach: copy specific pagesDim combinedDoc = New PdfDocument()combinedDoc.CopyPage(part1, 0) ' Copy first pagecombinedDoc.CopyPage(part2, 0) ' Copy first pagecombinedDoc.SaveAs("Combined.pdf")
Dim renderer = New ChromePdfRenderer()
Dim part1 As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Section 1</h1><p>First section content</p>")
Dim part2 As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Section 2</h1><p>Second section content</p>")
Dim merged = PdfDocument.Merge(part1, part2)
merged.SaveAs("Merged.pdf")
' Alternative approach: copy specific pages
Dim combinedDoc = New PdfDocument()
combinedDoc.CopyPage(part1, 0) ' Copy first page
combinedDoc.CopyPage(part2, 0) ' Copy first page
combinedDoc.SaveAs("Combined.pdf")
Dies ist hilfreich beim Erstellen mehrteiliger Berichte aus verschiedenen HTML-Fragmenten. Sie können auch Lesezeichen hinzufügen , um die Navigation zu verbessern.
Wie konvertiere ich HTML in Web-APIs in PDF?
In ASP.NET Web API können PDFs generiert und zurückgegeben werden, ohne sie auf der Festplatte zu speichern. Hierfür wird MemoryStream verwendet. Dieses Muster eignet sich ideal für Blazor Anwendungen und RESTful-Dienste:
[HttpGet("download")]public IActionResultGetPdf(){ var renderer = new ChromePdfRenderer(); string html = "<h1>Web Report</h1><p>Generated dynamically.</p>"; var pdf = renderer.RenderHtmlAsPdf(html); var bytes = pdf.BinaryData; // Optional: Add metadata pdf.MetaData.Author = "API Service"; pdf.MetaData.CreationDate = DateTime.Now; returnFile(bytes, "application/pdf", "report.pdf");}
[HttpGet("download")]
public IActionResult GetPdf()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Web Report</h1><p>Generated dynamically.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
var bytes = pdf.BinaryData;
// Optional: Add metadata
pdf.MetaData.Author = "API Service";
pdf.MetaData.CreationDate = DateTime.Now;
return File(bytes, "application/pdf", "report.pdf");
}
<HttpGet("download")>Public Function GetPdf() AsIActionResult Dim renderer = New ChromePdfRenderer() Dim html AsString = "<h1>Web Report</h1><p>Generated dynamically.</p>" Dim pdf = renderer.RenderHtmlAsPdf(html) Dim bytes = pdf.BinaryData ' Optional: Add metadata pdf.MetaData.Author = "API Service" pdf.MetaData.CreationDate = DateTime.Now ReturnFile(bytes, "application/pdf", "report.pdf")End Function
<HttpGet("download")>
Public Function GetPdf() As IActionResult
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<h1>Web Report</h1><p>Generated dynamically.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
Dim bytes = pdf.BinaryData
' Optional: Add metadata
pdf.MetaData.Author = "API Service"
pdf.MetaData.CreationDate = DateTime.Now
Return File(bytes, "application/pdf", "report.pdf")
End Function
Dieses Muster eignet sich hervorragend für die serverseitige PDF-Generierung in .NET 10 Webanwendungen. Sie können CSHTML-Ansichten in MVC-Anwendungen integrieren.
Wie fügt man Kopfzeilen, Wasserzeichen und Sicherheitseinstellungen hinzu?
Hinzufügen Professional Kopf- und Fußzeilen
Kopf- und Fußzeilen, die Seitenzahlen, Datumsangaben oder Markenlogos anzeigen, machen mehrseitige Dokumente wesentlich lesbarer und Professional. IronPDF verarbeitet sie als HTML-Fragmente, sodass Sie die volle CSS-Formatierung einschließlich Bildern und Markenfarben nutzen können:
using IronPdf;var renderer = new ChromePdfRenderer();renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter{MaxHeight = 50,HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>",BaseUrl = new Uri(@"file:///C:/assets/")};renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter{MaxHeight = 30,HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>",DrawDividerLine = true};renderer.RenderingOptions.MarginTop = 60;renderer.RenderingOptions.MarginBottom = 40;var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>");pdf.SaveAs("report-with-headers.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
MaxHeight = 50,
HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>",
BaseUrl = new Uri(@"file:///C:/assets/")
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
MaxHeight = 30,
HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>",
DrawDividerLine = true
};
renderer.RenderingOptions.MarginTop = 60;
renderer.RenderingOptions.MarginBottom = 40;
var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>");
pdf.SaveAs("report-with-headers.pdf");
ImportsIronPdfDim renderer As New ChromePdfRenderer()renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooterWith { .MaxHeight = 50, .HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>", .BaseUrl = New Uri("file:///C:/assets/")}renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooterWith { .MaxHeight = 30, .HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>", .DrawDividerLine = True}renderer.RenderingOptions.MarginTop = 60renderer.RenderingOptions.MarginBottom = 40Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>")pdf.SaveAs("report-with-headers.pdf")
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.MaxHeight = 50,
.HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>",
.BaseUrl = New Uri("file:///C:/assets/")
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.MaxHeight = 30,
.HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>",
.DrawDividerLine = True
}
renderer.RenderingOptions.MarginTop = 60
renderer.RenderingOptions.MarginBottom = 40
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>")
pdf.SaveAs("report-with-headers.pdf")
Platzhalter wie {page} und {total-pages} werden bei der Darstellung automatisch ersetzt. Überprüfen Sie das Kopf- und Fußzeilen-Tutorial für dynamische Datumsinjektion, Logoplatzierung und wechselnde Seitenstile.
Anwendung von Wasserzeichen, Verschlüsselung und digitalen Signaturen
Wasserzeichen schützen Entwürfe und vertrauliche Berichte. Passwortschutz und Berechtigungseinstellungen schränken ein, wer eine PDF-Datei drucken, kopieren oder bearbeiten darf. Digitale Signaturen fügen Verträgen und regulierten Dokumenten eine überprüfbare Authentizitätsebene hinzu. Sie können alle drei in einem einzigen Arbeitsablauf kombinieren:
using IronPdf;using System.Sicherheit.Cryptography.X509Certificates;var renderer = new ChromePdfRenderer();var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions.</p>");// Watermarkpdf.ApplyWatermark( "<div style='font-size:72px;color:red;opacity:0.3;'>DRAFT</div>", rotation: 45, opacity: 30);// Encryption and permissionspdf.SicherheitSettings.UserPassword = "user123";pdf.SicherheitSettings.OwnerPassword = "owner456";pdf.SicherheitSettings.AllowUserPrinting = IronPdf.Sicherheit.PdfPrintSicherheit.NoPrint;pdf.SicherheitSettings.AllowUserCopyPasteContent = false;// Digital signaturevar cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password");var signature = new PdfSignature(cert){SigningContact = "Jane Smith",SigningLocation = "New York, NY",SigningReason = "Contract Approval"};pdf.Sign(signature);pdf.SaveAsRevision("signed-contract.pdf");
using IronPdf;
using System.Sicherheit.Cryptography.X509Certificates;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions.</p>");
// Watermark
pdf.ApplyWatermark(
"<div style='font-size:72px;color:red;opacity:0.3;'>DRAFT</div>",
rotation: 45,
opacity: 30
);
// Encryption and permissions
pdf.SicherheitSettings.UserPassword = "user123";
pdf.SicherheitSettings.OwnerPassword = "owner456";
pdf.SicherheitSettings.AllowUserPrinting = IronPdf.Sicherheit.PdfPrintSicherheit.NoPrint;
pdf.SicherheitSettings.AllowUserCopyPasteContent = false;
// Digital signature
var cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password");
var signature = new PdfSignature(cert)
{
SigningContact = "Jane Smith",
SigningLocation = "New York, NY",
SigningReason = "Contract Approval"
};
pdf.Sign(signature);
pdf.SaveAsRevision("signed-contract.pdf");
Meine Lieblingsbibliothek dieser Art ist IronPDF. Es ermöglicht eine schnelle und effiziente Bearbeitung von PDF-Dateien. Es verfügt auch über viele wertvolle Funktionen, wie das Exportieren in das PDF/A-Format und das digitale Signieren von PDF-Dokumenten.
IronOCR bedeutet, dass wir jährlich 40.000 $ durch manuelle Verarbeitung einsparen können, während die Produktivität gesteigert wird und Ressourcen für wichtige Aufgaben freigesetzt werden. Ich würde es sehr empfehlen.
Die Iron Suite spielt eine entscheidende Rolle in unseren Operationen. Diese Werkzeuge erhöhen die Effizienz im gesamten Unternehmen, einschließlich der Erstellung von Grundrissen und der Verbesserung des Bestandsmanagements.
4. Wie man HTML auf Cloud-Plattformen in PDF umwandelt
Die Bereitstellung der HTML-zu-PDF-Konvertierung in Cloud-Umgebungen erfordert eine spezifische Konfiguration für das Headless-Rendering, temporäre Dateipfade und die Ressourcenzuweisung. Dieser Abschnitt behandelt die gängigsten Cloud-Plattformen und containerisierten Bereitstellungen mit IronPDF.
Plattform
Min Ressourcen
Paket
AutoConfig
Temporärer Pfad
Schlüssel-Fang
Azure App Service
Stufe B1 (Grundstufe)
IronPdf.Linux
true
/tmp
Kostenlose/Shared-Tarife scheitern – keine GPU, zu wenig Speicher
Azure Functions (Windows)
B1-Ebene
IronPdf
true
/tmp
Deaktivieren Sie die Option "Aus Paketdatei ausführen".
AWS Lambda
512 MB / 330 Sekunden Timeout
IronPdf.Linux
true
/tmp (erforderlich)
Das Standarddateisystem ist schreibgeschützt.
Docker (Ubuntu/Debian)
Bildabhängig
IronPdf.Linux
false
Standardbild
Auf false setzen – Dockerfile kümmert sich um Abhängigkeiten
So stellen Sie die Bereitstellung in Azure vor
Bei der Bereitstellung in Azure Functions oder App Service deaktivieren Sie die GPU-Beschleunigung und stellen Sie sicher, dass Ihre Hosting-Ebene genügend Arbeitsspeicher für das Chrome-basierte Rendering bereitstellt. Fügen Sie diese Einstellungen beim Start der Anwendung hinzu, bevor Rendering-Aufrufe erfolgen.
Azure-Sandboxes laufen ohne grafische Oberfläche und ohne GPU-Zugriff, und die kostenlosen/gemeinsamen Tarife (F1, D1) verfügen nicht über die Ressourcen, die Chrome benötigt. Streben Sie eine B1-Einstufung (Basis) oder höher an.
using IronPdf;// Azure sandboxes block GPU access, always disableIronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;// Required on non-GUI Linux systemsIronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;var renderer = new ChromePdfRenderer();var pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>");pdf.SaveAs("azure-report.pdf");
using IronPdf;
// Azure sandboxes block GPU access, always disable
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Required on non-GUI Linux systems
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>");
pdf.SaveAs("azure-report.pdf");
ImportsIronPdf' Azure sandboxes block GPU access, always disableIronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled' Required on non-GUI Linux systemsIronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = TrueDim renderer As New ChromePdfRenderer()Dim pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>")pdf.SaveAs("azure-report.pdf")
Imports IronPdf
' Azure sandboxes block GPU access, always disable
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
' Required on non-GUI Linux systems
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>")
pdf.SaveAs("azure-report.pdf")
Vorsicht: Die Azure App Service Free- und Shared-Tarife (F1, D1) verfügen nicht über genügend Ressourcen für das Chrome-basierte PDF-Rendering. Verwenden Sie mindestens die Tarifstufe B1 (Basic) oder höher, um Speichermangel- und Prozesszeitüberschreitungsfehler zu vermeiden.
AWS Lambda erfordert eine Docker-basierte Bereitstellung für das Chrome-basierte PDF-Rendering. Das Standard-Lambda-Dateisystem ist schreibgeschützt, daher müssen alle temporären und Bereitstellungs-Pfade auf /tmp verweisen.
Konfigurieren Sie diese Einstellungen am Anfang Ihres Funktionshandlers, bevor Sie Rendering-Aufrufe durchführen.
using Amazon.Lambda.Core;using IronPdf;public class PdfFunction{ public stringFunctionHandler(string input, ILambdaContext context) { // Lambda's only writable directory var tmpPath = "/tmp/";IronPdf.Installation.TempFolderPath = tmpPath;IronPdf.Installation.CustomDeploymentDirectory = tmpPath;IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled; // Let IronPDF install Chrome dependencies on first cold startIronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true; context.Logger.LogLine("Rendering PDF..."); var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(input); // Save to /tmp before uploading to S3 or returning var outputPath = $"{tmpPath}output.pdf"; pdf.SaveAs(outputPath); return outputPath; }}
using Amazon.Lambda.Core;
using IronPdf;
public class PdfFunction
{
public string FunctionHandler(string input, ILambdaContext context)
{
// Lambda's only writable directory
var tmpPath = "/tmp/";
IronPdf.Installation.TempFolderPath = tmpPath;
IronPdf.Installation.CustomDeploymentDirectory = tmpPath;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Let IronPDF install Chrome dependencies on first cold start
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
context.Logger.LogLine("Rendering PDF...");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(input);
// Save to /tmp before uploading to S3 or returning
var outputPath = $"{tmpPath}output.pdf";
pdf.SaveAs(outputPath);
return outputPath;
}
}
ImportsAmazon.Lambda.CoreImportsIronPdfPublic Class PdfFunction Public Function FunctionHandler(input AsString, context AsILambdaContext) AsString ' Lambda's only writable directory Dim tmpPath AsString = "/tmp/"IronPdf.Installation.TempFolderPath = tmpPathIronPdf.Installation.CustomDeploymentDirectory = tmpPathIronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled ' Let IronPDF install Chrome dependencies on first cold startIronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True context.Logger.LogLine("Rendering PDF...") Dim renderer As New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf(input) ' Save to /tmp before uploading to S3 or returning Dim outputPath AsString = $"{tmpPath}output.pdf" pdf.SaveAs(outputPath) Return outputPath End FunctionEnd Class
Imports Amazon.Lambda.Core
Imports IronPdf
Public Class PdfFunction
Public Function FunctionHandler(input As String, context As ILambdaContext) As String
' Lambda's only writable directory
Dim tmpPath As String = "/tmp/"
IronPdf.Installation.TempFolderPath = tmpPath
IronPdf.Installation.CustomDeploymentDirectory = tmpPath
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
' Let IronPDF install Chrome dependencies on first cold start
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
context.Logger.LogLine("Rendering PDF...")
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(input)
' Save to /tmp before uploading to S3 or returning
Dim outputPath As String = $"{tmpPath}output.pdf"
pdf.SaveAs(outputPath)
Return outputPath
End Function
End Class
Hinweis:: Konfigurieren Sie Ihre Lambda-Funktion mit mindestens 512 MB Arbeitsspeicher und einem minimalen Timeout von 60 Sekunden . Das Rendering mit Chrome ist speicherintensiv, und Kaltstarts erfordern zusätzliche Initialisierungszeit für die eingebettete Browser-Engine.
Verwenden Sie für Docker-Bereitstellungen das NuGet-Paket IronPdf.Linux, um die Image-Größe zu reduzieren und das Herunterladen von Assets zur Laufzeit zu vermeiden. Dieses Paket enthält vorkonfigurierte, Linux-native Binärdateien, die für containerisierte Umgebungen optimiert sind.
Setzen Sie LinuxAndDockerDependenciesAutoConfig = false, wenn Ihre Dockerfile die Abhängigkeiten der gemeinsam genutzten Bibliotheken von Chrome bereits über apt-get installiert. Die automatische Installation zur Laufzeit ist in diesem Fall überflüssig und kann zu Berechtigungsfehlern oder längeren Kaltstarts führen.
Plattform
Paket
Schlüsselkonfiguration
Ubuntu 22.04 / Debian
IronPdf.Linux
Standardeinstellung – funktioniert sofort nach dem Auspacken
Alpine Linux
IronPdf.Linux
Installieren Sie Chromium über eine APK-Datei in der Dockerfile.
Amazon Linux 2
IronPdf.Linux
Verwenden Sie LinuxAndDockerDependenciesAutoConfig = true
Windows-Container
IronPdf
Keine zusätzliche Konfiguration erforderlich
Ein minimales mehrstufiges Dockerfile für ein Ubuntu/Debian-basiertes Image:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
COPY . .
RUN dotnet publish -c Release -o /out
FROM mcr.microsoft.com/dotnet/aspnet:8.0
# Install Chrome dependencies for PDF rendering
RUN apt-get update && apt-get install -y \
libglib2.0-0 libnss3 libatk1.0-0 libatk-bridge2.0-0 \
libcups2 libdrm2 libxkbcommon0 libxcomposite1 \
libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 \
libcairo2 libasound2 libxshmfence1 && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /out .
ENTRYPOINT ["dotnet", "MyApp.dll"]
Text
using IronPdf;// Dependencies handled by Dockerfile apt-get, disable runtime installIronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = false;// No GPU in containersIronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;var renderer = new ChromePdfRenderer();var pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>");pdf.SaveAs("output.pdf");
using IronPdf;
// Dependencies handled by Dockerfile apt-get, disable runtime install
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = false;
// No GPU in containers
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>");
pdf.SaveAs("output.pdf");
ImportsIronPdf' Dependencies handled by Dockerfile apt-get, disable runtime installIronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = False' No GPU in containersIronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.DisabledDim renderer As New ChromePdfRenderer()Dim pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>")pdf.SaveAs("output.pdf")
Imports IronPdf
' Dependencies handled by Dockerfile apt-get, disable runtime install
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = False
' No GPU in containers
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>")
pdf.SaveAs("output.pdf")
Wie kann die HTML-zu-PDF-Leistung in .NET Core optimiert und skaliert werden?
IronPDFs Chromium-Engine rendert die meisten Seiten bereits in < 1 s auf moderner Hardware, aber der Durchsatz kann durch Batch-Verarbeitung, Aktivierung von Multithreading und Reduzierung des Headless Chrome-Overheads vervielfacht werden. Die folgenden Tipps gelten gleichermaßen für alle .NET-Versionen.
1. Batch-Rendern in einem Hintergrund-Thread-Pool
IronPdf.License.LicenseKey = "YourLicenseKey";ChromePdfRenderer renderer = new ChromePdfRenderer();// Set rendering optionsrenderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;renderer.RenderHtmlFileAsPdf(@"testFile.html").SaveAs("GeneratedFile.pdf");
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set rendering options
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;
renderer.RenderHtmlFileAsPdf(@"testFile.html").SaveAs("GeneratedFile.pdf");
ImportsIronPdfLicense.LicenseKey = "YourLicenseKey"Dim renderer As New ChromePdfRenderer()' Set rendering optionsrenderer.RenderingOptions.PaperSize = Rendering.PdfPaperSize.A4renderer.RenderingOptions.PaperOrientation = Rendering.PdfPaperOrientation.Portraitrenderer.RenderHtmlFileAsPdf("testFile.html").SaveAs("GeneratedFile.pdf")
Imports IronPdf
License.LicenseKey = "YourLicenseKey"
Dim renderer As New ChromePdfRenderer()
' Set rendering options
renderer.RenderingOptions.PaperSize = Rendering.PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = Rendering.PdfPaperOrientation.Portrait
renderer.RenderHtmlFileAsPdf("testFile.html").SaveAs("GeneratedFile.pdf")
ChromePdfRenderer is thread-safe; eine einzelne Instanz kann Dutzende gleichzeitiger Aufgaben ohne Deadlocks bedienen.
Parallel.ForEach saturiert jeden CPU-Kern; typische Server sehen 4–6× Durchsatzsteigerungen im Vergleich zu einer Einzel-Thread-Schleife.
IronPDF liefert sein eigenes Chromium-Build, aber jeder Render verursacht eine kleine Startsteuer. Pooling hilft, und Linux-Container müssen zwei native libs enthalten:
IronPdf.License.LicenseKey = "YourLicenseKey"
Dim pdf As PdfDocument = PdfDocument.FromFile("1.pdf")
Dim pdf2 As PdfDocument = PdfDocument.FromFile("2.pdf")
pdf.AppendPdf(pdf2)
pdf.SaveAs("appendedFile.pdf")
Live DevTools-Spuren zeigen fehlende Schriftarten, 404-Bilder und Zeitsereignisse ohne erneutes Kompilieren des Codes.
5. PDF-Vorlagen wiederverwenden anstatt neu zu rendern
Für Rechnungsdurchläufe, erstellen Sie ein Vorlagen-PDF mit Platzhaltern wie [[name]] und führen Sie einen Textaustausch durch, anstatt komplexes HTML neu zu erstellen. Es ist 10× schneller und speicherschonend.
5. Vergleich von IronPDF mit anderen .NET PDF-Bibliotheken
IronPDF ist die Lösung der Wahl für viele Teams, wenn es um C#-PDF-Erzeugung geht, dank seiner robusten Chrom-basierten Rendering-Engine, benutzerfreundlichen APIs und häufigen Produktverbesserungen. Lassen Sie uns IronPDF mit anderen PDF-Konvertern vergleichen, um die beste Lösung für Ihre PDF-Erzeugungsanforderungen zu finden.
Schnelle Entscheidungsmatrix: IronPDF gegenüber anderen .NET PDF-Konvertern
Lösung
Wann zu verwenden
Am besten geeignet für
IronPDF
Konvertierung moderner Websites/HTML in PDF mit exakter visueller Treue.
Unternehmensanwendungen, die eine zuverlässige HTML-Rendering-Engine, dynamische Inhalte und professionellen Support erfordern.
wkhtmltopdf
Einfache HTML-Konvertierung in unkritischen Anwendungen, bei denen eine veraltete Darstellung akzeptabel ist.
Grundlegende Dokumentenerierung mit Legacy HTML/CSS.
Syncfusion
Wenn Sie bereits in das Syncfusion-Ökosystem investiert haben oder für eine kostenlose Community-Lizenz in Frage kommen.
Organisationen, die mehrere Syncfusion-Komponenten verwenden.
Aspose.PDF
Komplexe PDF-Bearbeitung, wenn die Qualität der HTML-Darstellung weniger wichtig ist.
Umfassende PDF-Bearbeitungsfunktionen, die über die HTML-Konvertierung hinausgehen.
style="color:#16a34a">KostenloseCommunity MIT <1 Mio. $
Kostenlose Testversion
30 Tage · Voller Funktionsumfang · Keine Einschränkungen
Nicht verfügbar (kostenlos)
30 Tage
Ja (mit Wasserzeichen)
Community <$1M Rev
Ja
Community (5 Seiten)
Kostenlos (10 Seiten)
Nicht verfügbar (kostenlos)
N/A (MIT Free <$1M)
Preistransparenz
Veröffentlicht und am besten
Open Source
Komplex AGPL
Viele Ebenen
Angebot anfordern
Keine Preisangaben veröffentlicht
Veröffentlicht
Veröffentlicht
MIT-Lizenz; Keine Einschränkungen
MIT; Vertrauensbasiert
Vergleich der HTML-zu-PDF-Konvertierung im echten Leben: Rendering der Reddit-Startseite
Um die Qualität der Ausgabe-PDF zu bewerten, haben wir diese Bibliotheken mit der Startseite von Reddit getestet, die dynamische Webinhalte, modernes CSS und HTML-Elemente von JavaScript enthält. Diese Seite dient als ideales Testbeispiel für die Ausgabe-PDF-Erstellung.
IronPDF liefert pixelgenaue Ergebnisse, indem es alle dynamischen Webinhalte, modernen Webfonts, Styling und interaktive Elemente genau so erhält, wie sie in Chrome angezeigt werden - alles in nur wenigen Codezeilen.
Syncfusion
Syncfusion gerenderte PDF mit den meisten Abschnitten und Stylings fehlt, insbesondere mit dynamischen Inhalten. Ursprünglich durch Reddits Sicherheit blockiert. Bessere Ergebnisse erfordern umfangreiche Anpassungen der Befehlszeile, dennoch bleibt das Ergebnis unvollständig.
Aspose.PDF
Aspose.PDF erforderte zunächst einen manuellen HTML-Download (keine direkte URL-Unterstützung). Nach der Konvertierung fehlte es der Ausgabe an ordentlichem Format und fast alle Inhaltsabschnitte fehlten, was sie für moderne Webs mit dynamischen Inhalten ungeeignet machte.
wkhtmltopdf
wkhtmltopdf wurde schnell abgeschlossen, erzeugte aber eine einfache, statische Seite, die wichtige Inhalte wie Live-Updates, dynamische Elemente und interaktive Abschnitte vermisste. Dies demonstriert die Inkompatibilität von wkhtmltopdf mit modernen, JavaScript-gesteuerten Websites.
Schlussfolgerung zur Leistung und Ausgabe-PDF-Qualität
Für .NET-Entwickler, die einen zuverlässigen HTML-zu-PDF-Konverter benötigen, sticht IronPDF mit minimalem Code, einfach zu verwendenden APIs und häufigen Produktverbesserungen heraus.
In einem realen Test mit Webinhalten lieferte es die schnellsten und genausten Ergebnisse, während Syncfusion hinterherhinkte, Aspose zusätzliche Schritte erforderte und wkhtmltopdf moderne Stylings verpasste. IronPDF bietet das beste Gleichgewicht zwischen Geschwindigkeit, Genauigkeit und Einfachheit für heutige HTML-zu-PDF-Konvertierungsworkflows.
Bitte beachten:
Aspose, Syncfusion und wkhtmltopdf sind Warenzeichen ihrer jeweiligen Eigentümer. Diese Seite ist nicht mit ihnen verbunden oder wird von ihnen unterstützt. Alle Namen, Logos und Marken gehören ihren Eigentümern und Vergleiche basieren auf öffentlich verfügbaren Informationen zum Zeitpunkt des Schreibens.
Zusammenfassung
Diese Anleitung deckte alles ab, was zum Konvertieren von HTML zu PDF in .NET erforderlich ist: von der grundlegenden Zeichenfolgenkonvertierung bis zu erweiterten Funktionen wie asynchrone Verarbeitung, digitale Signaturen und Stapelerzeugung. Wir haben drei Konvertierungsmethoden demonstriert, wesentliche Konfigurationen, erweiterte Funktionen und Sicherheitseinstellungen sowie IronPDF mit anderen Bibliotheken im Rahmen eines realen Tests der dynamischen Dokumenterzeugung verglichen.
Während Konkurrenten Schwierigkeiten mit modernen Websites hatten oder komplexe Umgehungsmöglichkeiten erforderlich waren, lieferte IronPDF fehlerfreie Ergebnisse mit minimalem Code und einer leistungsstarken Rendering-Engine.
Bereit, Ihren PDF-Workflow zu vereinfachen und vielseitige PDF-Erstellung mit nur wenigen Codezeilen zu erleben? Installieren Sie IronPDF über den NuGet-Paket-Manager (oder wählen Sie NuGet-Paket verwalten in Visual Studio) und konvertieren Sie noch heute Ihr erstes HTML zu PDF.
Haben Sie Probleme mit den folgenden Fehlern bei der HTML-zu-PDF-Konvertierung? IronPDF bietet 24/7 Ingenieurunterstützung über das Chat-Widget auf https://ironpdf.com/
Schnelle Lösungen für häufige Fehler
Langsames erstes Rendering? Normal. Chrome initialisiert in 2-3s, dann beschleunigt es.
Cloud-Probleme? Verwenden Sie mindestens Azure B1 oder gleichwertige Ressourcen.
Fehlende Assets? Basiswege setzen oder als Base64 einbetten.
Fehlende Elemente? Fügen Sie RenderDelay für die JavaScript-Ausführung hinzu.
Speicher beim Rendern? Aktualisieren Sie auf v2025.9.4 für Korrekturen bei HTML-zu-PDF, Stempeln und Kopfzeilen/Fußzeilen.
Formularfeldprobleme (z. B. lange Textbereiche, Kontrollkästchen)? Behoben in v2025.7.17; sichere einzigartige Namen für Kontrollkästchen.
Benutzerspezifisches Header/Footer-Überlappen oder spezielle Zeichen beschädigt? Gelöst in v2025.8.8; testen Sie Wortumbruch und Metadaten.
Hilfe von den Ingenieuren, die IronPDF entwickelt haben, 24/7
Sie können HTML in C# in PDF konvertieren, indem Sie eine Chrome-Rendering-Bibliothek verwenden, die HTML, CSS3 und JavaScript in pixelgenaue PDFs verwandelt. Mit Tools wie IronPDF können Sie aus URLs, HTML-Strings oder Dateien rendern und dabei Kopfzeilen, Authentifizierung und Druckeinstellungen unterstützen.
Welches ist die beste HTML-zu-PDF-Bibliothek für .NET?
Die beste Bibliothek sollte genaue Chrome-Darstellung, plattformübergreifende Bereitstellung und Unternehmensfunktionen unterstützen. IronPDF deckt all dies ab – läuft auf Windows, Linux, macOS und Docker, mit Unterstützung für Sicherheit, Signaturen, Konformität und skalierbare .NET-Anwendungen.
Welche kostenlosen HTML-zu-PDF-Optionen for .NET gibt es?
Open-Source-Lösungen wie wkhtmltopdf, PuppeteerSharp und Playwright konvertieren HTML kostenlos in PDF, tauschen aber Bedienkomfort gegen Wartung ein — ältere Render-Engines, mitgelieferte Browser-Binaries oder manuelle Serverkonfiguration. IronPDF ist kommerziell, bietet jedoch eine kostenlose 30-Tage-Testversion mit allen Funktionen und ohne Wasserzeichen während der Entwicklung; Produktionslizenzen beginnen bei $999. Preise ansehen →
Wie kann ich HTML-Strings mit C# in PDF konvertieren?
Um HTML-Strings in PDF zu konvertieren, verwenden Sie die ChromePdfRenderer-Klasse und ihre RenderHtmlAsPdf-Methode. Übergeben Sie Ihren HTML-String an diese Methode und speichern Sie das PDF dann mit SaveAs.
Was sind die Schritte, um eine Webseiten-URL in ein PDF-Dokument in C# umzuwandeln?
Sie können eine Webseiten-URL direkt in ein PDF konvertieren, indem Sie die RenderUrlAsPdf-Methode verwenden, die es Ihnen ermöglicht, Stile, Bilder und interaktive Elemente wie Formulare und Hyperlinks zu bewahren.
Wie konvertiere ich in C# eine HTML-Datei in PDF?
Verwenden Sie ChromePdfRenderer.RenderHtmlFileAsPdf("path/to/file.html"), um lokale HTML-Dateien in PDF zu konvertieren. IronPDF löst alle relativen Asset-Pfade (Bilder, CSS, JS) automatisch.
Wie konvertiere ich ASP.NET Razor Pages oder MVC Views zu PDF?
IronPDF bietet dedizierte Erweiterungspakete – IronPdf.Extensions.Razor für Razor Pages und IronPdf.Extensions.Mvc.Core für MVC Views. Verwenden Sie RenderRazorToPdf oder RenderRazorViewToPdf mit Dependenz-Injektion, um Views direkt von Ihren Controllern in PDF zu konvertieren. Razor-Handbuch ansehen →
Wie stelle ich sicher, dass JavaScript-Inhalte im PDF korrekt gerendert werden?
Aktivieren Sie die JavaScript-Darstellung, indem Sie RenderingOptions.EnableJavaScript = true setzen, und fügen Sie eine Renderverzögerung mit RenderingOptions.WaitFor.RenderDelay hinzu, um sicherzustellen, dass dynamische Inhalte vor der Konversion vollständig geladen sind. See WaitFor guide →
Warum ist mein HTML-zu-PDF-Ausdruck leer oder hat fehlende Inhalte?
Ein leeres oder unvollständiges PDF bedeutet fast immer, dass die Seite nicht vollständig gerendert wurde, als sie aufgenommen wurde, oder dass ihre Elemente nicht geladen wurden. Für dynamische oder JavaScript-gesteuerte Inhalte setzen Sie RenderingOptions.EnableJavaScript = true und fügen Sie eine WaitFor.RenderDelay (oder WaitFor.HtmlQuerySelector) hinzu, damit Chrome das Rendering zuerst abschließt. Wenn lokale Bilder, CSS oder Schriftarten fehlen, geben Sie einen BaseUrlPath an, damit relative Pfade korrekt aufgelöst werden. Siehe WaitFor-Leitfaden →
Was ist die beste Methode, um Header und Footer in ein PDF in C# hinzuzufügen?
Verwenden Sie die TextHeaderFooter-Klasse für einfache Text-Header und -Footer oder die HtmlHeaderFooter-Klasse für komplexere HTML-Inhalte. Sie können dynamische Platzhalter wie {page}, {total-pages} und {date} für die automatische Inhaltserzeugung einfügen. Kopf- und Fußzeilen-Handbuch ansehen →
Wie verwalte ich Seitenumbrüche in der PDF-Ausgabe in C# .NET?
Steuern Sie Seitenumbrüche in Ihren PDFs, indem Sie CSS-Eigenschaften wie page-break-after: always und page-break-inside: avoid innerhalb eines Print-Media-Typ-CSS-Blocks verwenden. Seitenumbrüche-Handbuch ansehen →
Welche Optionen stehen für das Festlegen von Papiergröße und Ausrichtung in PDFs zur Verfügung?
Stellen Sie die Papiergröße mit RenderingOptions.PaperSize ein (Optionen umfassen A4, Letter, Legal usw.) und die Ausrichtung mit RenderingOptions.PaperOrientation für Hoch- oder Querformat. Benutzerdefinierte Größen in Millimetern oder Zoll werden ebenfalls unterstützt. Papiergrößen-Handbuch ansehen →
Kann ich authentifizierte Webseiten in PDF konvertieren?
Ja. IronPDF unterstützt Cookies, benutzerdefinierte HTTP-Header und formularbasierte Authentifizierung. Setzen Sie Cookies über ChromePdfRenderer.RenderingOptions.CustomCookies, oder geben Sie Auth-Header für tokenbasierte Authentifizierung an. Windows NTLM und Kerberos-Authentifizierung werden ebenfalls unterstützt. Cookie-Handbuch ansehen →
Kann ich aus einer einzigen HTML-Vorlage mehrere PDFs in C# erstellen?
Ja, erstellen Sie HTML-Vorlagen mit Platzhaltern und verwenden Sie String-Ersetzungen oder Templating-Bibliotheken wie Handlebars.NET. Ersetzen Sie Platzhalter durch tatsächliche Werte in Ihren Schleifen-Daten und erstellen Sie PDFs mit RenderHtmlAsPdf.
Ist es möglich, meine generierten PDFs mit einem Passwort zu sichern?
Ja, Sie können die SecuritySettings-Eigenschaft verwenden, um Benutzer- und Eigentümerpasswörter festzulegen, Berechtigungen wie Drucken und Kopieren zu konfigurieren und AES256-Verschlüsselung mit SecuritySettings.EncryptionAlgorithm anzuwenden. Verschlüsselungs-Handbuch ansehen →
Kann ich PDF/A-konforme Dokumente aus HTML generieren?
Ja. IronPDF unterstützt die Standards PDF/A-1b, PDF/A-2b, PDF/A-3b und PDF/UA für Archivierung und Barrierefreiheit, die die meisten HTML-zu-PDF-Konverter nicht bieten. Siehe PDF/A-Leitfaden →
Wie kann ich die Leistung bei der Erstellung einer großen Anzahl von PDFs optimieren?
Optimieren Sie die Leistung, indem Sie asynchrone Methoden wie RenderHtmlAsPdfAsync für nicht blockierende Operationen verwenden. Nutzen Sie ChromePdfRenderer-Instanzen erneut, verarbeiten Sie mehrere PDFs gleichzeitig mit Task.WhenAll und stellen Sie sicher, dass Sie über ausreichende Serverressourcen auf einem 64-Bit-System verfügen. Siehe asynchronen Leitfaden →
Wie kann ich mehrere PDFs zusammenführen oder eine Titelseite in mein Dokument einfügen?
Verwenden Sie die statische PdfDocument.Merge-Methode, um mehrere PDFs zu kombinieren. Erstellen Sie Ihre Titelseite separat und fügen Sie sie in Ihr Hauptdokument ein, um ein umfassendes PDF zu erstellen. Siehe Zusammenführungsanleitung →
Kann ich IronPDF auf Azure, AWS oder Docker bereitstellen?
.NET 10-Kompatibilität: Unterstützt IronPDF for .NET 10 von Anfang an?
Ja — IronPDF ist vollständig kompatibel mit .NET 10. Laut IronPDF-Release-Notes ist die Bibliothek direkt am ersten Tag bereit für .NET 10-Projekte, ohne zusätzliche Konfiguration. Egal, ob Sie Web-, Konsolen-, Desktop- oder Microservice-Anwendungen verwenden, IronPDF funktioniert „out of the box“ mit .NET 10.
Ist IronPDF kostenlos nutzbar?
IronPDF bietet eine kostenlose 30-Tage-Testversion mit voller Funktionalität und ohne Wasserzeichen in der Entwicklung. Für die Produktion ist eine kommerzielle Lizenz erforderlich, die ab $999 beginnt. Es stehen Lite-, Plus-, Professional- und Enterprise-Stufen zur Verfügung. Preise ansehen →
Wie vergleicht sich die Rendering-Qualität dieser Bibliothek mit anderen Optionen wie wkhtmltopdf?
Diese Bibliothek verwendet eine moderne Chrome-Rendering-Engine für pixelgenaue PDFs, im Gegensatz zu wkhtmltopdfs veralteter WebKit-Engine. Es erfordert keine Server-Executables, unterstützt vollständige JavaScript/CSS3, erhält regelmäßige Updates und bietet professionellen Support.
Warum sollte ich diese Bibliothek gegenüber PDFSharp für HTML-zu-PDF-Konvertierung wählen?
PDFSharp fehlt die eingebaute HTML-zu-PDF-Konvertierung, was komplexe Umgehungsmethoden erfordert. Diese Bibliothek bietet direkte HTML/URL-/Dateikonvertierung mit einer hochrangigen API, Unterstützung für moderne Webtechnologien und regelmäßige Updates mit professionellem Support. Siehe PDFSharp-Vergleich →
Was macht dies zur besseren Wahl als iTextSharp für die HTML-Konvertierung?
Die kostenlose Version von iTextSharp unterstützt keine native HTML-zu-PDF-Konvertierung und hat eine komplexe Low-Level-API. Diese Bibliothek bietet nahtlose HTML-Konvertierung mit einer intuitiven API, volle CSS3-/JavaScript-Unterstützung und keine AGPL-Lizenzbeschränkungen. Siehe iTextSharp-Vergleich →
Wie vergleicht sich die Rendering-Qualität dieser Bibliothek mit der von Aspose.PDF?
Diese Bibliothek erzeugt pixelgenaue PDFs in Chrome-Qualität, während Aspose.PDF oft Stil- und dynamische Inhalte vernachlässigt. Aspose erfordert manuelle HTML-Downloads für die URL-Konvertierung, aber diese Bibliothek konvertiert URLs direkt mit überlegener Genauigkeit. Siehe Aspose-Vergleich →
Warum sollte ich diese Bibliothek gegenüber Syncfusion PDF wählen?
Obwohl Syncfusion leistungsfähig ist, arbeitet der optimierte Chrome-Engine dieser Bibliothek schneller und behandelt dynamische Inhalte effektiver. Es bietet eine einfachere API und zusätzliche Funktionen wie OCR und Barcode-Generierung. Siehe Syncfusion-Vergleich →
Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der Pionierarbeit in der C# PDF-Technologie leistet. Als der ursprüngliche Entwickler hinter der Kern-Codebasis von Iron Software hat er die Produktarchitektur des Unternehmens seit seiner Gründung geprägt und es zusammen mit CEO Cameron Rimington in ein Unternehmen mit mehr als 50 Mitarbeitern verwandelt, das die NASA, Tesla und globale Regierungsbehörden beliefert.