DIE IRON SUITE VERWENDEN

PDF in C# aus HTML-Datei erstellen

IronPDF konvertiert HTML-Dokumente programmatisch in PDF-Dokumente.

Wie man in C# eine PDF-Datei erstellt – HTML zu PDF-Beispiel

Der Quellcode für diesen gesamten Artikel ist für C# als C# HTML zu PDF Projekt Quellcode Download verfügbar.

Das folgende Tutorial führt Sie durch den Prozess der Verwendung von IronPDF als C# PDF-Generator . Es behandelt sowohl die Grundlagen als auch viele fortgeschrittene C#-PDF -Themen.

HTML zu PDF – Schritt für Schritt erklärt

Diese Demo führt Sie anhand von Beispielen durch die Anwendung von IronPdf. Fordern Sie zusätzliche Anwendungsbeispieldemos von Iron Software an .

Die Demo besteht aus den Beispielen Hello World, RenderHtmlAsPdf und RenderUrlAsPdf . Alle Beispiele finden Sie unter den entsprechenden Projekten in der IronPDF-Demo-Lösung.

Schritt 1: Installation

Sie können IronPdf entweder über NuGet installieren. The package name is IronPDF NuGet Package.

Or you can use the Direct Library Download.

Schritt 2: Hallo Welt

Sobald Sie IronPDF installiert und in Ihrem Projekt referenziert haben, können Sie es sofort verwenden, indem Sie ein paar Zeichenketten eingeben:

// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();
// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();
' Create a new instance of ChromePdfRenderer
Dim chromePdfRenderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

Und wenn Sie HTML in PDF umwandeln müssen:

// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";

// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";

// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
' Define HTML content to turn into PDF
Dim html = "<h1>Hello World!</h1><br><p>This is IronPdf.</p>"

' Render the HTML string as a PDF
Dim pdf = chromePdfRenderer.RenderHtmlAsPdf(html)

' Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"))
$vbLabelText   $csharpLabel

Oder falls Sie eine Webseite in eine PDF-Datei umwandeln möchten:

// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");

// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");

// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
' URI of the page to turn into PDF
Dim uri As New Uri("http://www.google.com/ncr")

' Render the webpage as a PDF
Dim pdf = chromePdfRenderer.RenderUrlAsPdf(uri)

' Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))
$vbLabelText   $csharpLabel

Und das war's! Die entsprechenden Ergebnisse lauten:

PDF-Erstellung in C# aus HTML-Datei, Abbildung 1: Das Ergebnis der Konvertierung von HTML in PDF Das Ergebnis der Konvertierung von HTML in PDF**

PDF-Erstellung in C# aus einer HTML-Datei, Abbildung 2: Das Ergebnis der Konvertierung einer Webseite in ein PDF Das Ergebnis der Umwandlung einer Webseite in ein PDF

Bitte finden Sie das Codebeispiel im Projekt IronPDFDemo.HelloWorld.

Schritt 3: RenderHtmlAsPdf

Beispiel 1

Um ein praxisnäheres Beispiel zu betrachten, stellen Sie sich eine HTML-Rechnung vor, die in eine PDF-Datei umgewandelt werden muss. Hier ist der Code, wie das geht.

Hinweis: Den HTML-Code der Rechnung finden Sie im Projekt IronPDFDemo.DemoWebSite (~/Static/TestInvoice1.html). Bitte beachten Sie, dass die Rechnung benutzerdefiniertes CSS für den Medientyp "Druck" enthält.

Die Quellrechnung sieht im Browser folgendermaßen aus:

! PDF aus einer HTML-Datei in C# erstellen, Abbildung 4:


Um daraus eine PDF-Datei zu erstellen, werden ähnliche Codes wie im obigen HelloWorld-Beispiel verwendet; der Unterschied besteht in der HTML-Quelldatei.

// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
' Read HTML from file
Dim html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"))
Dim chromePdfRenderer As New ChromePdfRenderer()
Dim pdf = chromePdfRenderer.RenderHtmlAsPdf(html)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"))
$vbLabelText   $csharpLabel

Das Ergebnis lautet:

