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");
HTML zu PDF in C# für .NET-Entwickler (Der Ultimative Leitfaden)
Kannapat Udonpant
15. Dezember 2024
Teilen Sie:
Einführung
In der heutigen webgetriebenen Welt ist die Möglichkeit, HTML-Inhalte in PDF-Dokumente zu konvertieren, eine entscheidende Funktion für viele Anwendungen. Egal ob zur Erstellung von Berichten, Rechnungen oder zum Speichern von Webseiten für die Offline-Nutzung: Die Konvertierung von HTML zu PDF spielt eine entscheidende Rolle bei der Optimierung von Arbeitsabläufen und der Verbesserung der Benutzererfahrung. Für .NET-Entwickler kann die Wahl des richtigen Tools für diese Konvertierung erheblichen Einfluss auf die Effizienz und Qualität ihrer Anwendungen haben.
In diesem Artikel werden wir untersuchen, wie man HTML in PDF in C# umwandelt, indem wir die folgenden Themen abdecken:
Warum HTML-zu-PDF-Tools vergleichen?
IronPDF: HTML-zu-PDF-Konvertierung
Aspose: HTML-zu-PDF-Konvertierung
iText7: HTML-zu-PDF-Konvertierung
wkhtmltopdf: HTML zu PDF-Konvertierung
PuppeteerSharp: HTML-zu-PDF-Konvertierung
Fazit: Warum IronPDF wählen?
Am Ende werden Sie verstehen, warumIronPDFhebt sich als entwicklerfreundlicher und effizienter HTML-zu-PDF-Konverter hervor.
Warum HTML-zu-PDF-Tools vergleichen?
Auswahl des geeignetenUmwandlung von HTML in PDFDas Werkzeug ist unerlässlich, um sicherzustellen, dass Ihre Anwendung die Anforderungen an Leistung, Qualität und Kosten erfüllt. Mit zahlreichen verfügbaren Optionen, die jeweils unterschiedliche Funktionen und Fähigkeiten bieten, hilft ein gründlicher Vergleich bei der fundierten Entscheidungsfindung. Hier sind die wichtigsten Bewertungskriterien, die Sie berücksichtigen sollten:
Integrationskomplexität: Wie einfach die Bibliothek in Ihre bestehenden .NET-Projekte integriert werden kann.
Code Einfachheit: Die Leichtigkeit, Code unter Verwendung der Bibliothek zu schreiben und zu warten.
Rendergenauigkeit: Die Fähigkeit, komplexes HTML, CSS und JavaScript genau darzustellen.
Leistung im großen Maßstab: Wie gut die Bibliothek unter hoher Belastung und bei der Erzeugung großer PDF-Dateien funktioniert.
Lizenzierung und Kosteneffizienz: Die Preisgestaltung und Lizenzbedingungen, die zu Ihrem Projektbudget passen.
Indem Sie diese Faktoren bewerten, können Sie ein Werkzeug auswählen, das nicht nur Ihre technischen Anforderungen erfüllt, sondern auch zu den finanziellen Einschränkungen Ihres Projekts passt.
IronPDF: HTML-zu-PDF-Konvertierung
IronPDF ist eine voll funktionsfähige .NET-Bibliothek zur Umwandlung von HTML in PDF. Es unterstützt HTML-Strings, lokale HTML-Dateien und URLs, was es vielseitig für eine breite Palette von Anwendungsfällen macht. So geht IronPDF mit jeder Situation um:
HTML-String zu PDF
Konvertieren von HTML aus einerZeichenfolge in ein PDFist einfach mit IronPDF. Dieser Ansatz ist ideal für die dynamische Inhaltserstellung oder kleine HTML-Snippets.
Beispiel:
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
PDF.SaveAs("output.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
PDF.SaveAs("output.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>")
PDF.SaveAs("output.pdf")
End Sub
End Class
Erläuterung:
ChromePdfRenderer: Die ChromePdfRenderer-Klasse ist das Hauptwerkzeug zum Konvertieren von HTML in PDF in IronPDF. Es ist vorkonfiguriert, um die meisten Anwendungsfälle mit minimalem Aufwand zu bewältigen.
RenderHtmlAsPdf: Diese Methode nimmt einen HTML-String als Eingabe und erzeugt ein PDF-Dokument.
SaveAs: Das erzeugte PDF wird im angegebenen Pfad gespeichert.(output.pdf).
Lokale HTML-Datei zu PDF
Für Anwendungen, die eine Konvertierung von einemlokale HTML-Datei (mit externen Ressourcen wie CSS oder JavaScript), IronPDF macht es einfach.
Beispiel:
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlFileAsPdf("template.html");
pdf.SaveAs("report.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlFileAsPdf("template.html");
pdf.SaveAs("report.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("template.html")
pdf.SaveAs("report.pdf")
End Sub
End Class
Eingabedatei im HTML-Format
Output
Erläuterung:
RenderHtmlFileAsPdf: Nimmt eine lokale HTML-Datei und konvertiert sie in ein PDF.
Verarbeitet automatisch verknüpfte Ressourcen wie externe CSS- und JavaScript-Dateien.
URL zu PDF
IronPDF ist besonders leistungsstark bei der Umwandlung dynamischer Webinhalte ausURLs, einschließlich Seiten, die JavaScript verwenden.
Beispiel:
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://ironpdf.com");
pdf.SaveAs("url-to-pdf.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://ironpdf.com");
pdf.SaveAs("url-to-pdf.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://ironpdf.com")
pdf.SaveAs("url-to-pdf.pdf")
End Sub
End Class
Erläuterung:
RenderUrlAsPdf: Ruft den URL-Inhalt ab, einschließlich JavaScript-gerenderter Elemente, und konvertiert ihn in PDF.
Aspose: HTML-zu-PDF-Konvertierung
Aspose.PDF ist eine weitere leistungsstarke Bibliothek zur PDF-Bearbeitung mit Unterstützung für die Umwandlung von HTML in PDF. Lassen Sie uns sehen, wie Aspose jedes Konvertierungsszenario behandelt:
HTML-String zu PDF
Aspose erfordert bei der Umwandlung von HTML-Strings etwas mehr Einrichtung im Vergleich zu IronPDF.
Beispiel:
using Aspose.Html;
Document doc = new Document();
Page page = doc.getPages().add();
HtmlFragment htmlFragment = new HtmlFragment("<h1>HTML String</h1>");
page.getParagraphs().add(htmlFragment);
doc.save(dataDir + "HTMLStringUsingDOM.pdf");
using Aspose.Html;
Document doc = new Document();
Page page = doc.getPages().add();
HtmlFragment htmlFragment = new HtmlFragment("<h1>HTML String</h1>");
page.getParagraphs().add(htmlFragment);
doc.save(dataDir + "HTMLStringUsingDOM.pdf");
Imports Aspose.Html
Private doc As New Document()
Private page As Page = doc.getPages().add()
Private htmlFragment As New HtmlFragment("<h1>HTML String</h1>")
page.getParagraphs().add(htmlFragment)
doc.save(dataDir & "HTMLStringUsingDOM.pdf")
Erläuterung:
Dokument doc: Erstellt ein neues Dokument, um den konvertierten HTML-String zu speichern.
Seite Seite: Diese Zeile fügt dem leeren Dokument, das wir erstellt haben, eine neue Seite hinzu.
HtmlFragment htmlFragment: Dies ist der HTML-String, den wir umwandeln.
page.getParagraphs().hinzufügen(htmlFragment): Füge das HTML dem Dokument hinzu
doc.save: Speichert das Dokument mit dem HTML-Inhalt als PDF-Dokument.
Lokale HTML-Datei zu PDF
Aspose kann auch lokale HTML-Dateien in PDFs umwandeln, jedoch erfordert es mehr Konfiguration als IronPDF.
Beispiel:
using Aspose.Html;
using Aspose.Html.Converters;
using Aspose.Html.Saving;
using var document = new HTMLDocument("document.html");
var options = new PdfSaveOptions();
Converter.ConvertHTML(document, options, "output.pdf");
using Aspose.Html;
using Aspose.Html.Converters;
using Aspose.Html.Saving;
using var document = new HTMLDocument("document.html");
var options = new PdfSaveOptions();
Converter.ConvertHTML(document, options, "output.pdf");
Imports Aspose.Html
Imports Aspose.Html.Converters
Imports Aspose.Html.Saving
Private document = New HTMLDocument("document.html")
Private options = New PdfSaveOptions()
Converter.ConvertHTML(document, options, "output.pdf")
Erläuterung:
using var document = new HTMLDocument(„document.html“): Lädt die HTML-Datei.
var options: Erstellt ein neues PdfSaveOptions-Objekt
Converter.ConvertHTML(): Konvertiert HTML in PDF.
URL zu PDF
Aspose bietet ähnliche Funktionalität für URLs, erfordert jedoch zusätzliche Einrichtung.
Beispiel:
using System.IO;
using System;
using System.Net;
using Aspose.Pdf;
string dataDir = "YOUR DOCUMENT DIRECTORY"; // Replace with your path
WebRequest request = WebRequest.Create("https://en.wikipedia.org/wiki/Main_Page");
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseFromServer));
HtmlLoadOptions options = new HtmlLoadOptions("https://en.wikipedia.org/wiki/");
Document pdfDocument = new Document(stream, options);
pdfDocument.Save(dataDir + "WebPageToPDF_out.pdf");
using System.IO;
using System;
using System.Net;
using Aspose.Pdf;
string dataDir = "YOUR DOCUMENT DIRECTORY"; // Replace with your path
WebRequest request = WebRequest.Create("https://en.wikipedia.org/wiki/Main_Page");
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseFromServer));
HtmlLoadOptions options = new HtmlLoadOptions("https://en.wikipedia.org/wiki/");
Document pdfDocument = new Document(stream, options);
pdfDocument.Save(dataDir + "WebPageToPDF_out.pdf");
Imports System.IO
Imports System
Imports System.Net
Imports Aspose.Pdf
Private dataDir As String = "YOUR DOCUMENT DIRECTORY" ' Replace with your path
Private request As WebRequest = WebRequest.Create("https://en.wikipedia.org/wiki/Main_Page")
request.Credentials = CredentialCache.DefaultCredentials
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Dim dataStream As Stream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
reader.Close()
dataStream.Close()
response.Close()
Dim stream As New MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseFromServer))
Dim options As New HtmlLoadOptions("https://en.wikipedia.org/wiki/")
Dim pdfDocument As New Document(stream, options)
pdfDocument.Save(dataDir & "WebPageToPDF_out.pdf")
Erläuterung:
Die Variable dataDir enthält das Verzeichnis, in dem das generierte PDF gespeichert wird.
Eine WebRequest wird erstellt, um auf die URL der Wikipedia-Hauptseite zuzugreifen, und die Standardanmeldedaten werden für die Anfrage verwendet.
Die GetResponse()Die Methode sendet die Anfrage und ruft die Antwort als HttpWebResponse ab.
Ein Stream wird aus der Antwort abgerufen, und ein StreamReader liest den gesamten HTML-Inhalt der Seite in die Zeichenkette responseFromServer ein.
Der HTML-Inhalt aus responseFromServer wird in ein Byte-Array umgewandelt und anschließend in einen MemoryStream geladen.
HtmlLoadOptions wird verwendet, um die Basis-URL für relative Links und andere Einstellungen anzugeben.
Ein Aspose.Pdf.Document wird aus dem Speicherstrom erstellt, der das HTML enthält, und das Dokument wird als PDF im angegebenen Verzeichnis gespeichert.
iText7: HTML-zu-PDF-Konvertierung
iText7 ist eine umfassende PDF-Bibliothek, die auch die Umwandlung von HTML zu PDF unterstützt. Hier ist, wie iText7 in verschiedenen Szenarien abschneidet:
HTML-String zu PDF
iText7 nutzt seine htmlConverter-Klasse, um HTML-Strings in das PDF-Format zu konvertieren.
Beispiel:
public static String DEST = String.Format("{0}test-03.pdf", TARGET);
var html = "<h1>Hello World</h1>";
HtmlConverter.ConvertToPdf(html, new FileStream(dest, FileMode.Create));
public static String DEST = String.Format("{0}test-03.pdf", TARGET);
var html = "<h1>Hello World</h1>";
HtmlConverter.ConvertToPdf(html, new FileStream(dest, FileMode.Create));
Public Shared DEST As String = String.Format("{0}test-03.pdf", TARGET)
Private html = "<h1>Hello World</h1>"
HtmlConverter.ConvertToPdf(html, New FileStream(dest, FileMode.Create))
Lokale HTML-Datei zu PDF
iText7 kann HTML-Dateitypen mit der Klasse HtmlConverter.ConvertToPdf in PDF konvertieren.
Beispiel:
using iText.Html2pdf;
class Program
{
static void Main(string[] args)
{
HtmlConverter.ConvertToPdf("template.html", new FileStream("html-file-to-pdf.pdf", FileMode.Create));
}
}
using iText.Html2pdf;
class Program
{
static void Main(string[] args)
{
HtmlConverter.ConvertToPdf("template.html", new FileStream("html-file-to-pdf.pdf", FileMode.Create));
}
}
Imports iText.Html2pdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
HtmlConverter.ConvertToPdf("template.html", New FileStream("html-file-to-pdf.pdf", FileMode.Create))
End Sub
End Class
Erläuterung:
HtmlConverter: Konvertiert eine HTML-Datei direkt in eine PDF.
URL zu PDF
iText7 unterstützt auch die Konvertierung von Inhalten aus URLs.
Beispiel:
using iText.Html2pdf;
class Program
{
static void Main(string[] args)
{
HtmlConverter.ConvertToPdf("https://example.com", new FileStream("url-to-pdf.pdf", FileMode.Create));
}
}
using iText.Html2pdf;
class Program
{
static void Main(string[] args)
{
HtmlConverter.ConvertToPdf("https://example.com", new FileStream("url-to-pdf.pdf", FileMode.Create));
}
}
Imports iText.Html2pdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
HtmlConverter.ConvertToPdf("https://example.com", New FileStream("url-to-pdf.pdf", FileMode.Create))
End Sub
End Class
Erläuterung:
HtmlConverter: Verwalten Sie die URL-Inhalte und konvertieren Sie sie in eine PDF-Datei.
wkhtmltopdf: HTML-zu-PDF-Konvertierung
wkhtmltopdf ist ein Kommandozeilenprogramm, das HTML-Dateien mit Webkit-Rendering in PDF umwandelt. So funktioniert es in verschiedenen Szenarien:
HTML-String zu PDF
wkhtmltopdf erfordert die Konvertierung von HTML-Strings, indem diese zuerst in eine Datei geschrieben werden.
Beispiel:
using System;
using System.IO;
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
// HTML string to be converted to PDF
string html = "<html><body><h1>Hello, World!</h1></body></html>";
// Write HTML string to temporary file
string tempHtmlFile = Path.Combine(Path.GetTempPath(), "temp.html");
File.WriteAllText(tempHtmlFile, html);
// Set output PDF path
string outputPdfFile = Path.Combine(Path.GetTempPath(), "html-string-to-pdf.pdf");
// Execute wkhtmltopdf command
Process process = new Process();
process.StartInfo.FileName = "wkhtmltopdf";
process.StartInfo.Arguments = $"\"{tempHtmlFile}\" \"{outputPdfFile}\"";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
process.WaitForExit();
// Clean up the temporary HTML file
File.Delete(tempHtmlFile);
Console.WriteLine($"PDF saved to: {outputPdfFile}");
}
}
using System;
using System.IO;
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
// HTML string to be converted to PDF
string html = "<html><body><h1>Hello, World!</h1></body></html>";
// Write HTML string to temporary file
string tempHtmlFile = Path.Combine(Path.GetTempPath(), "temp.html");
File.WriteAllText(tempHtmlFile, html);
// Set output PDF path
string outputPdfFile = Path.Combine(Path.GetTempPath(), "html-string-to-pdf.pdf");
// Execute wkhtmltopdf command
Process process = new Process();
process.StartInfo.FileName = "wkhtmltopdf";
process.StartInfo.Arguments = $"\"{tempHtmlFile}\" \"{outputPdfFile}\"";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
process.WaitForExit();
// Clean up the temporary HTML file
File.Delete(tempHtmlFile);
Console.WriteLine($"PDF saved to: {outputPdfFile}");
}
}
Imports System
Imports System.IO
Imports System.Diagnostics
Friend Class Program
Shared Sub Main(ByVal args() As String)
' HTML string to be converted to PDF
Dim html As String = "<html><body><h1>Hello, World!</h1></body></html>"
' Write HTML string to temporary file
Dim tempHtmlFile As String = Path.Combine(Path.GetTempPath(), "temp.html")
File.WriteAllText(tempHtmlFile, html)
' Set output PDF path
Dim outputPdfFile As String = Path.Combine(Path.GetTempPath(), "html-string-to-pdf.pdf")
' Execute wkhtmltopdf command
Dim process As New Process()
process.StartInfo.FileName = "wkhtmltopdf"
process.StartInfo.Arguments = $"""{tempHtmlFile}"" ""{outputPdfFile}"""
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
process.Start()
process.WaitForExit()
' Clean up the temporary HTML file
File.Delete(tempHtmlFile)
Console.WriteLine($"PDF saved to: {outputPdfFile}")
End Sub
End Class
Erläuterung:
wkhtmltopdf benötigt eine Eingabedatei, daher schreiben wir zunächst den HTML-String in eine temporäre Datei.(temp.html).
Wir verwenden dann die Process-Klasse, um den wkhtmltopdf-Befehl auszuführen, wobei wir den Dateipfad der temporären HTML-Datei und den gewünschten Ausgabepfad für das PDF als Argumente übergeben.
Nach der Umwandlung löschen wir die temporäre HTML-Datei, um aufzuräumen.
Lokale HTML-Datei zu PDF
Um eine lokale HTML-Datei mit wkhtmltopdf in eine PDF zu konvertieren, können Sie direkt auf den Dateipfad der HTML-Datei verweisen.
Beispiel:
using System;
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
// Path to the local HTML file
string htmlFilePath = @"C:\path\to\your\template.html";
// Path for the output PDF file
string outputPdfFile = @"C:\path\to\output\html-file-to-pdf.pdf";
// Execute wkhtmltopdf command
Process process = new Process();
process.StartInfo.FileName = "wkhtmltopdf";
process.StartInfo.Arguments = $"\"{htmlFilePath}\" \"{outputPdfFile}\"";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
process.WaitForExit();
Console.WriteLine($"PDF saved to: {outputPdfFile}");
}
}
using System;
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
// Path to the local HTML file
string htmlFilePath = @"C:\path\to\your\template.html";
// Path for the output PDF file
string outputPdfFile = @"C:\path\to\output\html-file-to-pdf.pdf";
// Execute wkhtmltopdf command
Process process = new Process();
process.StartInfo.FileName = "wkhtmltopdf";
process.StartInfo.Arguments = $"\"{htmlFilePath}\" \"{outputPdfFile}\"";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
process.WaitForExit();
Console.WriteLine($"PDF saved to: {outputPdfFile}");
}
}
Imports System
Imports System.Diagnostics
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Path to the local HTML file
Dim htmlFilePath As String = "C:\path\to\your\template.html"
' Path for the output PDF file
Dim outputPdfFile As String = "C:\path\to\output\html-file-to-pdf.pdf"
' Execute wkhtmltopdf command
Dim process As New Process()
process.StartInfo.FileName = "wkhtmltopdf"
process.StartInfo.Arguments = $"""{htmlFilePath}"" ""{outputPdfFile}"""
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
process.Start()
process.WaitForExit()
Console.WriteLine($"PDF saved to: {outputPdfFile}")
End Sub
End Class
Erläuterung:
Dieses Beispiel gibt einfach den Pfad zur lokalen HTML-Datei an.(template.html)und den Ausgabepfad für das PDF.
wkhtmltopdf verarbeitet lokale Dateien direkt, wodurch der Befehl unkompliziert ist.
URL zu PDF
Die Umwandlung einer URL in eine PDF-Datei ist mit wkhtmltopdf einfach. Geben Sie einfach die URL direkt an den Befehl weiter.
Beispiel:
using System;
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
// URL to be converted to PDF
string url = "https://example.com";
// Path for the output PDF file
string outputPdfFile = @"C:\path\to\output\url-to-pdf.pdf";
// Execute wkhtmltopdf command
Process process = new Process();
process.StartInfo.FileName = "wkhtmltopdf";
process.StartInfo.Arguments = $"\"{url}\" \"{outputPdfFile}\"";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
process.WaitForExit();
Console.WriteLine($"PDF saved to: {outputPdfFile}");
}
}
using System;
using System.Diagnostics;
class Program
{
static void Main(string[] args)
{
// URL to be converted to PDF
string url = "https://example.com";
// Path for the output PDF file
string outputPdfFile = @"C:\path\to\output\url-to-pdf.pdf";
// Execute wkhtmltopdf command
Process process = new Process();
process.StartInfo.FileName = "wkhtmltopdf";
process.StartInfo.Arguments = $"\"{url}\" \"{outputPdfFile}\"";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.Start();
process.WaitForExit();
Console.WriteLine($"PDF saved to: {outputPdfFile}");
}
}
Imports System
Imports System.Diagnostics
Friend Class Program
Shared Sub Main(ByVal args() As String)
' URL to be converted to PDF
Dim url As String = "https://example.com"
' Path for the output PDF file
Dim outputPdfFile As String = "C:\path\to\output\url-to-pdf.pdf"
' Execute wkhtmltopdf command
Dim process As New Process()
process.StartInfo.FileName = "wkhtmltopdf"
process.StartInfo.Arguments = $"""{url}"" ""{outputPdfFile}"""
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
process.Start()
process.WaitForExit()
Console.WriteLine($"PDF saved to: {outputPdfFile}")
End Sub
End Class
Erläuterung:
In diesem Beispiel akzeptiert wkhtmltopdf direkt URLs als Eingabe.
Die URL wird als Argument an wkhtmltopdf übergeben, und die Ausgabe wird als PDF im angegebenen Pfad gespeichert.
PuppeteerSharp: HTML-zu-PDF-Konvertierung
PuppeteerSharp ist ein leistungsstarkes Werkzeug zur Automatisierung von Headless Chrome oder Chromium, das häufig für das Web Scraping oder das Rendern komplexer Webseiten verwendet wird. Nachfolgend finden Sie Beispiele, wie PuppeteerSharp zur Umwandlung von HTML in PDF verwendet wird.
HTML-String zu PDF
Puppeteer ist für das Rendern von vollständigen Seiten konzipiert, daher erfordert die Umwandlung eines HTML-Strings, diesen in eine Datei zu schreiben oder direkt in einem Browser zu rendern.
Beispiel:
using PuppeteerSharp;
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// Download the browser if necessary
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
string htmlContent = "<h1>Hello, World!</h1><p>This is a PDF generated from HTML string.</p>";
await page.SetContentAsync(htmlContent);
// Save the page as a PDF
await page.PdfAsync("html-string-to-pdf.pdf");
await browser.CloseAsync();
}
}
using PuppeteerSharp;
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// Download the browser if necessary
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
string htmlContent = "<h1>Hello, World!</h1><p>This is a PDF generated from HTML string.</p>";
await page.SetContentAsync(htmlContent);
// Save the page as a PDF
await page.PdfAsync("html-string-to-pdf.pdf");
await browser.CloseAsync();
}
}
Imports PuppeteerSharp
Imports System
Imports System.Threading.Tasks
Friend Class Program
Shared Async Function Main(ByVal args() As String) As Task
' Download the browser if necessary
Await (New BrowserFetcher()).DownloadAsync(BrowserFetcher.DefaultRevision)
Dim browser = Await Puppeteer.LaunchAsync(New LaunchOptions With {.Headless = True})
Dim page = Await browser.NewPageAsync()
Dim htmlContent As String = "<h1>Hello, World!</h1><p>This is a PDF generated from HTML string.</p>"
Await page.SetContentAsync(htmlContent)
' Save the page as a PDF
Await page.PdfAsync("html-string-to-pdf.pdf")
Await browser.CloseAsync()
End Function
End Class
Erläuterung:
Puppeteer.LaunchAsync: Startet eine neue Instanz von Chromium im Headless-Modus.
page.SetContentAsync: Lädt den HTML-String in die Browserseite.
page.PdfAsync: Konvertiert das geladene HTML in eine PDF und speichert es in einer Datei.
Lokale HTML-Datei zu PDF
Um eine lokale HTML-Datei mit PuppeteerSharp in ein PDF zu konvertieren, können Sie die Datei in einen Headless-Browser laden und das PDF generieren.
Beispiel:
using PuppeteerSharp;
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// Download the browser if necessary
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
// Load the local HTML file
await page.GoToAsync("file:///path/to/your/template.html");
// Save the page as a PDF
await page.PdfAsync("html-file-to-pdf.pdf");
await browser.CloseAsync();
}
}
using PuppeteerSharp;
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// Download the browser if necessary
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
// Load the local HTML file
await page.GoToAsync("file:///path/to/your/template.html");
// Save the page as a PDF
await page.PdfAsync("html-file-to-pdf.pdf");
await browser.CloseAsync();
}
}
Imports PuppeteerSharp
Imports System
Imports System.Threading.Tasks
Friend Class Program
Shared Async Function Main(ByVal args() As String) As Task
' Download the browser if necessary
Await (New BrowserFetcher()).DownloadAsync(BrowserFetcher.DefaultRevision)
Dim browser = Await Puppeteer.LaunchAsync(New LaunchOptions With {.Headless = True})
Dim page = Await browser.NewPageAsync()
' Load the local HTML file
Await page.GoToAsync("file:///path/to/your/template.html")
' Save the page as a PDF
Await page.PdfAsync("html-file-to-pdf.pdf")
Await browser.CloseAsync()
End Function
End Class
Erläuterung:
page.GoToAsync: Lädt die lokale HTML-Datei(Sorgen Sie dafür, dass Sie die richtigen[file://]()Pfad).
page.PdfAsync: Konvertiert den Inhalt der lokalen HTML-Datei in ein PDF.
URL zu PDF
Das Konvertieren einer URL in eine PDF-Datei ist eine der zentralen Funktionen von PuppeteerSharp, da es komplexe Seiten mit JavaScript verarbeiten kann.
Beispiel:
using PuppeteerSharp;
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// Download the browser if necessary
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
// Navigate to the URL
await page.GoToAsync("https://example.com");
// Save the page as a PDF
await page.PdfAsync("url-to-pdf.pdf");
await browser.CloseAsync();
}
}
using PuppeteerSharp;
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// Download the browser if necessary
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
// Navigate to the URL
await page.GoToAsync("https://example.com");
// Save the page as a PDF
await page.PdfAsync("url-to-pdf.pdf");
await browser.CloseAsync();
}
}
Imports PuppeteerSharp
Imports System
Imports System.Threading.Tasks
Friend Class Program
Shared Async Function Main(ByVal args() As String) As Task
' Download the browser if necessary
Await (New BrowserFetcher()).DownloadAsync(BrowserFetcher.DefaultRevision)
Dim browser = Await Puppeteer.LaunchAsync(New LaunchOptions With {.Headless = True})
Dim page = Await browser.NewPageAsync()
' Navigate to the URL
Await page.GoToAsync("https://example.com")
' Save the page as a PDF
Await page.PdfAsync("url-to-pdf.pdf")
Await browser.CloseAsync()
End Function
End Class
Erläuterung:
page.GoToAsync: Navigiert zur angegebenen URL.
page.PdfAsync: Konvertiert die Webseite unter der URL in ein PDF und speichert es.
Warum IronPDF wählen?
IronPDF zeichnet sich durch seine Benutzerfreundlichkeit, Flexibilität und nahtlose Integration mit .NET-Anwendungen aus. Es ist einfach zu implementieren, unterstützt die Darstellung von HTML, CSS und JavaScript und erfordert keine zusätzliche Einrichtung oder externe Abhängigkeiten. Neben der HTML-zu-PDF-Konvertierung bietet IronPDF eine umfangreiche Palette von Funktionen zur Erstellung von PDF-Dokumenten aus verschiedenen Dateitypen, zum Bearbeiten und Hinzufügen zu bestehenden PDF-Dokumenten, zum Wasserzeichen, zur Sicherheit von PDF-Dateien und mehr.! Um mehr von dieser Bibliothek in Aktion zu sehen, sollten Sie sich das Anleitungendie jede seiner Funktionen im Einsatz demonstrieren.
Schlussfolgerung
Beim Konvertieren von HTML in PDF-Dateien mit C# stehen mehrere leistungsstarke Tools zur Verfügung, die jeweils einzigartige Funktionen und Fähigkeiten bieten. IronPDF, Aspose, iText7, wkhtmltopdf und PuppeteerSharp bieten alle robuste Lösungen zur Umwandlung von HTML-Inhalten in PDF-Dokumente in professioneller Qualität. Die Wahl des richtigen Werkzeugs für Ihr Projekt hängt jedoch von Faktoren wie der einfachen Integration, der Unterstützung dynamischer Inhalte, der Leistung und der Flexibilität ab.
IronPDF zeichnet sich durch seine Einfachheit, die direkte Integration mit .NET und die Fähigkeit aus, komplexes HTML, einschließlich JavaScript-gerenderter Seiten, zu verarbeiten. Es ist ideal für Entwickler, die nach einer benutzerfreundlichen Lösung mit minimalem Einrichtungsaufwand suchen.
Aspose bietet umfangreiche PDF-Manipulationsfunktionen, aber seine HTML-zu-PDF-Konvertierungsfähigkeiten erfordern mehr Konfiguration, insbesondere beim Umgang mit lokalen Dateien und externen Ressourcen.
iText7 bietet eine solide Grundlage für diejenigen, die PDF-Dokumente erstellen möchten, obwohl es möglicherweise zusätzliches Programmieren erfordert, um HTML in PDF zu konvertieren, insbesondere bei dynamischem Inhalt. Es ist eine ausgezeichnete Wahl für Projekte, bei denen eine individuelle PDF-Bearbeitung erforderlich ist.
wkhtmltopdf ist ideal für die grundlegende HTML-zu-PDF-Konvertierung mit einer Befehlszeilenschnittstelle, aber es fehlt die Integration und Flexibilität einer vollständigen .NET-Bibliothek.
PuppeteerSharp, unter Verwendung von headless Chrome, ist das bevorzugte Werkzeug zum Rendern komplexer, dynamischer Webseiten und deren Umwandlung in PDFs, insbesondere bei der Arbeit mit JavaScript-lastigen Inhalten.
Für die meisten .NET-Entwickler, die nach einer All-in-One, unkomplizierten Lösung suchen,IronPDFheute, um die leistungsstarken Funktionen selbst zu erleben.
Letztendlich hängt das richtige Werkzeug von Ihren spezifischen Anforderungen ab, aber mit den hier besprochenen Optionen sind Sie gut gerüstet, um die perfekte Lösung für Ihr Projekt zu finden.
Bevor er Software-Ingenieur wurde, promovierte Kannapat an der Universität Hokkaido in Japan im Bereich Umweltressourcen. Während seines Studiums wurde Kannapat auch Mitglied des Vehicle Robotics Laboratory, das Teil der Abteilung für Bioproduktionstechnik ist. Im Jahr 2022 wechselte er mit seinen C#-Kenntnissen zum Engineering-Team von Iron Software, wo er sich auf IronPDF konzentriert. Kannapat schätzt an seiner Arbeit, dass er direkt von dem Entwickler lernt, der den Großteil des in IronPDF verwendeten Codes schreibt. Neben dem kollegialen Lernen genießt Kannapat auch den sozialen Aspekt der Arbeit bei Iron Software. Wenn er nicht gerade Code oder Dokumentationen schreibt, kann man Kannapat normalerweise beim Spielen auf seiner PS5 oder beim Wiedersehen mit The Last of Us antreffen.
< PREVIOUS C# PDF SDK Vergleich (Kostenlose & Kostenpflichtige Tools)
NÄCHSTES > APITemplate io und IronPDF Vergleich für C# PDF-Bibliotheken