using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Das folgende Tutorial führt Sie durch den Prozess der Verwendung von IronPDF als C# PDF Generator. Es behandelt die Grundlagen sowie viele fortgeschrittene C# PDF-Themen.
HTML zu PDF C#
Laden Sie die C#-Bibliothek zur Konvertierung von HTML in PDF herunter
Die Demo besteht aus Hello World, RenderHtmlAsPdf- und RenderUrlAsPdf-Beispielen. Alle Beispiele finden Sie unter den entsprechenden Projekten der IronPDF Demo-Lösung.
Schritt 1: Installation
Sie können IronPDF entweder über NuGet installieren. Der Paketname ist IronPDF NuGet Package.
Sobald Sie IronPDF installiert und in Ihrem Projekt referenziert haben, können Sie es sofort verwenden, indem Sie ein paar Zeichenfolgen eingeben:
var ChromePdfRenderer = new ChromePdfRenderer(); // new instance of ChromePdfRenderer
var ChromePdfRenderer = new ChromePdfRenderer(); // new instance of ChromePdfRenderer
Dim ChromePdfRenderer As New ChromePdfRenderer() ' new instance of ChromePdfRenderer
$vbLabelText $csharpLabel
dann, wenn Sie HTML in PDF umwandeln müssen
// html to turn into pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// turn html to pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
// html to turn into pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// turn html to pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
' html to turn into pdf
Dim html = "<h1>Hello World!</h1><br><p>This is IronPdf.</p>"
' turn html to pdf
Dim pdf = ChromePdfRenderer.RenderHtmlAsPdf(html)
' save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"))
$vbLabelText $csharpLabel
oder wenn 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");
// turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
// save resulting pdf into 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");
// turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
// save resulting pdf into 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")
' turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri)
' save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))
$vbLabelText $csharpLabel
Und das war's!
Die entsprechenden Ergebnisse sind:
Das Ergebnis der Umwandlung von HTML in PDF**
Das Ergebnis der Umwandlung einer Webseite in ein PDF
Das Codebeispiel finden Sie unter IronPDFDemo.HelloWorld Projekt.
Schritt 3: RenderHtmlAsPdf
Beispiel 1
Um ein realistischeres Beispiel zu bewerten, stellen Sie sich eine HTML-Rechnung vor, die in ein PDF-Dokument umgewandelt werden muss. Hier ist der Code, wie man das macht.
Hinweis: Sie finden die Rechnungs-HTML im IronPDFDemo.DemoWebSite-Projekt (~/Static/TestInvoice1.html). Bitte beachten Sie, dass die Rechnung über benutzerdefinierte CSS für den Medientyp "Druck" verfügt.
Die Quellrechnung sieht im Browser wie folgt aus:
Um dies in eine PDF-Datei umzuwandeln, werden die gleichen Codes wie im obigen HelloWorld-Beispiel verwendet, mit dem Unterschied, dass die HTML-Quelldatei verwendet wird.
// 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 ist:
Generieren Sie eine PDF-Datei aus HTML
Sieht großartig aus! Das Codebeispiel finden Sie unter dem IronPDFDemo.RenderHtmlAdPdfDemo-Projekt.
In diesem Abschnitt wird die resultierende PDF-Datei aus Beispiel 1 angepasst. So werden beispielsweise benutzerdefinierte Ränder, eine Kopfzeile mit einem Dokumententitel, eine Fußzeile mit einem Erstellungsdatum und Seitenzahlen sowie einige benutzerdefinierte CSS für den Medientyp "Drucken", den eine Standardrechnung hat, hinzugefügt. Hierfür wird eine Instanz von ChromePdfRenderOptions initialisiert und in den Konstruktor von ChromePdfRenderer übergeben.
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);
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);
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ßzeilenfunktionen beinhalten Zusammenführungsfunktionalität, was bedeutet, dass alle Zusammenführungsfelder ({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}) mit den entsprechenden Daten befüllt werden können.
Der Rest des Codes ist derselbe wie in Beispiel 1. Das Ergebnis ist:
Erstellen Sie eine Rechnung mit Kopf- und Fußzeile
Benutzerdefinierte Ränder, Kopf- und Fußzeilen und CSS für den Medientyp "Print" sind jetzt vorhanden. Das Codebeispiel finden Sie unter dem IronPDFDemo.RenderHtmlAdPdfDemo-Projekt. Weitere Einstellungen finden Sie in der IronPDF API-Referenz.
Schritt 4: RenderUrlAsPdf
Einrichten
Um die Beispiele in diesem Abschnitt auszuführen, müssen Sie die IronPDFDemo.DemoWebSite lokal hosten. Um dies in IIS Express zu tun:
Zur DemoWebSite navigieren
Rechtsklick > Als StartUp-Projekt festlegen
Ohne Debuggen starten (Strg+F5)
Navigieren Sie zu Ihrem {baseurl}/Static/TestInvoice1.html, um sicherzustellen, dass es funktioniert. Dies ist die URL http://localhost:51169/Static/TestInvoice1.html (wird gleich sein, wenn Sie die entsprechenden Projekteinstellungen nicht ändern).
Beispiel 1
In diesem Abschnitt wird die gehostete DemoWebSite-Rechnung mit demselben Code wie im HelloWorld-Beispiel in eine PDF-Datei umgewandelt. Der Unterschied liegt in der gehosteten URL:
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"));
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"));
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 ist:
Generiere eine gehostete Webseite in eine PDF
Das ist großartig und sieht wie erwartet aus. Das Codebeispiel finden Sie im IronPDFDemo.RenderUrlAsPdfDemo-Projekt.
Beispiel 2
Viele Websites sind häufig durch eine Authentifizierungsmethode geschützt. Dieser Abschnitt verwendet einen angegebenen Benutzernamen und ein Kennwort während des Rendering-Prozesses einer PDF-Datei mit einigen Anpassungen: benutzerdefinierte Ränder, eine Kopfzeile mit dem Titel des Dokuments, eine Fußzeile mit dem Erstellungsdatum und den Seiten sowie benutzerdefiniertes CSS für den Medientyp "Drucken". Die URL für die Rechnung befindet sich unter http://localhost:51169/Invoice.
Der Zugriff auf http://localhost:51169/Invoice führt zum Formular "Authentifizierung erforderlich":
Authentifizierung erforderliches Formular
Hinweis: Anmeldeinformationen sind "testUser"/"testPassword".
Wie kann man also die Authentifizierung umgehen? Durch Setzen von HttpLoginCredentials:
var uri = new Uri("http://localhost:51169/Invoice");
var urlToPdf = new ChromePdfRenderer
{
PrintOptions = new ChromePdfRenderer()
{
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
},
// setting 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"));
var uri = new Uri("http://localhost:51169/Invoice");
var urlToPdf = new ChromePdfRenderer
{
PrintOptions = new ChromePdfRenderer()
{
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
},
// setting 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"));
Dim uri As New Uri("http://localhost:51169/Invoice")
Dim urlToPdf = New ChromePdfRenderer With {
.PrintOptions = New ChromePdfRenderer() 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: Die gleiche Anpassung wird verwendet wie für das ChromePdfRenderer Example2.
Das Ergebnis ist:
Erstellen Sie eine HTML-Seite mit Anmeldedaten für eine PDF-Datei
Alles ist an seinem Platz. Ein Codebeispiel finden Sie unter IronPDFDemo.RenderUrlAsPdfDemo Projekt. Wenn Sie sich fragen, wie das Ergebnis ohne HttpLoginCredentials aussehen würde, hier ist es:
Erstellen Sie eine leere PDF-Datei ohne Anmeldedaten
Regan schloss sein Studium an der University of Reading mit einem BA in Elektrotechnik ab. Bevor er zu Iron Software kam, konzentrierte er sich in seinen früheren Jobs auf einzelne Aufgaben. Was ihm bei Iron Software am meisten Spaß macht, ist das Spektrum der Aufgaben, die er übernehmen kann, sei es im Vertrieb, im technischen Support, in der Produktentwicklung oder im Marketing. Es macht ihm Spaß, die Art und Weise zu verstehen, wie Entwickler die Bibliothek von Iron Software nutzen, und dieses Wissen zu nutzen, um die Dokumentation und die Produkte kontinuierlich zu verbessern.