# HTML zu PDF in C# .NET
Als Entwickler von IronPDF wissen wir, wie wichtig es ist, dass die HTML-zu-PDF-Konvertierung genaue, hochwertige Ergebnisse liefert, die den Erwartungen der Kunden entsprechen. Dieses C#-Tutorial führt Sie durch den Aufbau eines HTML-zu-PDF-Konverters für Ihre Anwendungen, Projekte und Websites. Wir werden einen C# HTML-zu-PDF-Konverter entwickeln, und die von IronPDF erzeugten PDF-Dokumente werden pixelgenau den von Google Chrome generierten PDFs entsprechen.
```cs
:title=Get started making PDFs now!
IronPdf.ChromePdfRenderer
.StaticRenderHtmlAsPdf("<p>Hello World</p>")
.SaveAs("pixelperfect.pdf");
```
<hr class="separator" />
<p class="main-content__segment-title">Überblick</p>
<div class="hsg-featured-snippet">
<h2>Wie man HTML in C# in PDF konvertiert</h2>
<img class="featured-snippet__image featured-snippet__image--float-right featured-snippet__image--html-pdf" src="/static-assets/pdf/images/html-to-pdf-converter-in-csharp.png" alt="Wie man HTML in C# in PDF konvertiert" />
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronPdf/">Laden Sie die HTML-zu-PDF-C#-Bibliothek herunter und installieren Sie sie</a></li>
<li><a href="#anchor-create-a-pdf-with-an-html-string-in-c-net">Erstellen Sie ein PDF mit einem HTML-String</a></li>
<li><a href="#anchor-create-a-pdf-with-an-html-string-in-c-net">Verwenden Sie die Methode RenderHtmlAsPdf, um einen HTML-String in ein PDF zu konvertieren</a></li>
<li><a href="#anchor-export-a-pdf-using-existing-url">Exportieren Sie ein PDF mit einer vorhandenen URL</a></li>
<li><a href="#anchor-generate-a-pdf-from-a-html-page">Erzeugen Sie ein PDF aus einer HTML-Seite</a></li>
<li><a href="#anchor-add-custom-headers-and-footers">Fügen Sie benutzerdefinierte Kopf- und Fußzeilen hinzu</a></li>
<li>Rufen Sie SaveAs auf, um die PDF-Datei auf dem Computer zu speichern</li>
<li><a href="#anchor-c-html-to-pdf-conversion-settings">Mehr</a></li>
</ol>
</div>
<br class="main-article__clear-both" />
## HTML zu PDF Konverter für C# & VB.NET
Das programmgesteuerte Erstellen von PDF-Dateien in .NET kann eine frustrierende Aufgabe sein. Das PDF-Dokumentdateiformat wurde eher für Drucker als für Entwickler entworfen. Und C# hat nicht viele geeignete Bibliotheken oder Funktionen für die PDF-Erstellung eingebaut, viele Bibliotheken benötigen zusätzliche Einrichtung und verursachen weitere Frustration, wenn sie mehrere Codezeilen erfordern, um eine einfache Aufgabe zu erledigen.
Das C# HTML-zu-PDF-Konvertierungstool, das wir in diesem Tutorial verwenden werden, ist IronPDF von Iron Software, eine sehr beliebte C#-Bibliothek zur PDF-Erstellung und -Bearbeitung. Diese Bibliothek bietet vollständige PDF-Bearbeitungs- und Erstellungsfunktionen, funktioniert sofort, tut genau das, was Sie benötigen, mit der geringsten Anzahl von Zeilen und hat [hervorragende Dokumentation zu ihren über 50 Funktionen](/features/). IronPDF zeichnet sich dadurch aus, dass es **.NET 10, .NET 9, .NET 8, .NET 7, .NET 6 und .NET 5**, .NET Core, .NET Standard und .NET Framework auf Windows, macOS, Linux, Docker, Azure und AWS unterstützt.
Mit C# und IronPDF ist die Logik zum "<a href="/how-to/create-new-pdfs/">Erstellen eines PDF-Dokuments</a>" oder "<a href="/examples/using-html-to-create-a-pdf/">HTML-zu-PDF-Konvertierung</a>" einfach. Aufgrund des fortschrittlichen Chrome-Renderers von IronPDF wird das Design und Layout der meisten oder aller PDF-Dokumente vorhandene HTML-Assets verwenden.
Diese Methode der dynamischen PDF-Erstellung in .NET mit HTML5 funktioniert gleichermaßen gut in Konsolenanwendungen, Windows Forms-Anwendungen, WPF sowie auf Websites und in MVC.
**IronPDF unterstützt auch das Debuggen Ihres HTML mit Chrome für pixelgenaue PDFs. Ein Tutorial zur Einrichtung finden Sie <a href="/how-to/pixel-perfect-html-to-pdf/">hier</a>.**
IronPDF ist in mehreren Sprachen verfügbar, sowohl innerhalb als auch außerhalb des .NET-Ökosystems.
- [F# Anleitung](/get-started/fsharp-pdf-library-html-to-pdf/)
- [VB.NET Anleitung](/get-started/vb-net-pdf/)
- [Python](/python/tutorials/html-to-pdf/)
- [Java](/java/tutorials/html-to-pdf/)
- [Node.js](/nodejs/tutorials/html-to-pdf/)
IronPDF ist kostenlos für die Entwicklung; ein Lizenzschlüssel wird benötigt, um live zu gehen und das Wasserzeichen der Testversion zu entfernen. Sie können [hier eine Lizenz kaufen](/licensing/) oder sich für einen <a class='js-modal-open' data-modal-id='trial-license'>kostenlosen 30-Tage-Testschlüssel hier anmelden</a>.
<hr class="separator" />
<p class="main-content__segment-title">Schritt 1</p>
## Laden Sie die HTML-zu-PDF-C#-Bibliothek herunter und installieren Sie sie
### Visual Studio - NuGet-Paket-Manager
Klicken Sie in Visual Studio mit der rechten Maustaste auf Ihren Projektlösungs-Explorer und wählen Sie `Manage NuGet Packages...`. Suchen Sie dort einfach nach IronPDF und installieren Sie die neueste Version in Ihrer Lösung... klicken Sie auf OK bei allen Dialogfeldern, die erscheinen. Dies funktioniert auch genauso gut in VB.NET-Projekten.
```shell
:ProductInstall
```
### IronPDF auf der NuGet-Website
Für eine vollständige Übersicht über die Funktionen, Kompatibilität und Downloads von IronPDF besuchen Sie bitte die offizielle Website von IronPDF auf NuGet: <a class="js-modal-open" href="https://www.nuget.org/packages/IronPdf" target="_blank" data-modal-id="trial-license-after-download">https://www.nuget.org/packages/IronPdf</a>
### Installation über DLL
Eine weitere Option ist die direkte Installation der IronPDF-DLL. IronPDF kann heruntergeladen und manuell in das Projekt oder GAC von <a class="js-modal-open" href="/packages/IronPdf.zip" data-modal-id="trial-license-after-download">https://ironpdf.com/packages/IronPdf.zip</a> installiert werden.
<hr class="separator" />
<p class="main-content__segment-title">Anleitungen</p>
## Erstellen Sie ein PDF mit einem HTML-String in C# .NET
**Wie: HTML-String in PDF konvertieren?** Es ist eine sehr effiziente und lohnende Fähigkeit, *eine neue PDF-Datei in C# zu erstellen*.
Wir können einfach die Methode [ChromePdfRenderer.RenderHtmlAsPdf](/object-reference/api/IronPdf.ChromePdfRenderer.html) verwenden, um jeden HTML (HTML5) String in ein PDF zu verwandeln. **C# HTML-zu-PDF-Rendering** wird von einer voll funktionsfähigen Version der Google Chromium-Engine durchgeführt, die mit dem IronPDF NuGet-Paket geliefert wird.
```csharp
using IronPdf;
// ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engine
var renderer = new ChromePdfRenderer();
// Render an HTML string. The result is a PdfDocument held in memory
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Write the PDF to disk
pdf.SaveAs("pixel-perfect.pdf");
```
`RenderHtmlAsPdf` unterstützt vollständig HTML5, CSS3, JavaScript und Bilder. Wenn sich diese Assets auf einer Festplatte befinden, möchten wir möglicherweise den zweiten Parameter von `RenderHtmlAsPdf` auf das Verzeichnis setzen, das die Assets enthält. Diese Methode gibt ein **PdfDocument**-Objekt zurück, eine Klasse, die verwendet wird, um PDF-Informationen zu halten.
### IronPDF rendert Ihr HTML genau so, wie es in Chrome erscheint
Wir haben ein vollständiges Tutorial, das Ihnen ermöglicht, Chrome für vollständiges HTML-Debugging einzurichten, um sicherzustellen, dass die Änderungen, die Sie dort sehen, wenn Sie Ihr HTML, CSS und JavaScript bearbeiten, pixelgenau mit dem Ausgabepdf von IronPDF übereinstimmen, wenn Sie sich entscheiden zu rendern. Bitte finden Sie das Tutorial hier: [Wie man HTML in Chrome debuggt, um pixelgenaue PDFs zu erstellen](/how-to/pixel-perfect-html-to-pdf/).
**Basis-URL-Pfad** (das `BaseUrlOrPath` Argument):
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// The second argument is the base path. Relative URLs in the HTML (the image
// below, but also stylesheets, scripts and fonts) are resolved against it.
var pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", @"C:\MyProject\Assets\");
pdf.SaveAs(@"C:\MyProject\Assets\output.pdf");
```
Alle referenzierten CSS-Stylesheets, Bilder und JavaScript-Dateien werden relativ zu diesem Basis-Pfad sein und können in einer ordentlichen und logischen Struktur gehalten werden. Sie können natürlich auch Bilder, Stylesheets und Assets online referenzieren, einschließlich Web-Fonts wie Google Fonts und sogar jQuery.
<hr class="separator" />
## Exportieren Sie ein PDF mit einer vorhandenen URL | URL zu PDF
Das Rendern vorhandener URLs als PDFs mit C# ist sehr effizient und intuitiv. Dies ermöglicht es Teams auch, die PDF-Design- und Backend-PDF-Rendering-Arbeit auf mehrere Teams aufzuteilen.
Lassen Sie uns eine Seite von Wikipedia.com im folgenden Beispiel rendern:
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// Render a live web page straight from its URL
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
// The PDF is written next to the executable
pdf.SaveAs("wikipedia.pdf");
```
Sie werden feststellen, dass Hyperlinks und sogar HTML-Formulare im von unserem C#-Code generierten PDF erhalten bleiben.
Beim Rendern vorhandener Webseiten haben wir einige Tricks, die wir anwenden können:
### Druck- und Bildschirm-CSS
CSS-Medientypen ermöglichen es einer Seite, separate Stile für Druck und Bildschirm zu tragen. Wir können IronPDF anweisen, "Druck"-CSS zu rendern, das oft einfacher ist. Standardmäßig werden "Bildschirm"-CSS-Stile gerendert, die dem entsprechen, was Sie im Browser sehen.
```csharp
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Choose which CSS media type the page is rendered with.
// Screen (the default) renders the page as a browser displays it;
// Print applies the page's @media print rules instead.
// renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
```
Hauptartikel: [Pixelgenauer HTML-zu-PDF-Vergleich](/how-to/pixel-perfect-html-to-pdf/#decide-to-use-css-media-type-print-or-screen).
### JavaScript
IronPDF unterstützt JavaScript, jQuery und sogar AJAX. Wir müssen möglicherweise [IronPDF anweisen, auf JS oder ajax zu **warten**](/how-to/javascript-to-pdf/), um das Laufen zu beenden, bevor wir einen Schnappschuss unserer Webseite rendern.
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// Let the page's JavaScript run before the snapshot is taken
renderer.RenderingOptions.EnableJavaScript = true;
// Give scripts and AJAX calls 500 milliseconds to finish before rendering.
// For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait
// for a signal instead of a fixed delay.
renderer.RenderingOptions.WaitFor.RenderDelay(500);
```
Wir können die JavaScript-Unterstützung demonstrieren, indem wir die [d3.js chord-diagram Dokumentationsseite](https://d3js.org/d3-chord) rendern, deren Diagramme von JavaScript gezeichnet werden, wenn die Seite geladen wird:
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// The chart is drawn by JavaScript, so let it run and give it a moment to finish
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500);
// Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScript
var pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord");
pdf.SaveAs("chart.pdf");
```
### Responsives CSS
HTML zu PDF mit responsivem CSS in .NET! [Responsive Webseiten](/how-to/html-to-pdf-responsive-css/) sind für die Ansicht in einem Browser konzipiert. IronPDF öffnet kein echtes Browserfenster innerhalb des Betriebssystems Ihres Servers. Ohne ein Browser-Viewport können responsive Layouts auf ihren schmalsten Breakpoint zurückfallen.
Wir empfehlen die Verwendung von **Druck**-CSS-Medientypen, um dieses Problem zu navigieren. Druck-CSS sollte normalerweise nicht responsiv sein.
```csharp
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Responsive layouts are designed for a browser viewport, so render the page's
// print stylesheet instead of its screen stylesheet
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
```
<hr class="separator" />
## Erzeugen Sie ein PDF aus einer HTML-Seite
Wir können auch jede HTML-Seite auf unserer Festplatte in ein PDF rendern. Alle relativen Assets wie CSS, Bilder und js werden gerendert, als ob die Datei mit dem **file://**-Protokoll geöffnet worden wäre.
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// Render an HTML file from disk. Relative CSS, image and script paths
// resolve against the file's own folder, as if opened with file://
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
pdf.SaveAs("Invoice.pdf");
```
Diese Methode hat den Vorteil, dass der Entwickler die Möglichkeit hat, den HTML-Inhalt während der Entwicklung in einem Browser zu testen. Wir empfehlen Chrome, da es der Webbrowser ist, auf dem die Rendering-Engine von IronPDF basiert.
Um [XML in PDF zu konvertieren, können Sie XSLT-Templating verwenden, um Ihren XML-Inhalt in PDF zu drucken](/how-to/xml-to-pdf/).
<hr class="separator" />
## Fügen Sie benutzerdefinierte Kopf- und Fußzeilen hinzu
Kopf- und Fußzeilen können zu PDFs hinzugefügt werden, wenn sie gerendert werden, oder zu bestehenden PDF-Dateien mit IronPDF.
Mit IronPDF können Kopf- und Fußzeilen einfachen textbasierten Inhalt mit der *`TextHeaderFooter`*-Klasse enthalten - oder mit Bildern und reichhaltigem HTML-Inhalt mit der *`HtmlHeaderFooter`*-Klasse.
```csharp
using IronPdf;
using IronPdf.Rendering;
// Create a PDF from an existing HTML file with rendering options set up front
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
// Margins are in millimeters
MarginTop = 50,
MarginBottom = 50,
// Render the page's print stylesheet
CssMediaType = PdfCssMediaType.Print,
// Plain-text header: the document title, centered, above a divider line
TextHeader = new TextHeaderFooter
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
// Plain-text footer: date and time on the left, page numbers on the right
TextFooter = new TextHeaderFooter
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
}
}
};
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
pdf.SaveAs("Invoice.pdf");
// Open the result in the default PDF viewer
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
FileName = "Invoice.pdf",
UseShellExecute = true
});
```
Erkunden Sie alle Rendering-Optionen im folgenden How-to-Artikel: [Wie man die Rendering-Optionen verwendet](/how-to/rendering-options/).
### HTML-Kopf- und Fußzeilen
Die `HtmlHeaderFooter`-Klasse ermöglicht es, reichhaltige Kopf- und Fußzeilen zu generieren, die HTML5-Inhalte enthalten können, die sogar Bilder und Stylesheets umfassen können.
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// An HTML footer can carry markup, styles and images.
// {page} and {total-pages} are filled in for every page.
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};
```
### Dynamische Daten in PDF-Kopf- und Fußzeilen
Wir können Inhalte in den Text und sogar HTML von Kopf- und Fußzeilen mit Platzhaltern wie:
- `{page}` für die aktuelle Seitenzahl
- `{total-pages}` für die Gesamtanzahl der Seiten im PDF
- `{url}` für die URL des gerenderten PDFs, wenn es von einer Webseite gerendert wurde
- `{date}` für das heutige Datum
- `{time}` für die aktuelle Uhrzeit
- `{html-title}` für den `<title>` des gerenderten HTML-Dokuments
- `{pdf-title}` für den Dokumenttitel, der über ChromePdfRenderOptions gesetzt werden kann
<hr class="separator" />
## C# HTML zu PDF Konvertierungseinstellungen
Es gibt viele Nuancen, wie unsere Benutzer und Kunden erwarten, dass PDF-Inhalte gerendert werden.
Die `ChromePdfRenderer`-Klasse enthält eine **RenderingOptions**-Eigenschaft, die verwendet werden kann, um diese Optionen festzulegen.
Zum Beispiel möchten wir möglicherweise nur "`print`"-Stil CSS3-Direktiven akzeptieren:
```csharp
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Render the page's @media print CSS rather than its screen styles
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf");
```
Wir möchten möglicherweise auch die Größe unserer Druckränder ändern, um mehr Leerraum auf der Seite zu schaffen, um Platz für große Kopf- oder Fußzeilen zu schaffen, oder sogar Nullränder für den kommerziellen Druck von Broschüren oder Postern festlegen:
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// Page margins in millimeters. Larger margins leave room for headers and
// footers; set them to 0 for edge-to-edge brochures and posters.
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
```
Wir möchten möglicherweise Hintergrundbilder von HTML-Elementen ein- oder ausschalten:
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// Include CSS background colors and images in the PDF (set false to drop them)
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
var pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>");
pdf.SaveAs("output.pdf");
```
Es ist auch möglich, unsere Ausgabepdfs auf jede virtuelle Papiergröße zu rendern - einschließlich Hoch- und Querformatgrößen und sogar benutzerdefinierte Größen, die in Millimetern oder Zoll festgelegt werden können.
```csharp
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Standard paper sizes and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Or a custom size, in millimeters or inches
// renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297);
// renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);
```
Erkunden Sie alle Rendering-Optionen im folgenden How-to-Artikel: "[Wie man die Rendering-Optionen verwendet](/how-to/rendering-options/)."
<hr class="separator" />
## HTML-Templating anwenden
Das Templating oder "Batch-Erstellen" von PDFs ist eine häufige Anforderung für Internet- und Website-Entwickler.
Anstatt ein PDF-Dokument selbst zu templaten, können wir mit IronPDF unser HTML mit bestehenden, gut erprobten Technologien templaten. Wenn das HTML-Template mit Daten aus einer Query-String oder Datenbank kombiniert wird, erhalten wir ein dynamisch generiertes PDF-Dokument.
Im einfachsten Fall ist die Verwendung der C#-Methode String.Format effektiv für ein einfaches Beispiel.
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// Insert a value into an HTML template with string.Format
string html = string.Format("<h1>Hello {0}!</h1>", "World");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Hello.pdf");
```
Wenn die HTML-Datei länger ist, können wir oft beliebige Platzhalter wie `[[NAME]]` verwenden und sie später mit echten Daten ersetzen.
Das folgende Beispiel erstellt 3 PDFs, die jeweils auf einen Benutzer personalisiert sind.
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// A template with a placeholder to replace
var htmlTemplate = "<p>[[NAME]]</p>";
var names = new[] { "John", "James", "Jenny" };
// One personalized PDF per name
foreach (var name in names)
{
var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);
var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
pdf.SaveAs(name + ".pdf");
}
```
### Fortgeschrittenes Templating mit Handlebars.NET
Eine ausgeklügelte Methode, um C#-Daten mit HTML für die PDF-Erstellung zu kombinieren, ist die Verwendung der Handlebars-Templating-Sprache.
Handlebars ermöglicht es, dynamisches HTML aus C#-Objekten und Klasseninstanzen einschließlich Datenbankeinträgen zu erstellen. Handlebars ist besonders effektiv, wenn eine Abfrage eine unbekannte Anzahl von Zeilen zurückgeben kann, wie bei der Erstellung einer Rechnung.
Wir müssen zuerst ein zusätzliches NuGet-Paket zu unserem Projekt hinzufügen: [https://www.nuget.org/packages/Handlebars.NET/](https://www.nuget.org/packages/Handlebars.NET/)
```csharp
using HandlebarsDotNet;
// A Handlebars template with two placeholders
var source =
@"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>";
// Compile it once, then fill it with any object that has matching properties
var template = Handlebars.Compile(source);
var data = new { title = "My new post", body = "This is my first post!" };
string html = template(data);
// html now contains:
//
// <div class="entry">
// <h1>My new post</h1>
// <div class="body">
// This is my first post!
// </div>
// </div>
```
Um dieses HTML zu rendern, können wir einfach die Methode `RenderHtmlAsPdf` verwenden.
```csharp
using HandlebarsDotNet;
using IronPdf;
// Fill the Handlebars template, then render the resulting HTML
var template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>");
string html = template(new { title = "My new post", body = "This is my first post!" });
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Handlebars.pdf");
```
Sie können mehr über die Handlebars-Templating-Sprache und ihre C#-Implementierung von [GitHub](https://github.com/Handlebars-Net/Handlebars.Net) erfahren.
### Seitenumbrüche mit HTML5 hinzufügen
Eine häufige Anforderung in einem PDF-Dokument ist die Paginierung. Entwickler müssen kontrollieren, wo PDF-Seiten beginnen und enden, um ein sauberes, lesbares Layout zu gewährleisten.
Der einfachste Weg, dies zu tun, ist mit einem weniger bekannten CSS-Trick, der einen Seitenumbruch in jedes gedruckte HTML-Dokument rendert.
```html
<div style='page-break-after: always;'> </div>
```
Das bereitgestellte HTML funktioniert, ist aber kaum best practice. Wir empfehlen, das Medienattribut wie im folgenden Beispiel anzupassen. Eine so ordentliche und saubere Möglichkeit, mehrseitige HTML-Inhalte zu gestalten. Da IronPDF standardmäßig mit dem `screen`-Medientyp rendert, wird ein `media="print"`-Stylesheet nur angewendet, wenn `RenderingOptions.CssMediaType` auf `PdfCssMediaType.Print` gesetzt ist (siehe [Konvertierungseinstellungen](#anchor-c-html-to-pdf-conversion-settings) oben).
```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>This is Page 1</h1>
</div>
<div class="page">
<h1>This is Page 2</h1>
</div>
<div class="page">
<h1>This is Page 3</h1>
</div>
</body>
</html>
```
Das How-To enthält weitere [Tipps und Tricks mit Seitenumbrüchen](/how-to/html-to-pdf-page-breaks/).
<hr class="separator" />
## Fügen Sie eine Titelseite zu einem PDF hinzu
IronPDF macht es einfach, PDF-Dokumente zu kombinieren. Die häufigste Verwendung dieser Technik ist das Hinzufügen einer Titelseite oder Rückseite zu einem bereits gerenderten PDF-Dokument.
Dazu rendern wir zuerst eine Titelseite und verwenden dann die statische Methode `PdfDocument.Merge()`, um die beiden Dokumente zu kombinieren.
```csharp
using IronPdf;
var renderer = new ChromePdfRenderer();
// The document body, rendered from a web page
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");
// Prepend an existing PDF as the cover page. Merge returns a new document.
var cover = PdfDocument.FromFile("CoverPage.pdf");
var pdfMerged = PdfDocument.Merge(cover, pdf);
pdfMerged.SaveAs("Combined.pdf");
```
Ein vollständiges Codebeispiel finden Sie hier: [PDF-Titelseiten-Codebeispiel](/examples/pdf-cover-page/).
<hr class="separator" />
## Fügen Sie ein Wasserzeichen hinzu
Ein weiteres [C# PDF](/use-case/csharp-pdf/) Feature, das IronPDF unterstützt, ist das Hinzufügen eines Wasserzeichens zu Dokumenten. Dies kann verwendet werden, um auf jeder Seite anzuzeigen, dass ein Dokument "vertraulich" oder ein "Muster" ist.
```csharp
using IronPdf;
using IronPdf.Editing;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
// Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.
// The watermark is HTML, so any markup, styling or image can be used.
pdf.ApplyWatermark(
"<h2 style='color:red; font-size:50px'>SAMPLE</h2>",
rotation: 30,
opacity: 50,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
```
Ein vollständiges Codebeispiel finden Sie hier: [PDF-Wasserzeichen-Codebeispiel](/examples/pdf-watermarking/).
<hr class="separator" />
## Laden Sie den C#-Quellcode herunter
Der vollständige **kostenlose HTML-zu-PDF-Konverter C#-Quellcode** für dieses Tutorial steht als gezippte Visual Studio 2022-Projektdatei zum Download bereit. Es wird seine Rendering-Engine verwenden, um PDF-Dokumentobjekte in C# zu erzeugen.
[Laden Sie dieses Tutorial als Visual Studio-Projekt herunter](/tutorials/html-to-pdf/downloads/CSharp-Html-To-Pdf-Tutorial.zip)
Der kostenlose Download enthält alles, was Sie benötigen, um ein PDF aus HTML zu erstellen - einschließlich funktionierender C#-PDF-Codebeispiele für:
1. Konvertieren eines HTML-Strings in PDF mit C#
2. HTML-Datei zu PDF in C# (unterstützt CSS, JavaScript und Bilder)
3. C# HTML zu PDF mit einer URL ("URL zu PDF")
4. C# PDF-Bearbeitungs- und Einstellungsmöglichkeiten
5. Rendering von JavaScript-Canvas-Diagrammen wie d3.js in ein PDF
6. Die PDF-Bibliothek für C#
### Klassenreferenz
Entwickler könnten auch an der `IronPdf.PdfDocument` Klassenreferenz interessiert sein:
[https://ironpdf.com/object-reference/api/IronPdf.PdfDocument.html](https://ironpdf.com/object-reference/api/IronPdf.PdfDocument.html)
Dieses Objektmodell zeigt, wie PDF-Dokumente:
- Verschlüsselt und passwortgeschützt werden können
- Bearbeitet oder mit neuem HTML-Inhalt "gestempelt" werden können
- Mit Vorder- und Hintergrundbildern verbessert werden können
- Auf Seiten- oder Dokumentebene zusammengeführt, verbunden, gekürzt und gespleißt werden können
- Geparst werden können, um Klartext und Bilder zu extrahieren oder mit dem IronOCR-Paket OCR-verarbeitet werden können
<hr class="separator" />
## Blazor HTML zu PDF
Das Hinzufügen von HTML-zu-PDF-Funktionalität zu Ihrem Blazor-Server ist einfach, einfach:
1. Erstellen Sie ein neues Blazor-Serverprojekt oder verwenden Sie ein bestehendes
2. Fügen Sie die IronPDF-Bibliothek zu Ihrem Projekt über NuGet hinzu
3. Fügen Sie eine neue Razor-Komponente hinzu oder verwenden Sie eine bestehende
4. Fügen Sie ein `InputTextArea` hinzu und verknüpfen Sie es mit IronPDF
5. Lassen Sie IronPDF den Rest erledigen und bereitstellen
Für weitere Informationen lesen Sie den [vollständigen Schritt-für-Schritt-Leitfaden](/how-to/blazor-tutorial/) für [die Konvertierung von HTML zu PDF in Blazor-Anwendungen](/how-to/blazor-tutorial/).
<img src="/static-assets/pdf/tutorials/blazor-tutorial/blazor-tutorial-3.webp" alt="PDF, das von einer Blazor-Serverseite mit IronPDF generiert wurde" />
<hr class="separator" />
## Vergleich mit anderen PDF-Bibliotheken
IronPDF ist eine leistungsstarke und funktionsreiche PDF-Bibliothek, die speziell für moderne .NET-Entwickler entwickelt wurde. Mit nativer HTML-zu-PDF-Konvertierung, die von einer fortschrittlichen Chromium-Engine angetrieben wird, einer intuitiven API und regelmäßigen Updates vereinfacht es die Entwicklung und sorgt gleichzeitig für hochwertige Ergebnisse. Lassen Sie uns einen genaueren Blick darauf werfen, wie es im Vergleich zu anderen Tools abschneidet:
### PDFSharp
- **Kernfunktionen**: PDFsharp ist eine Open-Source (MIT) Bibliothek zum Erstellen und Bearbeiten von PDF-Dokumenten in verwaltetem Code. Es hat keine HTML-Rendering-Engine, daher benötigt die Konvertierung von Webinhalten in PDF einen separaten Drittanbieter-Renderer.
- **Moderne Standards**: IronPDF nutzt moderne Webtechnologien, einschließlich HTML, CSS und JavaScript, durch seine Chromium-basierte Engine, um sicherzustellen, dass PDFs ein zeitgemäßes Aussehen und Gefühl beibehalten.
- **Support & Updates**: PDFsharp ist Open Source und veröffentlicht alle paar Monate eine Version, mit kommerziellem Support, der separat von seinem Maintainer verkauft wird. IronPDF veröffentlicht monatliche Updates und Sicherheitspatches, und jede Lizenz beinhaltet professionellen technischen Support, was für Unternehmensanwendungen wichtig ist.
### wkhtmltopdf
- **Integrationserleichterung**: wkhtmltopdf ist ein Kommandozeilen-Tool mit einer C-Bibliothek; es gibt kein offizielles .NET-Paket, daher bedeutet die Verwendung von .NET, dass das native Binary gestartet werden muss (oder es über einen Drittanbieter-Wrapper wie DinkToPdf aufgerufen wird) und dieses Binary für jede Plattform, auf die Sie bereitstellen, bereitgestellt werden muss.
- **Rendering-Technologie**: wkhtmltopdf rendert mit QtWebKit, einem WebKit-Fork, den Qt 2015 eingestellt und in Qt 5.6 entfernt hat, sodass moderne JavaScript- und CSS-Funktionen nicht unterstützt werden, insbesondere auf dynamischen, inhaltsreichen Websites. Die Chromium-Engine von IronPDF rendert aktuelle Webstandards.
- **Fortlaufende Entwicklung**: Die letzte Veröffentlichung von wkhtmltopdf war 0.12.6 im Juni 2020 und sein GitHub-Repository wurde im Januar 2023 archiviert, sodass es keinen Anbietersupport gibt. IronPDF entwickelt sich mit monatlichen Updates und engagiertem Kundenservice weiter.
### iTextSharp
- **HTML-zu-PDF-Rendering**: iText konvertiert HTML über sein separates pdfHTML-Add-on, eine CSS-Layout-Engine anstelle eines Browsers, und die Legacy-iTextSharp-5-Linie erhält jetzt nur noch Sicherheitsfixes. IronPDF rendert HTML mit einer eingebetteten Chromium-Engine im Kernpaket, ohne dass ein Add-on erforderlich ist.
- **Entwicklererfahrung**: Die API von iText arbeitet auf der Ebene von PDF-Objekten und Layoutelementen, was mächtig ist, aber mehr Code für alltägliche Aufgaben bedeutet. IronPDF bietet eine saubere und intuitive C#-API, die das Codieren vereinfacht und die Projektauslieferung beschleunigt.
- **Wartung & Support**: Die kostenlose Nutzung von iText erfolgt unter der AGPL, mit Anbietersupport, der kommerziellen Lizenzen vorbehalten ist, und iTextSharp 5.x ist abgesehen von Sicherheitsfixes end-of-life. IronPDF beinhaltet professionellen Support und monatliche Updates mit jeder Lizenz.
### Aspose.PDF
- **Konvertierungsqualität**: Aspose.PDF konvertiert HTML mit seiner eigenen Layout-Engine anstelle eines Browsers. Seine Dokumentation konvertiert eine Webseite, indem sie zuerst das HTML mit `HttpClient` in einen Stream lädt und diesen dann mit `HtmlLoadOptions` an `Document` übergibt, anstatt direkt von einer URL zu rendern. In unserem r/nfl-Test unten war die Ausgabe fast leer: das Community-Logo, eine Überschrift und ein paar leere Kästchen. Die Chromium-Engine von IronPDF rendert eine URL direkt, einschließlich JavaScript.
- **API-Benutzerfreundlichkeit**: Die API von Aspose.PDF kann ausführlich sein, während IronPDF auf eine entwicklerfreundliche Erfahrung setzt, die die Einrichtungszeit minimiert und die Produktivität steigert.
- **Ausgabegenauigkeit**: Da IronPDF mit Chromium rendert, entspricht das PDF dem, was Chrome für dasselbe HTML zeigt, was das Design und Debugging für die hochvolumige PDF-Erstellung vorhersehbar macht.
### Syncfusion PDF
- **API-Komplexität**: Syncfusion PDF ist eine fähige Bibliothek mit einer größeren API-Oberfläche zum Lernen. IronPDF hingegen bietet eine unkomplizierte API für eine schnelle Integration.
- **Rendering-Engine**: Der HTML-Konverter von Syncfusion verwendet jetzt die Chromium-Blink-Engine; seine älteren WebKit- und Internet Explorer-Engines wurden in Essential Studio 2022 Volume 3 als veraltet markiert. In unserem r/nfl-Test unten behielt die Ausgabe von Syncfusion den Hauptfeed bei, ließ jedoch die Navigations- und Community-Panels fallen, während die Chromium-Engine von IronPDF die gesamte Seite renderte.
- **Über die Konvertierung hinaus**: Das Paket von IronPDF deckt auch digitale Signaturen, Anmerkungen, Formularausfüllung und Barcode-Stempeln ab, sodass dieselbe Bibliothek den Rest des Dokumenten-Workflows abwickelt.
### Rendering-Vergleich
Um die HTML-zu-PDF-Konvertierungsqualität dieser Bibliotheken zu vergleichen, haben wir eine Reddit-Community-Seite, r/nfl, verwendet, die dynamische Inhalte, Live-Updates, moderne CSS- und JavaScript-basierte Elemente enthält:
`https://www.reddit.com/r/nfl/`

Hier sind die Ergebnisse eines einzelnen Durchlaufs mit den Standardeinstellungen jeder Bibliothek. Syncfusion und Aspose.PDF liefen als Evaluierungsbuilds, weshalb ihre Ausgabe Evaluierungswasserzeichen trägt (*klicken Sie auf jedes Bild, um es vergrößert anzuzeigen*):
<div class="competitors-section__wrapper">
<div class="competitors__card half">
<p class="competitors__header">IronPDF</p>
<img
class="competitors__image img-popup"
src="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-2.webp"
alt="Ausgabe der IronPDF-Konvertierung der r/nfl Reddit-Seite von HTML zu PDF"
data-fullsize="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-2.webp" />
<small><strong>Gut formatiertes und visuell genaues PDF, das dynamische Inhalte und modernes Styling bewahrt.</strong></small>
</div>
<div class="competitors__card half">
<p class="competitors__header">SyncFusion</p>
<img
class="competitors__image img-popup"
src="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-3.webp"
alt="Ausgabe der Syncfusion-Konvertierung der r/nfl Reddit-Seite von HTML zu PDF"
data-fullsize="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-3.webp" />
<small><strong>Mit einem Testbuild konvertiert. Der Hauptfeed, der Beitraginhalt und das Styling kamen in einem schmalen einspaltigen Layout durch, aber die linke Navigation und das rechte Community-Panel wurden weggelassen.</strong></small>
</div>
</div>
<div class="competitors-section__wrapper">
<div class="competitors__card half">
<p class="competitors__header">Aspose.PDF</p>
<img
class="competitors__image img-popup"
src="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-4.webp"
alt="Ausgabe der Aspose.PDF-Konvertierung der r/nfl Reddit-Seite von HTML zu PDF"
data-fullsize="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-4.webp" />
<small><strong>Evaluierungsbuild; erforderte das Herunterladen des HTML zuerst (Aspose.PDF lädt HTML aus einem Stream anstelle einer URL). Die Ausgabe war fast leer: das Community-Logo, eine Überschrift und ein paar leere Kästchen.</strong></small>
</div>
<div class="competitors__card half">
<p class="competitors__header">Wkhtmltopdf</p>
<img
class="competitors__image img-popup"
src="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-5.webp"
alt="Ausgabe der wkhtmltopdf-Konvertierung der r/nfl Reddit-Seite von HTML zu PDF"
data-fullsize="/static-assets/pdf/tutorials/html-to-pdf/html-to-pdf-5.webp" />
<small><strong>wkhtmltopdf hat die Konvertierung abgeschlossen, aber das Ergebnis ist der Text und die Bilder der Seite ohne ihr Layout, Styling, dynamische Elemente oder Interaktivität. Dies macht wkhtmltopdf ungeeignet für moderne, dynamische Webseiten.</strong></small>
</div>
</div>
[{i:(PDFsharp hat keine HTML-Rendering-Engine, und iText konvertiert HTML nur über sein separates pdfHTML-Add-on, daher wurde keiner in diesem Browser-Rendering-Test aufgenommen.)}]
### Fazit
Für .NET-Entwickler, die eine moderne und zuverlässige PDF-Lösung suchen, ist IronPDF eine starke Wahl. Seine Chromium-basierte HTML-zu-PDF-Konvertierung, Benutzerfreundlichkeit, regelmäßige Updates und breite Funktionspalette machen es zu einer Top-Wahl. Egal, ob Sie an einem kleinen Projekt oder einer groß angelegten Unternehmensanwendung arbeiten, IronPDF steigert die Produktivität und vermeidet die Risiken, die mit veralteten oder nicht unterstützten Bibliotheken verbunden sind. Entwickelt für kommerzielle Anwendungen, hält IronPDF Ihre Projekte auf einer gewarteten und unterstützten Bibliothek.
In unserem Test mit einer realen dynamischen Webseite lieferte IronPDF das vollständigste und genaueste Rendering. Syncfusion ließ die Navigations- und Community-Panels fallen. Aspose.PDF erforderte das Herunterladen des HTML zuerst und renderte trotzdem fast nichts der Seite. wkhtmltopdf produzierte den Text und die Bilder ohne das Styling der Seite, was für moderne Seiten ungeeignet ist.
Für moderne HTML-zu-PDF-Workflows ist diese Kombination aus Rendering-Genauigkeit und einer kleinen, lesbaren API das, was IronPDF auszeichnet.
**Erleben Sie die vollständige Funktionssuite von IronPDF, die dynamisches, schweres CSS-HTML mühelos in PDF konvertiert. Testen Sie es jetzt mit unserer [kostenlosen Testversion](trial-license).**
<hr class="separator" />
## Sehen Sie sich das HTML-zu-PDF in C# Tutorial-Video an
<a name="video"></a>
Mit dem PDF-Dokument können Sie den folgenden Link besuchen, um zu erfahren, wie Sie [Chrome so einstellen, dass PDFs im Browser geöffnet werden, anstatt sie herunterzuladen](https://support.google.com/chrome/answer/114662).
!!!--LIBRARY_GET_STARTED_WITH_PRODUCT_TRIAL_EXTENDED_BLOCK--!!!
Als Entwickler von IronPDF wissen wir, wie wichtig es ist, dass die HTML-zu-PDF-Konvertierung genaue, hochwertige Ergebnisse liefert, die den Erwartungen der Kunden entsprechen. Dieses C#-Tutorial führt Sie durch den Aufbau eines HTML-zu-PDF-Konverters für Ihre Anwendungen, Projekte und Websites. Wir werden einen C# HTML-zu-PDF-Konverter entwickeln, und die von IronPDF erzeugten PDF-Dokumente werden pixelgenau den von Google Chrome generierten PDFs entsprechen.
1Install IronPDF with NuGet Package Manager
PM > Install-Package IronPdf
Install-Package IronPdf
2Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.
Das programmgesteuerte Erstellen von PDF-Dateien in .NET kann eine frustrierende Aufgabe sein. Das PDF-Dokumentdateiformat wurde eher für Drucker als für Entwickler entworfen. Und C# hat nicht viele geeignete Bibliotheken oder Funktionen für die PDF-Erstellung eingebaut, viele Bibliotheken benötigen zusätzliche Einrichtung und verursachen weitere Frustration, wenn sie mehrere Codezeilen erfordern, um eine einfache Aufgabe zu erledigen.
Das C# HTML-zu-PDF-Konvertierungstool, das wir in diesem Tutorial verwenden werden, ist IronPDF von Iron Software, eine sehr beliebte C#-Bibliothek zur PDF-Erstellung und -Bearbeitung. Diese Bibliothek bietet vollständige PDF-Bearbeitungs- und Erstellungsfunktionen, funktioniert sofort, tut genau das, was Sie benötigen, mit der geringsten Anzahl von Zeilen und hat hervorragende Dokumentation zu ihren über 50 Funktionen. IronPDF zeichnet sich dadurch aus, dass es .NET 10, .NET 9, .NET 8, .NET 7, .NET 6 und .NET 5, .NET Core, .NET Standard und .NET Framework auf Windows, macOS, Linux, Docker, Azure und AWS unterstützt.
Mit C# und IronPDF ist die Logik zum "Erstellen eines PDF-Dokuments" oder "HTML-zu-PDF-Konvertierung" einfach. Aufgrund des fortschrittlichen Chrome-Renderers von IronPDF wird das Design und Layout der meisten oder aller PDF-Dokumente vorhandene HTML-Assets verwenden.
Diese Methode der dynamischen PDF-Erstellung in .NET mit HTML5 funktioniert gleichermaßen gut in Konsolenanwendungen, Windows Forms-Anwendungen, WPF sowie auf Websites und in MVC.
IronPDF unterstützt auch das Debuggen Ihres HTML mit Chrome für pixelgenaue PDFs. Ein Tutorial zur Einrichtung finden Sie hier.
IronPDF ist in mehreren Sprachen verfügbar, sowohl innerhalb als auch außerhalb des .NET-Ökosystems.
Laden Sie die HTML-zu-PDF-C#-Bibliothek herunter und installieren Sie sie
Visual Studio - NuGet-Paket-Manager
Klicken Sie in Visual Studio mit der rechten Maustaste auf Ihren Projektlösungs-Explorer und wählen Sie Manage NuGet Packages.... Suchen Sie dort einfach nach IronPDF und installieren Sie die neueste Version in Ihrer Lösung... klicken Sie auf OK bei allen Dialogfeldern, die erscheinen. Dies funktioniert auch genauso gut in VB.NET-Projekten.
PM > Install-Package IronPdf
Install-Package IronPdf
IronPDF auf der NuGet-Website
Für eine vollständige Übersicht über die Funktionen, Kompatibilität und Downloads von IronPDF besuchen Sie bitte die offizielle Website von IronPDF auf NuGet: https://www.nuget.org/packages/IronPdf
Installation über DLL
Eine weitere Option ist die direkte Installation der IronPDF-DLL. IronPDF kann heruntergeladen und manuell in das Projekt oder GAC von https://ironpdf.com/packages/IronPdf.zip installiert werden.
Anleitungen
Erstellen Sie ein PDF mit einem HTML-String in C# .NET
Wie: HTML-String in PDF konvertieren? Es ist eine sehr effiziente und lohnende Fähigkeit, eine neue PDF-Datei in C# zu erstellen.
Wir können einfach die Methode ChromePdfRenderer.RenderHtmlAsPdf verwenden, um jeden HTML (HTML5) String in ein PDF zu verwandeln. C# HTML-zu-PDF-Rendering wird von einer voll funktionsfähigen Version der Google Chromium-Engine durchgeführt, die mit dem IronPDF NuGet-Paket geliefert wird.
using IronPdf;// ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome enginevar renderer = new ChromePdfRenderer();// Render an HTML string. The result is a PdfDocument held in memoryvar pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");// Write the PDF to diskpdf.SaveAs("pixel-perfect.pdf");
using IronPdf;
// ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engine
var renderer = new ChromePdfRenderer();
// Render an HTML string. The result is a PdfDocument held in memory
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Write the PDF to disk
pdf.SaveAs("pixel-perfect.pdf");
ImportsIronPdf' ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engineDim renderer = New ChromePdfRenderer()' Render an HTML string. The result is a PdfDocument held in memoryDim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")' Write the PDF to diskpdf.SaveAs("pixel-perfect.pdf")
Imports IronPdf
' ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engine
Dim renderer = New ChromePdfRenderer()
' Render an HTML string. The result is a PdfDocument held in memory
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
' Write the PDF to disk
pdf.SaveAs("pixel-perfect.pdf")
RenderHtmlAsPdf unterstützt vollständig HTML5, CSS3, JavaScript und Bilder. Wenn sich diese Assets auf einer Festplatte befinden, möchten wir möglicherweise den zweiten Parameter von RenderHtmlAsPdf auf das Verzeichnis setzen, das die Assets enthält. Diese Methode gibt ein PdfDocument-Objekt zurück, eine Klasse, die verwendet wird, um PDF-Informationen zu halten.
IronPDF rendert Ihr HTML genau so, wie es in Chrome erscheint
Wir haben ein vollständiges Tutorial, das Ihnen ermöglicht, Chrome für vollständiges HTML-Debugging einzurichten, um sicherzustellen, dass die Änderungen, die Sie dort sehen, wenn Sie Ihr HTML, CSS und JavaScript bearbeiten, pixelgenau mit dem Ausgabepdf von IronPDF übereinstimmen, wenn Sie sich entscheiden zu rendern. Bitte finden Sie das Tutorial hier: Wie man HTML in Chrome debuggt, um pixelgenaue PDFs zu erstellen.
Basis-URL-Pfad (das BaseUrlOrPath Argument):
using IronPdf;var renderer = new ChromePdfRenderer();// The second argument is the base path. Relative URLs in the HTML (the image// below, but also stylesheets, scripts and fonts) are resolved against it.var pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", @"C:\MyProject\Assets\");pdf.SaveAs(@"C:\MyProject\Assets\output.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// The second argument is the base path. Relative URLs in the HTML (the image
// below, but also stylesheets, scripts and fonts) are resolved against it.
var pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", @"C:\MyProject\Assets\");
pdf.SaveAs(@"C:\MyProject\Assets\output.pdf");
Dim renderer = New ChromePdfRenderer()' The second argument is the base path. Relative URLs in the HTML (the image' below, but also stylesheets, scripts and fonts) are resolved against it.Dim pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", "C:\MyProject\Assets\")pdf.SaveAs("C:\MyProject\Assets\output.pdf")
Dim renderer = New ChromePdfRenderer()
' The second argument is the base path. Relative URLs in the HTML (the image
' below, but also stylesheets, scripts and fonts) are resolved against it.
Dim pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", "C:\MyProject\Assets\")
pdf.SaveAs("C:\MyProject\Assets\output.pdf")
Alle referenzierten CSS-Stylesheets, Bilder und JavaScript-Dateien werden relativ zu diesem Basis-Pfad sein und können in einer ordentlichen und logischen Struktur gehalten werden. Sie können natürlich auch Bilder, Stylesheets und Assets online referenzieren, einschließlich Web-Fonts wie Google Fonts und sogar jQuery.
Exportieren Sie ein PDF mit einer vorhandenen URL | URL zu PDF
Das Rendern vorhandener URLs als PDFs mit C# ist sehr effizient und intuitiv. Dies ermöglicht es Teams auch, die PDF-Design- und Backend-PDF-Rendering-Arbeit auf mehrere Teams aufzuteilen.
Lassen Sie uns eine Seite von Wikipedia.com im folgenden Beispiel rendern:
using IronPdf;var renderer = new ChromePdfRenderer();// Render a live web page straight from its URLvar pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");// The PDF is written next to the executablepdf.SaveAs("wikipedia.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Render a live web page straight from its URL
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
// The PDF is written next to the executable
pdf.SaveAs("wikipedia.pdf");
ImportsIronPdfDim renderer = New ChromePdfRenderer()' Render a live web page straight from its URLDim pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")' The PDF is written next to the executablepdf.SaveAs("wikipedia.pdf")
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' Render a live web page straight from its URL
Dim pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")
' The PDF is written next to the executable
pdf.SaveAs("wikipedia.pdf")
Sie werden feststellen, dass Hyperlinks und sogar HTML-Formulare im von unserem C#-Code generierten PDF erhalten bleiben.
Beim Rendern vorhandener Webseiten haben wir einige Tricks, die wir anwenden können:
Druck- und Bildschirm-CSS
CSS-Medientypen ermöglichen es einer Seite, separate Stile für Druck und Bildschirm zu tragen. Wir können IronPDF anweisen, "Druck"-CSS zu rendern, das oft einfacher ist. Standardmäßig werden "Bildschirm"-CSS-Stile gerendert, die dem entsprechen, was Sie im Browser sehen.
using IronPdf;using IronPdf.Rendering;var renderer = new ChromePdfRenderer();// Choose which CSS media type the page is rendered with.// Screen (the default) renders the page as a browser displays it;// Print applies the page's @media print rules instead.// renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Choose which CSS media type the page is rendered with.
// Screen (the default) renders the page as a browser displays it;
// Print applies the page's @media print rules instead.
// renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
ImportsIronPdfImportsIronPdf.RenderingDim renderer = New ChromePdfRenderer()' Choose which CSS media type the page is rendered with.' Screen (the default) renders the page as a browser displays it;' Print applies the page's @media print rules instead.' renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screenrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
Imports IronPdf
Imports IronPdf.Rendering
Dim renderer = New ChromePdfRenderer()
' Choose which CSS media type the page is rendered with.
' Screen (the default) renders the page as a browser displays it;
' Print applies the page's @media print rules instead.
' renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
IronPDF unterstützt JavaScript, jQuery und sogar AJAX. Wir müssen möglicherweise IronPDF anweisen, auf JS oder ajax zu warten, um das Laufen zu beenden, bevor wir einen Schnappschuss unserer Webseite rendern.
using IronPdf;var renderer = new ChromePdfRenderer();// Let the page's JavaScript run before the snapshot is takenrenderer.RenderingOptions.EnableJavaScript = true;// Give scripts and AJAX calls 500 milliseconds to finish before rendering.// For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait// for a signal instead of a fixed delay.renderer.RenderingOptions.WaitFor.RenderDelay(500);
using IronPdf;
var renderer = new ChromePdfRenderer();
// Let the page's JavaScript run before the snapshot is taken
renderer.RenderingOptions.EnableJavaScript = true;
// Give scripts and AJAX calls 500 milliseconds to finish before rendering.
// For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait
// for a signal instead of a fixed delay.
renderer.RenderingOptions.WaitFor.RenderDelay(500);
Dim renderer = New ChromePdfRenderer()' Let the page's JavaScript run before the snapshot is takenrenderer.RenderingOptions.EnableJavaScript = True' Give scripts and AJAX calls 500 milliseconds to finish before rendering.' For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait' for a signal instead of a fixed delay.renderer.RenderingOptions.WaitFor.RenderDelay(500)
Dim renderer = New ChromePdfRenderer()
' Let the page's JavaScript run before the snapshot is taken
renderer.RenderingOptions.EnableJavaScript = True
' Give scripts and AJAX calls 500 milliseconds to finish before rendering.
' For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait
' for a signal instead of a fixed delay.
renderer.RenderingOptions.WaitFor.RenderDelay(500)
Wir können die JavaScript-Unterstützung demonstrieren, indem wir die d3.js chord-diagram Dokumentationsseite rendern, deren Diagramme von JavaScript gezeichnet werden, wenn die Seite geladen wird:
using IronPdf;var renderer = new ChromePdfRenderer();// The chart is drawn by JavaScript, so let it run and give it a moment to finishrenderer.RenderingOptions.EnableJavaScript = true;renderer.RenderingOptions.WaitFor.RenderDelay(500);// Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScriptvar pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord");pdf.SaveAs("chart.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// The chart is drawn by JavaScript, so let it run and give it a moment to finish
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500);
// Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScript
var pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord");
pdf.SaveAs("chart.pdf");
ImportsIronPdfDim renderer = New ChromePdfRenderer()' The chart is drawn by JavaScript, so let it run and give it a moment to finishrenderer.RenderingOptions.EnableJavaScript = Truerenderer.RenderingOptions.WaitFor.RenderDelay(500)' Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScriptDim pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord")pdf.SaveAs("chart.pdf")
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' The chart is drawn by JavaScript, so let it run and give it a moment to finish
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.WaitFor.RenderDelay(500)
' Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScript
Dim pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord")
pdf.SaveAs("chart.pdf")
Responsives CSS
HTML zu PDF mit responsivem CSS in .NET! Responsive Webseiten sind für die Ansicht in einem Browser konzipiert. IronPDF öffnet kein echtes Browserfenster innerhalb des Betriebssystems Ihres Servers. Ohne ein Browser-Viewport können responsive Layouts auf ihren schmalsten Breakpoint zurückfallen.
Wir empfehlen die Verwendung von Druck-CSS-Medientypen, um dieses Problem zu navigieren. Druck-CSS sollte normalerweise nicht responsiv sein.
using IronPdf;using IronPdf.Rendering;var renderer = new ChromePdfRenderer();// Responsive layouts are designed for a browser viewport, so render the page's// print stylesheet instead of its screen stylesheetrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Responsive layouts are designed for a browser viewport, so render the page's
// print stylesheet instead of its screen stylesheet
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
ImportsIronPdfImportsIronPdf.RenderingDim renderer As New ChromePdfRenderer()' Responsive layouts are designed for a browser viewport, so render the page's' print stylesheet instead of its screen stylesheetrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
Imports IronPdf
Imports IronPdf.Rendering
Dim renderer As New ChromePdfRenderer()
' Responsive layouts are designed for a browser viewport, so render the page's
' print stylesheet instead of its screen stylesheet
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
Erzeugen Sie ein PDF aus einer HTML-Seite
Wir können auch jede HTML-Seite auf unserer Festplatte in ein PDF rendern. Alle relativen Assets wie CSS, Bilder und js werden gerendert, als ob die Datei mit dem file://-Protokoll geöffnet worden wäre.
using IronPdf;var renderer = new ChromePdfRenderer();// Render an HTML file from disk. Relative CSS, image and script paths// resolve against the file's own folder, as if opened with file://var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");pdf.SaveAs("Invoice.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Render an HTML file from disk. Relative CSS, image and script paths
// resolve against the file's own folder, as if opened with file://
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
pdf.SaveAs("Invoice.pdf");
Dim renderer = New ChromePdfRenderer()' Render an HTML file from disk. Relative CSS, image and script paths' resolve against the file's own folder, as if opened with file://Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")pdf.SaveAs("Invoice.pdf")
Dim renderer = New ChromePdfRenderer()
' Render an HTML file from disk. Relative CSS, image and script paths
' resolve against the file's own folder, as if opened with file://
Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
pdf.SaveAs("Invoice.pdf")
Diese Methode hat den Vorteil, dass der Entwickler die Möglichkeit hat, den HTML-Inhalt während der Entwicklung in einem Browser zu testen. Wir empfehlen Chrome, da es der Webbrowser ist, auf dem die Rendering-Engine von IronPDF basiert.
Fügen Sie benutzerdefinierte Kopf- und Fußzeilen hinzu
Kopf- und Fußzeilen können zu PDFs hinzugefügt werden, wenn sie gerendert werden, oder zu bestehenden PDF-Dateien mit IronPDF.
Mit IronPDF können Kopf- und Fußzeilen einfachen textbasierten Inhalt mit der TextHeaderFooter-Klasse enthalten - oder mit Bildern und reichhaltigem HTML-Inhalt mit der HtmlHeaderFooter-Klasse.
using IronPdf;using IronPdf.Rendering;// Create a PDF from an existing HTML file with rendering options set up frontvar renderer = new ChromePdfRenderer{RenderingOptions = new ChromePdfRenderOptions { // Margins are in millimetersMarginTop = 50,MarginBottom = 50, // Render the page's print stylesheetCssMediaType = PdfCssMediaType.Print, // Plain-text header: the document title, centered, above a divider lineTextHeader = new TextHeaderFooter {CenterText = "{pdf-title}",DrawDividerLine = true,FontSize = 16 }, // Plain-text footer: date and time on the left, page numbers on the rightTextFooter = new TextHeaderFooter {LeftText = "{date} {time}",RightText = "Page {page} of {total-pages}",DrawDividerLine = true,FontSize = 14 } }};var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");pdf.SaveAs("Invoice.pdf");// Open the result in the default PDF viewerSystem.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo{FileName = "Invoice.pdf",UseShellExecute = true});
using IronPdf;
using IronPdf.Rendering;
// Create a PDF from an existing HTML file with rendering options set up front
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
// Margins are in millimeters
MarginTop = 50,
MarginBottom = 50,
// Render the page's print stylesheet
CssMediaType = PdfCssMediaType.Print,
// Plain-text header: the document title, centered, above a divider line
TextHeader = new TextHeaderFooter
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
// Plain-text footer: date and time on the left, page numbers on the right
TextFooter = new TextHeaderFooter
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
}
}
};
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
pdf.SaveAs("Invoice.pdf");
// Open the result in the default PDF viewer
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
FileName = "Invoice.pdf",
UseShellExecute = true
});
ImportsIronPdfImportsIronPdf.Rendering' Create a PDF from an existing HTML file with rendering options set up frontDim renderer = New ChromePdfRendererWith { .RenderingOptions = New ChromePdfRenderOptionsWith { ' Margins are in millimeters .MarginTop = 50, .MarginBottom = 50, ' Render the page's print stylesheet .CssMediaType = PdfCssMediaType.Print, ' Plain-text header: the document title, centered, above a divider line .TextHeader = New TextHeaderFooterWith { .CenterText = "{pdf-title}", .DrawDividerLine = True, .FontSize = 16 }, ' Plain-text footer: date and time on the left, page numbers on the right .TextFooter = New TextHeaderFooterWith { .LeftText = "{date} {time}", .RightText = "Page {page} of {total-pages}", .DrawDividerLine = True, .FontSize = 14 } }}Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")pdf.SaveAs("Invoice.pdf")' Open the result in the default PDF viewerSystem.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfoWith { .FileName = "Invoice.pdf", .UseShellExecute = True})
Imports IronPdf
Imports IronPdf.Rendering
' Create a PDF from an existing HTML file with rendering options set up front
Dim renderer = New ChromePdfRenderer With {
.RenderingOptions = New ChromePdfRenderOptions With {
' Margins are in millimeters
.MarginTop = 50,
.MarginBottom = 50,
' Render the page's print stylesheet
.CssMediaType = PdfCssMediaType.Print,
' Plain-text header: the document title, centered, above a divider line
.TextHeader = New TextHeaderFooter With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
},
' Plain-text footer: date and time on the left, page numbers on the right
.TextFooter = New TextHeaderFooter With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
}
}
}
Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
pdf.SaveAs("Invoice.pdf")
' Open the result in the default PDF viewer
System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo With {
.FileName = "Invoice.pdf",
.UseShellExecute = True
})
Die HtmlHeaderFooter-Klasse ermöglicht es, reichhaltige Kopf- und Fußzeilen zu generieren, die HTML5-Inhalte enthalten können, die sogar Bilder und Stylesheets umfassen können.
using IronPdf;var renderer = new ChromePdfRenderer();// An HTML footer can carry markup, styles and images.// {page} and {total-pages} are filled in for every page.renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter{HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"};
using IronPdf;
var renderer = new ChromePdfRenderer();
// An HTML footer can carry markup, styles and images.
// {page} and {total-pages} are filled in for every page.
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};
Dim renderer = New ChromePdfRenderer()' An HTML footer can carry markup, styles and images.' {page} and {total-pages} are filled in for every page.renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooterWith { .HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"}
Dim renderer = New ChromePdfRenderer()
' An HTML footer can carry markup, styles and images.
' {page} and {total-pages} are filled in for every page.
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
}
Dynamische Daten in PDF-Kopf- und Fußzeilen
Wir können Inhalte in den Text und sogar HTML von Kopf- und Fußzeilen mit Platzhaltern wie:
{page} für die aktuelle Seitenzahl
{total-pages} für die Gesamtanzahl der Seiten im PDF
{url} für die URL des gerenderten PDFs, wenn es von einer Webseite gerendert wurde
{date} für das heutige Datum
{time} für die aktuelle Uhrzeit
{html-title} für den <title> des gerenderten HTML-Dokuments
{pdf-title} für den Dokumenttitel, der über ChromePdfRenderOptions gesetzt werden kann
C# HTML zu PDF Konvertierungseinstellungen
Es gibt viele Nuancen, wie unsere Benutzer und Kunden erwarten, dass PDF-Inhalte gerendert werden.
Die ChromePdfRenderer-Klasse enthält eine RenderingOptions-Eigenschaft, die verwendet werden kann, um diese Optionen festzulegen.
Zum Beispiel möchten wir möglicherweise nur "print"-Stil CSS3-Direktiven akzeptieren:
using IronPdf;using IronPdf.Rendering;var renderer = new ChromePdfRenderer();// Render the page's @media print CSS rather than its screen stylesrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;renderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf");
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Render the page's @media print CSS rather than its screen styles
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf");
ImportsIronPdfImportsIronPdf.RenderingDim renderer = New ChromePdfRenderer()' Render the page's @media print CSS rather than its screen stylesrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Printrenderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf")
Imports IronPdf
Imports IronPdf.Rendering
Dim renderer = New ChromePdfRenderer()
' Render the page's @media print CSS rather than its screen styles
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf")
Wir möchten möglicherweise auch die Größe unserer Druckränder ändern, um mehr Leerraum auf der Seite zu schaffen, um Platz für große Kopf- oder Fußzeilen zu schaffen, oder sogar Nullränder für den kommerziellen Druck von Broschüren oder Postern festlegen:
using IronPdf;var renderer = new ChromePdfRenderer();// Page margins in millimeters. Larger margins leave room for headers and// footers; set them to 0 for edge-to-edge brochures and posters.renderer.RenderingOptions.MarginTop = 50;renderer.RenderingOptions.MarginBottom = 50;renderer.RenderingOptions.MarginLeft = 20;renderer.RenderingOptions.MarginRight = 20;
using IronPdf;
var renderer = new ChromePdfRenderer();
// Page margins in millimeters. Larger margins leave room for headers and
// footers; set them to 0 for edge-to-edge brochures and posters.
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
ImportsIronPdfDim renderer = New ChromePdfRenderer()' Page margins in millimeters. Larger margins leave room for headers and' footers; set them to 0 for edge-to-edge brochures and posters.renderer.RenderingOptions.MarginTop = 50renderer.RenderingOptions.MarginBottom = 50renderer.RenderingOptions.MarginLeft = 20renderer.RenderingOptions.MarginRight = 20
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' Page margins in millimeters. Larger margins leave room for headers and
' footers; set them to 0 for edge-to-edge brochures and posters.
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
Wir möchten möglicherweise Hintergrundbilder von HTML-Elementen ein- oder ausschalten:
using IronPdf;var renderer = new ChromePdfRenderer();// Include CSS background colors and images in the PDF (set false to drop them)renderer.RenderingOptions.PrintHtmlBackgrounds = true;var pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>");pdf.SaveAs("output.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Include CSS background colors and images in the PDF (set false to drop them)
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
var pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>");
pdf.SaveAs("output.pdf");
ImportsIronPdfDim renderer = New ChromePdfRenderer()' Include CSS background colors and images in the PDF (set false to drop them)renderer.RenderingOptions.PrintHtmlBackgrounds = TrueDim pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>")pdf.SaveAs("output.pdf")
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' Include CSS background colors and images in the PDF (set false to drop them)
renderer.RenderingOptions.PrintHtmlBackgrounds = True
Dim pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>")
pdf.SaveAs("output.pdf")
Es ist auch möglich, unsere Ausgabepdfs auf jede virtuelle Papiergröße zu rendern - einschließlich Hoch- und Querformatgrößen und sogar benutzerdefinierte Größen, die in Millimetern oder Zoll festgelegt werden können.
using IronPdf;using IronPdf.Rendering;var renderer = new ChromePdfRenderer();// Standard paper sizes and orientationrenderer.RenderingOptions.PaperSize = PdfPaperSize.A4;renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;// Or a custom size, in millimeters or inches// renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297);// renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);
using IronPdf;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Standard paper sizes and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Or a custom size, in millimeters or inches
// renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297);
// renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);
ImportsIronPdfImportsIronPdf.RenderingDim renderer = New ChromePdfRenderer()' Standard paper sizes and orientationrenderer.RenderingOptions.PaperSize = PdfPaperSize.A4renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape' Or a custom size, in millimeters or inches' renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297)' renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11)
Imports IronPdf
Imports IronPdf.Rendering
Dim renderer = New ChromePdfRenderer()
' Standard paper sizes and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
' Or a custom size, in millimeters or inches
' renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297)
' renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11)
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.
Das Templating oder "Batch-Erstellen" von PDFs ist eine häufige Anforderung für Internet- und Website-Entwickler.
Anstatt ein PDF-Dokument selbst zu templaten, können wir mit IronPDF unser HTML mit bestehenden, gut erprobten Technologien templaten. Wenn das HTML-Template mit Daten aus einer Query-String oder Datenbank kombiniert wird, erhalten wir ein dynamisch generiertes PDF-Dokument.
Im einfachsten Fall ist die Verwendung der C#-Methode String.Format effektiv für ein einfaches Beispiel.
using IronPdf;var renderer = new ChromePdfRenderer();// Insert a value into an HTML template with string.Formatstring html = string.Format("<h1>Hello {0}!</h1>", "World");var pdf = renderer.RenderHtmlAsPdf(html);pdf.SaveAs("Hello.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Insert a value into an HTML template with string.Format
string html = string.Format("<h1>Hello {0}!</h1>", "World");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Hello.pdf");
Dim renderer As New ChromePdfRenderer()' Insert a value into an HTML template with string.FormatDim html AsString = String.Format("<h1>Hello {0}!</h1>", "World")Dim pdf = renderer.RenderHtmlAsPdf(html)pdf.SaveAs("Hello.pdf")
Dim renderer As New ChromePdfRenderer()
' Insert a value into an HTML template with string.Format
Dim html As String = String.Format("<h1>Hello {0}!</h1>", "World")
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("Hello.pdf")
Wenn die HTML-Datei länger ist, können wir oft beliebige Platzhalter wie [[NAME]] verwenden und sie später mit echten Daten ersetzen.
Das folgende Beispiel erstellt 3 PDFs, die jeweils auf einen Benutzer personalisiert sind.
using IronPdf;var renderer = new ChromePdfRenderer();// A template with a placeholder to replacevar htmlTemplate = "<p>[[NAME]]</p>";var names = new[] { "John", "James", "Jenny" };// One personalized PDF per nameforeach (var name in names){ var htmlInstance = htmlTemplate.Replace("[[NAME]]", name); var pdf = renderer.RenderHtmlAsPdf(htmlInstance); pdf.SaveAs(name + ".pdf");}
using IronPdf;
var renderer = new ChromePdfRenderer();
// A template with a placeholder to replace
var htmlTemplate = "<p>[[NAME]]</p>";
var names = new[] { "John", "James", "Jenny" };
// One personalized PDF per name
foreach (var name in names)
{
var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);
var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
pdf.SaveAs(name + ".pdf");
}
ImportsIronPdfDim renderer = New ChromePdfRenderer()' A template with a placeholder to replaceDim htmlTemplate = "<p>[[NAME]]</p>"Dim names = New String() {"John", "James", "Jenny"}' One personalized PDF per nameFor Each name In names Dim htmlInstance = htmlTemplate.Replace("[[NAME]]", name) Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance) pdf.SaveAs(name & ".pdf")Next
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' A template with a placeholder to replace
Dim htmlTemplate = "<p>[[NAME]]</p>"
Dim names = New String() {"John", "James", "Jenny"}
' One personalized PDF per name
For Each name In names
Dim htmlInstance = htmlTemplate.Replace("[[NAME]]", name)
Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance)
pdf.SaveAs(name & ".pdf")
Next
Fortgeschrittenes Templating mit Handlebars.NET
Eine ausgeklügelte Methode, um C#-Daten mit HTML für die PDF-Erstellung zu kombinieren, ist die Verwendung der Handlebars-Templating-Sprache.
Handlebars ermöglicht es, dynamisches HTML aus C#-Objekten und Klasseninstanzen einschließlich Datenbankeinträgen zu erstellen. Handlebars ist besonders effektiv, wenn eine Abfrage eine unbekannte Anzahl von Zeilen zurückgeben kann, wie bei der Erstellung einer Rechnung.
using HandlebarsDotNet;// A Handlebars template with two placeholdersvar source = @"<div class=""entry""> <h1>{{title}}</h1> <div class=""body""> {{body}} </div> </div>";// Compile it once, then fill it with any object that has matching propertiesvar template = Handlebars.Compile(source);var data = new { title = "My new post", body = "This is my first post!" };string html = template(data);// html now contains://// <div class="entry">// <h1>My new post</h1>// <div class="body">// This is my first post!// </div>// </div>
using HandlebarsDotNet;
// A Handlebars template with two placeholders
var source =
@"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>";
// Compile it once, then fill it with any object that has matching properties
var template = Handlebars.Compile(source);
var data = new { title = "My new post", body = "This is my first post!" };
string html = template(data);
// html now contains:
//
// <div class="entry">
// <h1>My new post</h1>
// <div class="body">
// This is my first post!
// </div>
// </div>
ImportsHandlebarsDotNet' A Handlebars template with two placeholdersDim source = "<div class=""entry""> <h1>{{title}}</h1> <div class=""body""> {{body}} </div> </div>"' Compile it once, then fill it with any object that has matching propertiesDim template = Handlebars.Compile(source)Dim data = New With {.title = "My new post", .body = "This is my first post!"}Dim html AsString = template(data)' html now contains:'' <div class="entry">' <h1>My new post</h1>' <div class="body">' This is my first post!' </div>' </div>
Imports HandlebarsDotNet
' A Handlebars template with two placeholders
Dim source = "<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>"
' Compile it once, then fill it with any object that has matching properties
Dim template = Handlebars.Compile(source)
Dim data = New With {.title = "My new post", .body = "This is my first post!"}
Dim html As String = template(data)
' html now contains:
'
' <div class="entry">
' <h1>My new post</h1>
' <div class="body">
' This is my first post!
' </div>
' </div>
Um dieses HTML zu rendern, können wir einfach die Methode RenderHtmlAsPdf verwenden.
using HandlebarsDotNet;using IronPdf;// Fill the Handlebars template, then render the resulting HTMLvar template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>");string html = template(new { title = "My new post", body = "This is my first post!" });var renderer = new ChromePdfRenderer();var pdf = renderer.RenderHtmlAsPdf(html);pdf.SaveAs("Handlebars.pdf");
using HandlebarsDotNet;
using IronPdf;
// Fill the Handlebars template, then render the resulting HTML
var template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>");
string html = template(new { title = "My new post", body = "This is my first post!" });
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Handlebars.pdf");
ImportsHandlebarsDotNetImportsIronPdf' Fill the Handlebars template, then render the resulting HTMLDim template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>")Dim html AsString = template(New With {.title = "My new post", .body = "This is my first post!"})Dim renderer = New ChromePdfRenderer()Dim pdf = renderer.RenderHtmlAsPdf(html)pdf.SaveAs("Handlebars.pdf")
Imports HandlebarsDotNet
Imports IronPdf
' Fill the Handlebars template, then render the resulting HTML
Dim template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>")
Dim html As String = template(New With {.title = "My new post", .body = "This is my first post!"})
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("Handlebars.pdf")
Sie können mehr über die Handlebars-Templating-Sprache und ihre C#-Implementierung von GitHub erfahren.
Seitenumbrüche mit HTML5 hinzufügen
Eine häufige Anforderung in einem PDF-Dokument ist die Paginierung. Entwickler müssen kontrollieren, wo PDF-Seiten beginnen und enden, um ein sauberes, lesbares Layout zu gewährleisten.
Der einfachste Weg, dies zu tun, ist mit einem weniger bekannten CSS-Trick, der einen Seitenumbruch in jedes gedruckte HTML-Dokument rendert.
Das bereitgestellte HTML funktioniert, ist aber kaum best practice. Wir empfehlen, das Medienattribut wie im folgenden Beispiel anzupassen. Eine so ordentliche und saubere Möglichkeit, mehrseitige HTML-Inhalte zu gestalten. Da IronPDF standardmäßig mit dem screen-Medientyp rendert, wird ein media="print"-Stylesheet nur angewendet, wenn RenderingOptions.CssMediaType auf PdfCssMediaType.Print gesetzt ist (siehe Konvertierungseinstellungen oben).
IronPDF macht es einfach, PDF-Dokumente zu kombinieren. Die häufigste Verwendung dieser Technik ist das Hinzufügen einer Titelseite oder Rückseite zu einem bereits gerenderten PDF-Dokument.
Dazu rendern wir zuerst eine Titelseite und verwenden dann die statische Methode PdfDocument.Merge(), um die beiden Dokumente zu kombinieren.
using IronPdf;var renderer = new ChromePdfRenderer();// The document body, rendered from a web pagevar pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");// Prepend an existing PDF as the cover page. Merge returns a new document.var cover = PdfDocument.FromFile("CoverPage.pdf");var pdfMerged = PdfDocument.Merge(cover, pdf);pdfMerged.SaveAs("Combined.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// The document body, rendered from a web page
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");
// Prepend an existing PDF as the cover page. Merge returns a new document.
var cover = PdfDocument.FromFile("CoverPage.pdf");
var pdfMerged = PdfDocument.Merge(cover, pdf);
pdfMerged.SaveAs("Combined.pdf");
ImportsIronPdfDim renderer = New ChromePdfRenderer()' The document body, rendered from a web pageDim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/")' Prepend an existing PDF as the cover page. Merge returns a new document.Dim cover = PdfDocument.FromFile("CoverPage.pdf")Dim pdfMerged = PdfDocument.Merge(cover, pdf)pdfMerged.SaveAs("Combined.pdf")
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
' The document body, rendered from a web page
Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/")
' Prepend an existing PDF as the cover page. Merge returns a new document.
Dim cover = PdfDocument.FromFile("CoverPage.pdf")
Dim pdfMerged = PdfDocument.Merge(cover, pdf)
pdfMerged.SaveAs("Combined.pdf")
Ein weiteres C# PDF Feature, das IronPDF unterstützt, ist das Hinzufügen eines Wasserzeichens zu Dokumenten. Dies kann verwendet werden, um auf jeder Seite anzuzeigen, dass ein Dokument "vertraulich" oder ein "Muster" ist.
using IronPdf;using IronPdf.Editing;var renderer = new ChromePdfRenderer();var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");// Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.// The watermark is HTML, so any markup, styling or image can be used.pdf.ApplyWatermark( "<h2 style='color:red; font-size:50px'>SAMPLE</h2>", rotation: 30, opacity: 50, verticalAlignment: VerticalAlignment.Middle, horizontalAlignment: HorizontalAlignment.Center);pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;
using IronPdf.Editing;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
// Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.
// The watermark is HTML, so any markup, styling or image can be used.
pdf.ApplyWatermark(
"<h2 style='color:red; font-size:50px'>SAMPLE</h2>",
rotation: 30,
opacity: 50,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
ImportsIronPdfImportsIronPdf.EditingDim renderer = New ChromePdfRenderer()Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")' Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.' The watermark is HTML, so any markup, styling or image can be used.pdf.ApplyWatermark("<h2 style='color:red; font-size:50px'>SAMPLE</h2>", rotation:=30, opacity:=50, verticalAlignment:=VerticalAlignment.Middle, horizontalAlignment:=HorizontalAlignment.Center)pdf.SaveAs("C:\Path\To\Watermarked.pdf")
Imports IronPdf
Imports IronPdf.Editing
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
' Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.
' The watermark is HTML, so any markup, styling or image can be used.
pdf.ApplyWatermark("<h2 style='color:red; font-size:50px'>SAMPLE</h2>", rotation:=30, opacity:=50, verticalAlignment:=VerticalAlignment.Middle, horizontalAlignment:=HorizontalAlignment.Center)
pdf.SaveAs("C:\Path\To\Watermarked.pdf")
Der vollständige kostenlose HTML-zu-PDF-Konverter C#-Quellcode für dieses Tutorial steht als gezippte Visual Studio 2022-Projektdatei zum Download bereit. Es wird seine Rendering-Engine verwenden, um PDF-Dokumentobjekte in C# zu erzeugen.
IronPDF ist eine leistungsstarke und funktionsreiche PDF-Bibliothek, die speziell für moderne .NET-Entwickler entwickelt wurde. Mit nativer HTML-zu-PDF-Konvertierung, die von einer fortschrittlichen Chromium-Engine angetrieben wird, einer intuitiven API und regelmäßigen Updates vereinfacht es die Entwicklung und sorgt gleichzeitig für hochwertige Ergebnisse. Lassen Sie uns einen genaueren Blick darauf werfen, wie es im Vergleich zu anderen Tools abschneidet:
PDFSharp
Kernfunktionen: PDFsharp ist eine Open-Source (MIT) Bibliothek zum Erstellen und Bearbeiten von PDF-Dokumenten in verwaltetem Code. Es hat keine HTML-Rendering-Engine, daher benötigt die Konvertierung von Webinhalten in PDF einen separaten Drittanbieter-Renderer.
Moderne Standards: IronPDF nutzt moderne Webtechnologien, einschließlich HTML, CSS und JavaScript, durch seine Chromium-basierte Engine, um sicherzustellen, dass PDFs ein zeitgemäßes Aussehen und Gefühl beibehalten.
Support & Updates: PDFsharp ist Open Source und veröffentlicht alle paar Monate eine Version, mit kommerziellem Support, der separat von seinem Maintainer verkauft wird. IronPDF veröffentlicht monatliche Updates und Sicherheitspatches, und jede Lizenz beinhaltet professionellen technischen Support, was für Unternehmensanwendungen wichtig ist.
wkhtmltopdf
Integrationserleichterung: wkhtmltopdf ist ein Kommandozeilen-Tool mit einer C-Bibliothek; es gibt kein offizielles .NET-Paket, daher bedeutet die Verwendung von .NET, dass das native Binary gestartet werden muss (oder es über einen Drittanbieter-Wrapper wie DinkToPdf aufgerufen wird) und dieses Binary für jede Plattform, auf die Sie bereitstellen, bereitgestellt werden muss.
Rendering-Technologie: wkhtmltopdf rendert mit QtWebKit, einem WebKit-Fork, den Qt 2015 eingestellt und in Qt 5.6 entfernt hat, sodass moderne JavaScript- und CSS-Funktionen nicht unterstützt werden, insbesondere auf dynamischen, inhaltsreichen Websites. Die Chromium-Engine von IronPDF rendert aktuelle Webstandards.
Fortlaufende Entwicklung: Die letzte Veröffentlichung von wkhtmltopdf war 0.12.6 im Juni 2020 und sein GitHub-Repository wurde im Januar 2023 archiviert, sodass es keinen Anbietersupport gibt. IronPDF entwickelt sich mit monatlichen Updates und engagiertem Kundenservice weiter.
iTextSharp
HTML-zu-PDF-Rendering: iText konvertiert HTML über sein separates pdfHTML-Add-on, eine CSS-Layout-Engine anstelle eines Browsers, und die Legacy-iTextSharp-5-Linie erhält jetzt nur noch Sicherheitsfixes. IronPDF rendert HTML mit einer eingebetteten Chromium-Engine im Kernpaket, ohne dass ein Add-on erforderlich ist.
Entwicklererfahrung: Die API von iText arbeitet auf der Ebene von PDF-Objekten und Layoutelementen, was mächtig ist, aber mehr Code für alltägliche Aufgaben bedeutet. IronPDF bietet eine saubere und intuitive C#-API, die das Codieren vereinfacht und die Projektauslieferung beschleunigt.
Wartung & Support: Die kostenlose Nutzung von iText erfolgt unter der AGPL, mit Anbietersupport, der kommerziellen Lizenzen vorbehalten ist, und iTextSharp 5.x ist abgesehen von Sicherheitsfixes end-of-life. IronPDF beinhaltet professionellen Support und monatliche Updates mit jeder Lizenz.
Aspose.PDF
Konvertierungsqualität: Aspose.PDF konvertiert HTML mit seiner eigenen Layout-Engine anstelle eines Browsers. Seine Dokumentation konvertiert eine Webseite, indem sie zuerst das HTML mit HttpClient in einen Stream lädt und diesen dann mit HtmlLoadOptions an Document übergibt, anstatt direkt von einer URL zu rendern. In unserem r/nfl-Test unten war die Ausgabe fast leer: das Community-Logo, eine Überschrift und ein paar leere Kästchen. Die Chromium-Engine von IronPDF rendert eine URL direkt, einschließlich JavaScript.
API-Benutzerfreundlichkeit: Die API von Aspose.PDF kann ausführlich sein, während IronPDF auf eine entwicklerfreundliche Erfahrung setzt, die die Einrichtungszeit minimiert und die Produktivität steigert.
Ausgabegenauigkeit: Da IronPDF mit Chromium rendert, entspricht das PDF dem, was Chrome für dasselbe HTML zeigt, was das Design und Debugging für die hochvolumige PDF-Erstellung vorhersehbar macht.
Syncfusion PDF
API-Komplexität: Syncfusion PDF ist eine fähige Bibliothek mit einer größeren API-Oberfläche zum Lernen. IronPDF hingegen bietet eine unkomplizierte API für eine schnelle Integration.
Rendering-Engine: Der HTML-Konverter von Syncfusion verwendet jetzt die Chromium-Blink-Engine; seine älteren WebKit- und Internet Explorer-Engines wurden in Essential Studio 2022 Volume 3 als veraltet markiert. In unserem r/nfl-Test unten behielt die Ausgabe von Syncfusion den Hauptfeed bei, ließ jedoch die Navigations- und Community-Panels fallen, während die Chromium-Engine von IronPDF die gesamte Seite renderte.
Über die Konvertierung hinaus: Das Paket von IronPDF deckt auch digitale Signaturen, Anmerkungen, Formularausfüllung und Barcode-Stempeln ab, sodass dieselbe Bibliothek den Rest des Dokumenten-Workflows abwickelt.
Rendering-Vergleich
Um die HTML-zu-PDF-Konvertierungsqualität dieser Bibliotheken zu vergleichen, haben wir eine Reddit-Community-Seite, r/nfl, verwendet, die dynamische Inhalte, Live-Updates, moderne CSS- und JavaScript-basierte Elemente enthält:
https://www.reddit.com/r/nfl/
Hier sind die Ergebnisse eines einzelnen Durchlaufs mit den Standardeinstellungen jeder Bibliothek. Syncfusion und Aspose.PDF liefen als Evaluierungsbuilds, weshalb ihre Ausgabe Evaluierungswasserzeichen trägt (klicken Sie auf jedes Bild, um es vergrößert anzuzeigen):
IronPDF
Gut formatiertes und visuell genaues PDF, das dynamische Inhalte und modernes Styling bewahrt.
SyncFusion
Mit einem Testbuild konvertiert. Der Hauptfeed, der Beitraginhalt und das Styling kamen in einem schmalen einspaltigen Layout durch, aber die linke Navigation und das rechte Community-Panel wurden weggelassen.
Aspose.PDF
Evaluierungsbuild; erforderte das Herunterladen des HTML zuerst (Aspose.PDF lädt HTML aus einem Stream anstelle einer URL). Die Ausgabe war fast leer: das Community-Logo, eine Überschrift und ein paar leere Kästchen.
Wkhtmltopdf
wkhtmltopdf hat die Konvertierung abgeschlossen, aber das Ergebnis ist der Text und die Bilder der Seite ohne ihr Layout, Styling, dynamische Elemente oder Interaktivität. Dies macht wkhtmltopdf ungeeignet für moderne, dynamische Webseiten.
Hinweis:: PDFsharp hat keine HTML-Rendering-Engine, und iText konvertiert HTML nur über sein separates pdfHTML-Add-on, daher wurde keiner in diesem Browser-Rendering-Test aufgenommen.
Fazit
Für .NET-Entwickler, die eine moderne und zuverlässige PDF-Lösung suchen, ist IronPDF eine starke Wahl. Seine Chromium-basierte HTML-zu-PDF-Konvertierung, Benutzerfreundlichkeit, regelmäßige Updates und breite Funktionspalette machen es zu einer Top-Wahl. Egal, ob Sie an einem kleinen Projekt oder einer groß angelegten Unternehmensanwendung arbeiten, IronPDF steigert die Produktivität und vermeidet die Risiken, die mit veralteten oder nicht unterstützten Bibliotheken verbunden sind. Entwickelt für kommerzielle Anwendungen, hält IronPDF Ihre Projekte auf einer gewarteten und unterstützten Bibliothek.
In unserem Test mit einer realen dynamischen Webseite lieferte IronPDF das vollständigste und genaueste Rendering. Syncfusion ließ die Navigations- und Community-Panels fallen. Aspose.PDF erforderte das Herunterladen des HTML zuerst und renderte trotzdem fast nichts der Seite. wkhtmltopdf produzierte den Text und die Bilder ohne das Styling der Seite, was für moderne Seiten ungeeignet ist.
Für moderne HTML-zu-PDF-Workflows ist diese Kombination aus Rendering-Genauigkeit und einer kleinen, lesbaren API das, was IronPDF auszeichnet.
Erleben Sie die vollständige Funktionssuite von IronPDF, die dynamisches, schweres CSS-HTML mühelos in PDF konvertiert. Testen Sie es jetzt mit unserer kostenlosen Testversion.
Sehen Sie sich das HTML-zu-PDF in C# Tutorial-Video an
Wie konvertiere ich HTML zu PDF mit IronPDF in C#?
Um HTML mit IronPDF in PDF zu konvertieren, müssen Sie den ChromePdfRenderer initialisieren, den HTML-Inhalt mit der Methode RenderHtmlAsPdf als PDF rendern und dann das PDF in einer Datei speichern.
Was sind die Systemanforderungen für IronPDF?
IronPDF unterstützt .NET 10, .NET 9, .NET 8, .NET 7, .NET 6, .NET 5, .NET Core, .NET Standard und .NET Framework auf Windows, macOS, Linux, Docker, Azure und AWS.
Kann ich IronPDF mit anderen Programmiersprachen verwenden?
Ja, IronPDF kann mit mehreren Sprachen sowohl innerhalb als auch außerhalb des .NET-Ökosystems verwendet werden, einschließlich F#, VB.NET, Python, Java und Node.js.
Wie kann ich benutzerdefinierte Kopf- und Fußzeilen zu einem PDF mit IronPDF hinzufügen?
Mit IronPDF können Sie Kopf- und Fußzeilen mit der TextHeaderFooter-Klasse für textbasierte Inhalte oder der HtmlHeaderFooter-Klasse für reichhaltige HTML-Inhalte hinzufügen.
Ist es möglich, ein PDF aus einer vorhandenen URL mit IronPDF zu rendern?
Ja, Sie können ein PDF aus einer vorhandenen URL rendern, indem Sie die Methode RenderUrlAsPdf in IronPDF verwenden.
Unterstützt IronPDF erweiterte CSS- und JavaScript-Rendering?
Ja, IronPDF unterstützt erweiterte CSS3 und JavaScript, einschließlich jQuery und AJAX, und bietet eine genaue Darstellung moderner Webdesigns.
Kann ich HTML-Templating für die Batch-PDF-Erstellung in IronPDF anwenden?
Ja, Sie können C#-Templating-Techniken verwenden, einschließlich String.Format und Handlebars.NET, um dynamisch PDFs mit IronPDF zu generieren.
Wie vergleicht sich IronPDF mit anderen PDF-Bibliotheken?
IronPDF rendert HTML mit einer eingebetteten Chromium-Engine, liefert monatliche Updates und hat eine kompakte C#-API. Das Tutorial vergleicht es mit PdfSharp, wkhtmltopdf, iTextSharp, Aspose.PDF und Syncfusion PDF, einschließlich eines nebeneinander liegenden Rendering-Tests einer dynamischen Webseite.
Kann ich Wasserzeichen zu PDFs mit IronPDF hinzufügen?
Ja, IronPDF ermöglicht es Ihnen, Text- oder Bildwasserzeichen zu Ihren PDF-Dokumenten hinzuzufügen.
Gibt es eine Testversion für IronPDF?
Ja, Sie können sich für einen kostenlosen 30-Tage-Testschlüssel anmelden, um die Funktionen von IronPDF vor dem Kauf einer Lizenz zu testen.
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.