PDF-Erstellung in C# aus HTML-Datei, Abbildung 5: Generieren einer PDF-Datei aus HTML Erstellen Sie eine PDF-Datei aus HTML

Sieht toll aus! Bitte finden Sie das Codebeispiel im Projekt IronPDFDemo.RenderHtmlAdPdfDemo.

Siehe auch diese Frage zur Verwendung von HTML-Dokumenten oder Strings mit Byte-Arrays in IronPDF.

Beispiel 2

Dieser Abschnitt hilft Ihnen, das aus Beispiel 1 resultierende PDF anzupassen. So werden beispielsweise benutzerdefinierte Ränder, eine Kopfzeile mit einem Dokumenttitel, eine Fußzeile mit Erstellungsdatum und Seitenzahlen sowie benutzerdefiniertes CSS für den Medientyp "Druck", den eine Standardrechnung hat, hinzugefügt. Dazu wird eine Instanz von ChromePdfRenderOptions initialisiert und an den ChromePdfRenderer -Konstruktor übergeben.

// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
    MarginTop = 50,
    MarginBottom = 50,
    TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    },
    TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    },
    CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};

var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
    MarginTop = 50,
    MarginBottom = 50,
    TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    },
    TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    },
    CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};

var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
' Configure rendering options with margins, headers, and footers
Dim pdfRenderingOptions = New ChromePdfRenderOptions() With {
	.MarginTop = 50,
	.MarginBottom = 50,
	.TextHeader = New TextHeaderFooter() With {
		.CenterText = "{pdf-title}",
		.DrawDividerLine = True,
		.FontSize = 16
	},
	.TextFooter = New TextHeaderFooter() With {
		.LeftText = "{date} {time}",
		.RightText = "Page {page} of {total-pages}",
		.DrawDividerLine = True,
		.FontSize = 14
	},
	.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
}

Dim chromePdfRenderer As New ChromePdfRenderer(pdfRenderingOptions)
$vbLabelText   $csharpLabel

Tipp: Anstatt Optionen als Parameter im Konstruktor zu übergeben, können Sie das entsprechende Feld für eine ChromePdfRenderer Instanz festlegen:

var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
Dim chromePdfRenderer As New ChromePdfRenderer()
chromePdfRenderer.RenderingOptions = pdfRenderingOptions
$vbLabelText   $csharpLabel

Hinweis: Kopf- und Fußzeilen verfügen über eine Zusammenführungsfunktion, was bedeutet, dass alle Zusammenführungsfelder ( {page} , {total-pages} , {url} , {date} , {time} , {html-title} , {pdf-title} ) mit entsprechenden Daten gefüllt werden können.

Der restliche Code ist identisch mit Beispiel 1. Ergebnis:

PDF in C# aus HTML-Datei erstellen, Abbildung 6: Rechnung mit Kopf- und Fußzeile generieren Erstellen Sie eine Rechnung mit Kopf- und Fußzeile

Benutzerdefinierte Ränder, Kopf- und Fußzeilen sowie CSS für den Medientyp "Druck" sind nun eingerichtet. Bitte finden Sie das Codebeispiel im Projekt IronPDFDemo.RenderHtmlAdPdfDemo. Weitere Einstellungen finden Sie in der IronPDF-API-Referenz .

Schritt 4: RenderUrlAsPdf

Aufstellen

Um die Beispiele aus diesem Abschnitt auszuführen, müssen Sie die IronPDFDemo.DemoWebSite lokal hosten. So geht's in IIS Express:

  1. Navigieren Sie zur Demo-Website.
  2. Rechtsklick > Als Startprojekt festlegen
  3. Starten ohne Debugging (Strg+F5)
  4. Rufen Sie Ihre {baseurl}/Static/TestInvoice1.html auf, um sicherzustellen, dass sie funktioniert. Dies ist die URL http://localhost:51169/Static/TestInvoice1.html (wird für Sie dieselbe sein, wenn Sie die entsprechenden Projekteinstellungen nicht ändern).

Beispiel 1

In diesem Abschnitt wird die Rechnung der gehosteten DemoWebsite mithilfe des gleichen Codes wie im HelloWorld-Beispiel in ein PDF umgewandelt. Der Unterschied liegt in der gehosteten URL:

// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
' URL of the hosted invoice webpage
Dim uri As New Uri("http://localhost:51169/Static/TestInvoice1.html")
Dim urlToPdf = New ChromePdfRenderer()
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"))
$vbLabelText   $csharpLabel

Das Ergebnis lautet:

PDF in C# aus HTML-Datei erstellen, Abbildung 7: Eine gehostete Website in ein PDF umwandeln Eine gehostete Website in ein PDF umwandeln

Das ist toll und sieht genauso aus wie erwartet. Bitte finden Sie das Codebeispiel im Projekt IronPDFDemo.RenderUrlAsPdfDemo.

Beispiel 2

Viele Websites sind häufig durch ein Authentifizierungsverfahren geschützt. In diesem Abschnitt werden ein Benutzername und ein Passwort verwendet, um eine PDF-Datei mit einigen Anpassungen zu rendern: benutzerdefinierte Ränder, eine Kopfzeile mit dem Dokumenttitel, eine Fußzeile mit dem Erstellungsdatum und den Seitenzahlen sowie benutzerdefiniertes CSS für den Medientyp "Druck". Die URL zur Rechnung lautet http://localhost:51169/Invoice .

Der Zugriff auf http://localhost:51169/Invoice führt zur Meldung "Authentifizierung erforderlich":

PDF in C# aus HTML-Datei erstellen, Abbildung 8: Authentifizierung erforderliches Formular Formular zur Authentifizierung erforderlich

Hinweis: Die Anmeldeinformationen lauten "testUser"/"testPassword".

Wie lässt sich die Authentifizierung umgehen? Durch Festlegen HttpLoginCredentials :

// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");

// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions()
    {
        MarginTop = 50,
        MarginBottom = 50,
        TextHeader = new TextHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },
        TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        },
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    },

    // Set login credentials to bypass basic authentication
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};

using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");

// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions()
    {
        MarginTop = 50,
        MarginBottom = 50,
        TextHeader = new TextHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },
        TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        },
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    },

    // Set login credentials to bypass basic authentication
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};

using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
' URL of the protected invoice webpage
Dim uri As New Uri("http://localhost:51169/Invoice")

' Configure renderer with login credentials to bypass authentication
Dim urlToPdf = New ChromePdfRenderer With {
	.RenderingOptions = New ChromePdfRenderOptions() With {
		.MarginTop = 50,
		.MarginBottom = 50,
		.TextHeader = New TextHeaderFooter() With {
			.CenterText = "{pdf-title}",
			.DrawDividerLine = True,
			.FontSize = 16
		},
		.TextFooter = New TextHeaderFooter() With {
			.LeftText = "{date} {time}",
			.RightText = "Page {page} of {total-pages}",
			.DrawDividerLine = True,
			.FontSize = 14
		},
		.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
	},
	.LoginCredentials = New HttpLoginCredentials() With {
		.NetworkUsername = "testUser",
		.NetworkPassword = "testPassword"
	}
}

Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"))
$vbLabelText   $csharpLabel

> Hinweis: Es wird die gleiche Anpassung wie beim ChromePdfRenderer Beispiel2 verwendet.

Das Ergebnis lautet:

PDF in C# aus HTML-Datei erstellen, Abbildung 9: Generieren einer HTML-Website mit Zugangsdaten zu einer PDF-Datei Generieren Sie eine HTML-Website mit Zugangsdaten zu einer PDF-Datei.

Alles ist vorbereitet. Bitte finden Sie ein Codebeispiel im Projekt IronPDFDemo.RenderUrlAsPdfDemo. Falls Sie sich fragen, wie das Ergebnis ohne HttpLoginCredentials aussehen würde, hier ist es:

PDF in C# aus HTML-Datei erstellen, Abbildung 10: Generieren einer leeren PDF-Datei ohne Anmeldeinformationen Erstellen Sie eine leere PDF-Datei ohne Anmeldeinformationen.

Siehe auch Jeans .NET HTML zu PDF Tutorial

Darüber hinaus kann IronPDF auch auf verschiedene andere Arten mit PDF interagieren: