HTML in PDF in .NET Core mit C# und IronPDF konvertieren
Hochwertige PDFs direkt aus HTML zu generieren, ist eine Routineanforderung in modernen .NET-Anwendungen – Berichte, Rechnungen und Tickets benötigen pixelgenaue Ausgaben, die mit der Web-Oberfläche übereinstimmen. IronPDF rationalisiert diesen Workflow, indem es eine einzige C#-API bereitstellt, um HTML, Razor-Ansichten und vollständige Websites in standardkonforme PDF-Dokumente umzuwandeln. Am Ende dieser Anleitung wird ein Entwickler in der Lage sein, URLs, rohes HTML oder MVC-Ansichten in einem ASP.NET Core-Projekt zu konvertieren und denselben Code auf Windows, Linux, Docker oder serverlosen Umgebungen bereitzustellen.
Schnellstart: Erstellen eines PDFs aus HTML in .NET Core
Mühelos HTML zu PDF in .NET Core mit der IronPDF-Bibliothek konvertieren. Diese Anleitung bietet ein einfaches Beispiel, um Ihnen schnell den Einstieg zu erleichtern, indem Sie HTML-Inhalte mit minimalem Code in ein hochwertiges PDF rendern. Perfekt für Entwickler, die die PDF-Erstellung mühelos in ihre Anwendungen integrieren möchten.
-
Installieren Sie IronPDF mit NuGet Package Manager
-
Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.
var pdf = new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>Hello World</h1>"); -
Bereitstellen zum Testen in Ihrer Live-Umgebung
Beginnen Sie noch heute, IronPDF in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
Minimaler Arbeitsablauf (5 Schritte)
- Installieren Sie das
IronPDFNuGet-Paket - Konvertieren einer Website-URL mit
RenderUrlAsPdf - Rendering von Roh-HTML über
RenderHtmlAsPdf - Exportieren einer MVC-Ansicht nach PDF
- Anpassen von Papiergröße, Rändern, Kopf- und Fußzeilen
Schnellstart-Checkliste
- Install –
Install-Package IronPdf - EineURLrendern –
ChromePdfRenderer.RenderUrlAsPdf() - Roh-HTML rendern –
ChromePdfRenderer.RenderHtmlAsPdf() - Eine Razor-Ansicht exportieren –
ChromePdfRenderer.RenderHtmlAsPdfAsync() - Output feinabstimmen – nutzen Sie
ChromePdfRenderer.RenderingOptions
Was dieses Tutorial abdeckt
- URL-, HTML-String und Razor-Ansicht-Konvertierung
- Papier-, Rand- und Medientypkonfiguration
- Plattformübergreifende Bereitstellung (Windows, Linux, Docker)
- Nachbearbeitung: Zusammenführen, Wasserzeichen hinzufügen, mit Passwort schützen und PDFs digital signieren
- End-to-End-Beispiel: MVC-App zur Ticketbuchung
Wie installiere ich die PDF-Bibliothek in .NET Core?
Die Installation der Bibliothek ist eine Einzeiler in jedem .NET 8-Projekt und bleibt vorwärts kompatibel mit .NET 9-Vorschau und dem kommenden .NET 10-Release. Verwenden Sie die Paket-Manager-Konsole von NuGet und der Paketmanager löst jede Abhängigkeit automatisch für Windows, Linux, Docker und serverlose Ziele.
:ProductInstall # .NET 8 LTS and higher
:ProductInstall # .NET 8 LTS and higher
dotnet add package IronPdf innerhalb Ihres Projektordners.Bestätigen Sie nach der Installation, dass alles funktioniert, indem Sie eine öffentlicheURLin PDF konvertieren:
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-3.cs
public class ClientModel
{
[Required]
public string Name { get; set; }
[Required]
public string Phone { get; set; }
[Required]
public string Email { get; set; }
}
Public Class ClientModel
<Required>
Public Property Name() As String
<Required>
Public Property Phone() As String
<Required>
Public Property Email() As String
End Class
Wie es funktioniert
ChromePdfRendererstartet eine sandboxed Chromium-Instanz im Hintergrund—eine separate Chrome-Installation ist nicht erforderlich.RenderUrlAsPdferfasst den vollständig gerenderten DOM, einschließlich JavaScript-gesteuerter Inhalte, CSS-Media-Queries und Schriften.- Das resultierende
PdfDocumentbietet Hilfsmethoden zum Zusammenführen, Passwortschutz oder digitalen Signieren des Outputs—die Möglichkeiten werden später in diesem Tutorial behandelt.
Für mehr Details zu Bereitstellungsnuancen (Azure App Service, AWS Lambda, On-Premise Linux), siehe den speziellen Installationsleitfaden und die erweiterte NuGet-Setup-Seiten. Interne CI/CD-Tipps für Docker und K8s-Cluster werden in den Best Practices für Docker-Bereitstellungen behandelt.
Wie kann ein .NET Core-Dienst eine Live-Website-URL in PDF umwandeln?
Ein einzelner Aufruf von RenderUrlAsPdf genügt: Übergeben Sie eine öffentlich erreichbare URL, und IronPDF gibt ein vollständig gerendertes, standardkonformes PDF zurück. Der unten stehende Code zielt auf .NET 8 LTS ab und kompiliert unverändert auf .NET 9-Vorschau sowie das kommende .NET 10-Release im Jahr 2025.
Schritt-für-Schritt-Beispiel
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-4.cs
public class ClientServices
{
private static ClientModel _clientModel;
public static void AddClient(ClientModel clientModel)
{
_clientModel = clientModel;
}
public static ClientModel GetClient()
{
return _clientModel;
}
}
Public Class ClientServices
Private Shared _clientModel As ClientModel
Public Shared Sub AddClient(ByVal clientModel As ClientModel)
_clientModel = clientModel
End Sub
Public Shared Function GetClient() As ClientModel
Return _clientModel
End Function
End Class
Warum es funktioniert
ChromePdfRendererstartet eine sandboxed Chromium-Instanz—keine System-Chrome-Abhängigkeit, damit Docker-Images schlank bleiben.RenderUrlAsPdfwartet darauf, dass DOM und JavaScript fertig sind, bevor ein Snapshot erstellt wird, sodass Single-Page-Anwendungen korrekt gerendert werden.- Das Setzen von
CssMediaTypeauf Print weist die Engine an, druckspezifische Regeln zu verwenden, die der Print → Save as PDF-Ausgabe eines Browsers entsprechen. - Das resultierende
PdfDocumentkann verschlüsselt, digital signiert, zusammengeführt oder rasterisiert werden—die Fähigkeiten werden in späteren Abschnitten behandelt.
renderer.LoggingOptions.DebugMode = true und folgen Sie der Headless Chrome-Debug-Anleitung, um die DevTools während des Renderings live zu inspizieren.Verwandte Ressourcen
-API-Referenz– ChromePdfRenderer.RenderUrlAsPdf
-API-Referenz– PdfDocument.SaveAs
- Tutorial – IronPDF in Docker-Containern bereitstellen
Wie kann ich rohes HTML in .NET Core in ein PDF konvertieren?
Die Übergabe eines HTML-Strings—oder des gerenderten Markups einer Razor-Ansicht—an ChromePdfRenderer.RenderHtmlAsPdf erzeugt sofort ein standardkonformes PDF. Die Methode startet IronPDFs eingebettete Chromium-Engine, sodass keine externe Browser-Installation oder WebView-Abhängigkeit erforderlich ist. Der unten gezeigte Code kompiliert heute auf .NET 8 LTS und bleibt vorwärts kompatibel mit .NET 9 und dem angesetzten .NET 10-Release im November 2025.
Beispiel — ein PDF aus einem HTML-Fragment generieren
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-5.cs
@model IronPdfMVCHelloWorld.Models.ClientModel
@{
ViewBag.Title = "Book Ticket";
}
<h2>Index</h2>
@using (Html.BeginForm())
{
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Phone, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Phone, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Phone, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Email, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-10 pull-right">
<button type="submit" value="Save" class="btn btn-sm">
<i class="fa fa-plus"></i>
<span>
Save
</span>
</button>
</div>
</div>
</div>
}
model ReadOnly Property () As IronPdfMVCHelloWorld.Models.ClientModel
ViewBag.Title = "Book Ticket"
End Property
'INSTANT VB TODO TASK: The following line could not be converted:
(Of h2) Index</h2> [using](Html.BeginForm())
If True Then
'INSTANT VB TODO TASK: The following line uses invalid syntax:
' <div class="form-horizontal"> @Html.ValidationSummary(True, "", New { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.Name, htmlAttributes: New { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Name, New { htmlAttributes = New { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Name, "", New { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Phone, htmlAttributes: New { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Phone, New { htmlAttributes = New { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Phone, "", New { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Email, htmlAttributes: New { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Email, New { htmlAttributes = New { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Email, "", New { @class = "text-danger" }) </div> </div> <div class="form-group"> <div class="col-md-10 pull-right"> <button type="submit" value="Save" class="btn btn-sm"> <i class="fa fa-plus"></i> <span> Save </span> </button> </div> </div> </div> }
Was der Code demonstriert
- Eingebettetes Chromium — IronPDF bündelt die Chromium-Engine und garantiert HTML5-, CSS3- und JavaScript-Parität mit modernen Browsern.
- Einzelne Abhängigkeit — Eine leichte NuGet-Installation deckt Windows, Linux, Docker und Azure/AWS ab, ohne zusätzliche Systembibliotheken.
- Render-Optionen —
PaperSize,CssMediaType, undRenderDelayspiegeln die Druckeinstellungen eines Browsers wider, damit PDFs den Bildschirm-Layouts entsprechen. - Zukunftssicheres Targeting — Die API-Oberfläche ist identisch für .NET 8, .NET 9 STS und das kommende .NET 10, sodass langfristige Wartung minimal ist.
- Post-Processing-Hooks —
PdfDocumentbietet Helfer für Zusammenführen, Passwortschutz und digitale Signaturen—jeweils später in diesem Leitfaden behandelt.
Weiterführende Lektüre: Sehen Sie sich das Schritt-für-Schritt-HTML-String-zu-PDF-Tutorial und die vollständige ChromePdfRenderer API-Dokumentation an.
Wie kann eine ASP .NET Core MVC-Ansicht in PDF exportiert werden?
IronPDF rendert eine vollverarbeitete Razor-Ansicht ( .cshtml ) auf die gleiche Weise, wie es ein Browser tun würde, und streamt das Ergebnis als PdfDocument. Der folgende Workflow hält die Controller-Logik sauber, erfordert keine Browser-Plugins und funktioniert in .NET 8 LTS, .NET 9-Vorschau und dem angesetzten .NET 10-Release im November 2025.
End-to-End-Controller-Beispiel
// TicketsController.cs — .NET 8 LTS / MVC
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using YourApp.Models; // TicketViewModel
public class TicketsController : Controller
{
private readonly ChromePdfRenderer _renderer;
public TicketsController()
{
_renderer = new ChromePdfRenderer
{
RenderingOptions =
{
PaperSize = PdfPaperSize.A5, // Compact ticket size
PaperOrientation = PdfPdfOrientation.Portrait,
FitToPaperWidth = true,
CssMediaType = PdfCssMediaType.Print,
Margins = new PdfMargins(5, 10, 5, 10) // mm
}
};
}
// GET /Tickets/Print/42
public async Task<IActionResult> Print(int id)
{
TicketViewModel vm = await _service.GetTicketAsync(id);
// 1. Render the Razor view to an HTML string
string html = await RazorTemplateEngine.RenderViewAsync(
HttpContext, "~/Views/Tickets/Print.cshtml", vm);
// 2. Convert HTML → PDF
using PdfDocument pdf = _renderer.RenderHtmlAsPdf(html);
// 3. Stream back as a file
return File(pdf.BinaryData, "application/pdf",
$"ticket-{id}.pdf");
}
}
// TicketsController.cs — .NET 8 LTS / MVC
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using YourApp.Models; // TicketViewModel
public class TicketsController : Controller
{
private readonly ChromePdfRenderer _renderer;
public TicketsController()
{
_renderer = new ChromePdfRenderer
{
RenderingOptions =
{
PaperSize = PdfPaperSize.A5, // Compact ticket size
PaperOrientation = PdfPdfOrientation.Portrait,
FitToPaperWidth = true,
CssMediaType = PdfCssMediaType.Print,
Margins = new PdfMargins(5, 10, 5, 10) // mm
}
};
}
// GET /Tickets/Print/42
public async Task<IActionResult> Print(int id)
{
TicketViewModel vm = await _service.GetTicketAsync(id);
// 1. Render the Razor view to an HTML string
string html = await RazorTemplateEngine.RenderViewAsync(
HttpContext, "~/Views/Tickets/Print.cshtml", vm);
// 2. Convert HTML → PDF
using PdfDocument pdf = _renderer.RenderHtmlAsPdf(html);
// 3. Stream back as a file
return File(pdf.BinaryData, "application/pdf",
$"ticket-{id}.pdf");
}
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Imports YourApp.Models ' TicketViewModel
Public Class TicketsController
Inherits Controller
Private ReadOnly _renderer As ChromePdfRenderer
Public Sub New()
_renderer = New ChromePdfRenderer With {
.RenderingOptions = New PdfRenderingOptions With {
.PaperSize = PdfPaperSize.A5, ' Compact ticket size
.PaperOrientation = PdfPdfOrientation.Portrait,
.FitToPaperWidth = True,
.CssMediaType = PdfCssMediaType.Print,
.Margins = New PdfMargins(5, 10, 5, 10) ' mm
}
}
End Sub
' GET /Tickets/Print/42
Public Async Function Print(id As Integer) As Task(Of IActionResult)
Dim vm As TicketViewModel = Await _service.GetTicketAsync(id)
' 1. Render the Razor view to an HTML string
Dim html As String = Await RazorTemplateEngine.RenderViewAsync(
HttpContext, "~/Views/Tickets/Print.cshtml", vm)
' 2. Convert HTML → PDF
Using pdf As PdfDocument = _renderer.RenderHtmlAsPdf(html)
' 3. Stream back as a file
Return File(pdf.BinaryData, "application/pdf", $"ticket-{id}.pdf")
End Using
End Function
End Class
Was dieser Code illustriert
- Keine temporären Dateien — die Razor-Ansicht wird im Speicher gerendert und dann direkt an
RenderHtmlAsPdfübergeben, wodurch Festplatten-I/O und Temp-Ordner-Rennen vermieden werden. - Ticketgroßes Ergebnis —
PaperSize = A5und schmale Ränder halten Heimdruck-Tickets kompakt. - Konsistente Druckstile —
CssMediaType = Printwendet die gleichen@media printCSS-Regeln an, die Browser verwenden. - Binär-Streaming —
pdf.BinaryDatastreamt das Dokument, ohne das Dateisystem zu berühren; ideal für API-Endpunkte und Lambda-Funktionen. - Wiederverwendbarer Renderer —
ChromePdfRendererwird einmal pro Controller instanziiert und dann wiederverwendet, wodurch der Overhead beim Prozessstart minimiert wird.
PaperSize , PaperOrientation , FitToPaperWidth
Margins , Header , Footer , Watermark
Nächster Schritt: Fügen Sie Verschlüsselung, digitale Signaturen hinzu oder fügen Sie mehrere Tickets in einer Datei zusammen. Siehe das Zusammenführungsbeispiel und das Digitalsignatur-How-To.
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.
Wie kann ich Papiergröße, Ränder, Kopfzeilen, Wasserzeichen und Sicherheit vor dem Rendern anpassen?
IronPDF stellt ein einzelnes ChromePdfRenderOptions Objekt zur Verfügung, das jeden Aspekt des Outputs steuert—Papierabmessungen, Orientierung, Kopf- und Fußzeilen, JavaScript-Zeitsteuerung, Wasserzeichen, Verschlüsselung und digitale Signaturen—alles ohne zusätzliche Browser-Plugins.
Codebeispiel – Wenden Sie mehrere Optionen gleichzeitig an
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-7.cs
[HttpPost]
public ActionResult Index(ClientModel model)
{
if (ModelState.IsValid)
{
ClientServices.AddClient(model);
return RedirectToAction("TicketView");
}
return View(model);
}
<HttpPost>
Public Function Index(ByVal model As ClientModel) As ActionResult
If ModelState.IsValid Then
ClientServices.AddClient(model)
Return RedirectToAction("TicketView")
End If
Return View(model)
End Function
Warum diese Optionen wichtig sind
PaperSize,Margins, undCssMediaTypespiegeln den Druckdialog eines Browsers wider, sodass Bildschirm-Layouts und das PDF auf Windows, Linux und Docker identisch bleiben.- HTML-Kopf- und Fußzeilen unterstützen Razor-Token, CSS und JavaScript – praktisch für dynamische Seitennummern oder Branding.
HtmlStampermöglicht es, mit einer einzelnen Zeile gebrandete Wasserzeichen mit vollständiger HTML + CSS-Kontrolle zu erstellen.- Sicherheitsoptionen ermöglichen 128-Bit-Verschlüsselung, Besitzer-/Benutzerpasswörter und granulare Berechtigungen ohne Drittanbieter-Tools.
- Digitale Signaturen fügen einen kryptografischen Siegel direkt im Code hinzu und bewahren die rechtliche Authentizität und Manipulationsbeweise.
- Extraktionshelfer wie
ExtractAllTextundExtractAllImageskehren den Prozess um, wenn eine Analyse erforderlich ist.
Schnellreferenz — Beliebte Einstellungen
PaperSize , PaperOrientation , Margins , CssMediaType , RenderDelay
`HtmlHeader`, `HtmlFooter`, dynamische Razor-Platzhalter, Seitenzahl-Token
`Wasserzeichen`, `HtmlStamp`, Deckkraft, Ausrichtung
`SecurityOptions`, `SignAndStamp`, Eigentümer-/Benutzerpasswörter, Zertifikatsversiegelung
Nächste Aufgaben: Mehrere PDFs zusammenführen, Text & Bilder extrahieren und an Docker oder serverlos bereitstellen. Fahren Sie mit dem Bereitstellungsabschnitt fort, um plattformübergreifende Kompatibilität sicherzustellen.
Wie kann ich PDF-Erstellungscode in Docker unter Linux und Windows bereitstellen?
IronPdf wird als einzelnes eigenständiges NuGet-Paket geliefert, sodass die Containerisierung einer ASP.NET Core-(oder Konsolen-)App auf sowohl Windows als auch Linux unkompliziert ist. Der Schlüssel besteht darin, die veröffentlichten Binärdateien in ein schlankes Laufzeit-Image zu kopieren und, unter Linux, die beiden nativen Bibliotheken hinzuzufügen, die IronPDF benötigt (libnss3 und libatk1.0-0).
Multi-Stage-Dockerfile (Ubuntu 22.04)
####### ---------- stage 1 ----------
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["MyPdfApp.csproj", "."]
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /app/publish
####### ---------- stage 2 ----------
FROM mcr.microsoft.com/dotnet/aspnet:8.0-jammy
######## Install two native libs required by Chromium
RUN apt-get update && \
apt-get install -y --no-install-recommends libnss3 libatk1.0-0 && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyPdfApp.dll"]
mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022—es sind keine zusätzlichen Pakete erforderlich, da Chromium-DLLs gebündelt sind.End-to-End-Validierungsskript
docker build -t pdf-demo .
docker run --rm -p 8080:80 pdf-demo
######### ↳ Navigate to http://localhost:8080/api/pdf?url=https://example.com
docker build -t pdf-demo .
docker run --rm -p 8080:80 pdf-demo
######### ↳ Navigate to http://localhost:8080/api/pdf?url=https://example.com
- Die API-Aktion ruft intern
ChromePdfRenderer.RenderUrlAsPdfauf, genau wie in Abschnitt 2. - IronPDF startet seinen sandboxed Chromium-Prozess im Container – kein X-Server erforderlich, da es im Headless-Modus rendert.
- Der Speicherbedarf bleibt auch bei großen Renderings unter 200 MB.
libnss3 als auch libatk1.0-0 vorhanden sind. Alpine-Images werden nicht unterstützt, da die musl C-Bibliothek erforderliche Symbole fehlt.Interne Ressourcen
- Tutorial – IronPDF in Docker-Containern bereitstellen
- Anleitung – IronPDF auf Azure App Service Linux ausführen
-API-Referenz–
ChromePdfRendererclass
Wie kann ich bestehende PDFs in .NET Core öffnen, zusammenführen, mit Wasserzeichen versehen und Inhalte extrahieren?
IronPDF behandelt jedes PDF—egal ob von IronPDF, Adobe® Acrobat oder Drittanbietertools generiert—als ein erstklassiges PdfDocument Objekt, das geöffnet, bearbeitet, gesichert und ohne Qualitätsverlust erneut gespeichert werden kann. Die gleiche API-Oberfläche funktioniert heute unter .NET 8 LTS und lässt sich unverändert mit .NET 9 Preview und der kommenden .NET 10-Version kompilieren.
Einheitliches Beispiel — öffnen → zusammenführen → Wasserzeichen → extrahieren
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-10.cs
[HttpPost]
public ActionResult TicketView(TicketModel model)
{
IronPdf.Installation.TempFolderPath = $@"{Directory.GetParent}/irontemp/";
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
var html = this.RenderViewAsync("_TicketPdf", model);
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(html.Result, @"wwwroot/css");
return File(pdf.Stream.ToArray(), "application/pdf");
}
<HttpPost>
Public Function TicketView(ByVal model As TicketModel) As ActionResult
IronPdf.Installation.TempFolderPath = $"{AddressOf Directory.GetParent}/irontemp/"
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
Dim html = Me.RenderViewAsync("_TicketPdf", model)
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html.Result, "wwwroot/css")
Return File(pdf.Stream.ToArray(), "application/pdf")
End Function
Warum das wichtig ist
- Öffnen & Zusammenführen –
PdfDocument.FromFilelädt jedes standardkonforme PDF, inklusive verschlüsselter Dateien, währendPdfDocument.Mergeeine beliebige Anzahl von Dokumenten in einem einzigen Aufruf zusammenfügt. - Wasserzeichen –
ApplyStamp(aliasHtmlStamp) bettet vollständig gestylte HTML/CSS-Overlays—Logo, QR-Code oder diagonaler Text—auf ausgewählten Seiten ein, ohne Rasterung. - Inhaltsextraktion –
ExtractAllTextundExtractAllImagesziehen rohen UTF-8-Text oder binäre Bildströme für die Downstream-Archivierung oder AI-Pipelines. - Digitale Signaturen bereit – die gleiche
PdfDocumentInstanz kann mitSignAndStampversiegelt werden, was RFC 3161-konforme Hashes erzeugt, die mit den ISO 32000-2-Digitalsignaturanforderungen übereinstimmen. - Off-Standard-Konformität – IronPDF behält die ursprüngliche PDF-Struktur (Schriften, Ebenen, XMP-Metadaten) bei, sodass die Ausgabe mit Adobe® Reader und anderen ISO 32000-1 Betrachtern kompatibel bleibt.
- Zukunftssicher – Die API vermeidet Interop-Assemblies und Win32-GDI-Aufrufe, sodass der Code unverändert auf Windows, Linux, Docker und kommenden .NET 10-serverlosen SKUs läuft.
Benötigen Sie Seitenaufteilung, Drehen oder Löschen? Siehe das seitenspezifische Bearbeitungs-Tutorial für granulare Operationen.
Wie können PDFs in .NET Core verschlüsselt und digital signiert werden?
IronPDF sichert ein Dokument in zwei Schritten: AES-basierte Verschlüsselung (Benutzer-/Besitzerpasswörter + granulare Berechtigungen) und X.509 digitale Signaturen, die die Datei mit einem kryptografischen Hash versiegeln. Beide APIs leben auf demselben PdfDocument Objekt, daher ist der Workflow heute auf .NET 8 LTS identisch und kompiliert unverändert auf .NET 9-Vorschau und dem kommenden .NET 10-Release.
Beispiel — 256-Bit-AES anwenden, Druckrechte sperren und eine sichtbare Signatur hinzufügen
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-11.cs
using System.IO;
using System.Threading.Tasks;
public static class ControllerExtensions
{
public static async Task<string> RenderViewAsync<TModel>(this Controller controller, string viewName, TModel model, bool partial = false)
{
if (string.IsNullOrEmpty(viewName))
{
viewName = controller.ControllerContext.ActionDescriptor.ActionName;
}
controller.ViewData.Model = model;
using (var writer = new StringWriter())
{
IViewEngine viewEngine = controller.HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
ViewEngineResult viewResult = viewEngine.FindView(controller.ControllerContext, viewName, !partial);
if (viewResult.Success == false)
{
return $"A view with the name {viewName} could not be found";
}
ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer, new HtmlHelperOptions());
await viewResult.View.RenderAsync(viewContext);
return writer.GetStringBuilder().ToString();
}
}
}
Imports System.IO
Imports System.Threading.Tasks
Public Module ControllerExtensions
<System.Runtime.CompilerServices.Extension> _
Public Async Function RenderViewAsync(Of TModel)(ByVal controller As Controller, ByVal viewName As String, ByVal model As TModel, Optional ByVal As Boolean = False) As Task(Of String)
If String.IsNullOrEmpty(viewName) Then
viewName = controller.ControllerContext.ActionDescriptor.ActionName
End If
controller.ViewData.Model = model
Using writer = New StringWriter()
Dim viewEngine As IViewEngine = TryCast(controller.HttpContext.RequestServices.GetService(GetType(ICompositeViewEngine)), ICompositeViewEngine)
Dim viewResult As ViewEngineResult = viewEngine.FindView(controller.ControllerContext, viewName, Not partial)
If viewResult.Success = False Then
Return $"A view with the name {viewName} could not be found"
End If
Dim viewContext As New ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer, New HtmlHelperOptions())
Await viewResult.View.RenderAsync(viewContext)
Return writer.GetStringBuilder().ToString()
End Using
End Function
End Module
Hinter den Kulissen
- AES-256-Verschlüsselung — IronPDF umschließt die Nutzlast mit NIST-geprüften AES-Schlüsseln und blockiert nicht autorisiertes Öffnen, Drucken oder Kopieren.
- Berechtigungsgranularität — Eigenschaften wie
AllowUserPrintingundAllowUserFormDataschalten die Rechte pro Aktion um; ein Besitzerpasswort ist erforderlich, damit eine Einschränkung wirksam wird. - Digitale Signaturen —
SignAndStampbettet einen RFC 3161-Zeitstempel und eine Zertifikatskette ein, wodurch manipulationssichere Hashes entsteht, die von Adobe® Acrobat und anderen ISO 32000-2-Viewern erkannt werden. - All-in-One-API — sowohl Verschlüsselung als auch Signieren ändern die gleiche
PdfDocumentInstanz, vermeiden mehrere Dateidurchläufe und bewahren interne Schriften, Ebenen und Metadaten.
location Strings ASCII-clean sind.Kern-Sicherheitseinstellungen
`PdfSecuritySettings` → `OwnerPassword` , `UserPassword` , `EncryptionAlgorithm` , `AllowUserPrinting`
`PdfDocument.SignAndStamp` - PFX Pfad, Autorität, Ort, Grund, Zeitstempel
Interne Ressourcen für tiefere Einblicke
- Tutorial – Ein PDF mit Passwortschutz versehen
- Beispiel – Ein PDF digital signieren
- API reference –
PdfSecuritySettings
Wie kann die HTML-zu-PDF-Leistung in .NET Core optimiert und skaliert werden?
IronPDFs Chromium-Engine rendert die meisten Seiten bereits in < 1 s auf moderner Hardware, aber der Durchsatz kann durch Batch-Verarbeitung, Aktivierung von Multithreading und Reduzierung des Headless Chrome-Overheads vervielfacht werden. Die folgenden Tipps gelten gleichermaßen für alle .NET-Versionen.
1. Batch-Rendern in einem Hintergrund-Thread-Pool
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-12.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set rendering options
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;
renderer.RenderHtmlFileAsPdf(@"testFile.html").SaveAs("GeneratedFile.pdf");
Imports IronPdf
License.LicenseKey = "YourLicenseKey"
Dim renderer As New ChromePdfRenderer()
' Set rendering options
renderer.RenderingOptions.PaperSize = Rendering.PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = Rendering.PdfPaperOrientation.Portrait
renderer.RenderHtmlFileAsPdf("testFile.html").SaveAs("GeneratedFile.pdf")
ChromePdfRendereris thread-safe; eine einzelne Instanz kann Dutzende gleichzeitiger Aufgaben ohne Deadlocks bedienen.Parallel.ForEachsaturiert jeden CPU-Kern; typische Server sehen 4–6× Durchsatzsteigerungen im Vergleich zu einer Einzel-Thread-Schleife.- Wenn sich ASP.NET-Anfragen stauen, verlagern Sie schwere Renders zu einem gehosteten Hintergrunddienst oder einer Nachrichtenwarteschlange ein, um die Antwortzeiten niedrig zu halten.
2. Startkosten für Headless Chrome reduzieren
IronPDF liefert sein eigenes Chromium-Build, aber jeder Render verursacht eine kleine Startsteuer. Pooling hilft, und Linux-Container müssen zwei native libs enthalten:
RUN apt-get update && \
apt-get install -y --no-install-recommends libnss3 libatk1.0-0
Das Fehlen einer der Bibliotheken manifestiert sich als libnss3.so not found Fehler in den Docker-Protokollen.
Empfohlene Chrome-Flags (automatisch von IronPDF angewendet) beinhalten --disable-gpu und --no-sandbox, um Speicher- und Root-User-Probleme in Containern zu reduzieren.
3. Warten Sie auf spätes JavaScript mit RenderDelay oder WaitFor
Seiten, die Zähler animieren oder Daten nach DOMContentLoaded abrufen, benötigen möglicherweise eine kurze Verzögerung:
renderer.RenderingOptions.RenderDelay = 200; // ms
// OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')";
renderer.RenderingOptions.RenderDelay = 200; // ms
// OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')";
renderer.RenderingOptions.RenderDelay = 200 ' ms
' OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')";
Siehe das dedizierte WaitFor-Tutorial für benutzerdefinierte Versprechen und DOM-Abfragen.
4. Debug-Logging für eine Anfrage aktivieren
:path=/static-assets/pdf/content-code-examples/tutorials/dotnet-core-pdf-generating-15.cs
IronPdf.License.LicenseKey = "YourLicenseKey";
PdfDocument pdf = PdfDocument.FromFile("1.pdf");
PdfDocument pdf2 = PdfDocument.FromFile("2.pdf");
pdf.AppendPdf(pdf2);
pdf.SaveAs("appendedFile.pdf");
IronPdf.License.LicenseKey = "YourLicenseKey"
Dim pdf As PdfDocument = PdfDocument.FromFile("1.pdf")
Dim pdf2 As PdfDocument = PdfDocument.FromFile("2.pdf")
pdf.AppendPdf(pdf2)
pdf.SaveAs("appendedFile.pdf")
Live DevTools-Spuren zeigen fehlende Schriftarten, 404-Bilder und Zeitsereignisse ohne erneutes Kompilieren des Codes.
5. PDF-Vorlagen wiederverwenden anstatt neu zu rendern
Für Rechnungsdurchläufe, erstellen Sie ein Vorlagen-PDF mit Platzhaltern wie [[name]] und führen Sie einen Textaustausch durch, anstatt komplexes HTML neu zu erstellen. Es ist 10× schneller und speicherschonend.
Schnellabstimmungs-Checkliste
`Parallel.ForEach`, `async/await`, Wiederverwendung eines einzelnen `ChromePdfRenderer`
Verwenden Sie `aspnet:8.0-jammy`; installieren Sie `libnss3` + `libatk1.0-0`; Flags `--no-sandbox`, `--disable-gpu`
`RenderDelay`, `WaitFor()`, log DevTools Zeitleiste für langsame SPA-Hydrationen
Weiterführende Lektüre
- How-to – PDFs mit async / Multithreading erstellen
- Fehlerbehebung – Performance Assistance Center
- Beispiel – Threaded Rendering Demo
Wo kann ich eine kostenlose Testversion herunterladen, eine Lizenz auswählen und Expertenunterstützung finden?
Ein 30-tägiger Testschlüssel wird sofort über das Start Free Trial-Formular ausgegeben und schaltet alle Funktionen frei, einschließlich HTML-zu-PDF, digitale Signaturen und Verschlüsselung, ohne Wasserzeichen.
Nach der Bewertung der Bibliothek wählen Sie eine unbefristete Entwickler-, Bereitstellungs- oder Unternehmens-Lizenz; jeder Plan beinhaltet kostenlose kleinere Updates, Nutzungsrechte für Entwicklung/Test/Produktion und eine 30-tägige Geld-zurück-Garantie. Das Anwenden des Schlüssels ist eine einzelne Codezeile (IronPdf.License.LicenseKey = "YOUR-KEY";) und kann in CI/CD-Pipelines automatisiert werden.
Umfassende Dokumentation—Schnellstart-Anleitungen, API-Referenz und Tutorial-Videos—stehen im Dokumentationsportal zur Verfügung und werden für jede .NET-Version aktualisiert.
Ingenieurfragen erhalten eine Antwort innerhalb eines Geschäftstages via Live-Chat, E-Mail oder Telefon vom in Chicago ansässigen Support-Team.
Leistungsoptimierung und Bereitstellungs-FAQs sind im Performance Assistance Centre zusammengefasst.
Schnelllinks
| Ressource | URL | Warum es wichtig ist |
|---|---|---|
| Erhalten Sie einen 30-tägigen Testschlüssel | https://ironpdf.com/demos/ |
Schaltet alle Funktionen ohne Wasserzeichen frei |
| Lizenzierung & Preisgestaltung | https://ironpdf.com/licensing/ |
Unbefristete oder Abonnementpläne; Iron Suite bündelt 10 Bibliotheken |
| API-Referenz | https://ironpdf.com/object-reference/api/ |
Vollständige Klassendokumentation, z.B. ChromePdfRenderer |
| Dokumentenportal | https://ironpdf.com/docs/ |
Anleitungen, Tutorials, Beispielprojekte |
| Performance-Unterstützung | https://ironpdf.com/troubleshooting/ironpdf-performance-assistance/ |
Optimierungs- und Skalierungstipps |
| Kontaktieren Sie den Support | https://ironsoftware.com/contact-us/ |
Live-Chat, E-Mail, Telefonunterstützung |
Nächste Schritte
- Klone das Beispiel-Repo, das jede Hauptfunktion demonstriert—von MVC-Ansicht-Rendering bis hin zu AES-256-Verschlüsselung.
- Probeschlüssel einstecken in eine bestehende Lösung und die Modultests ausführen, um plattformübergreifende Kompatibilität zu validieren.
- Buchen Sie eine Live-Demo mit dem Engineering-Team für projektspezifische Empfehlungen.
Mit diesen Ressourcen in der Hand kann jedes .NET-Team pixelgenaue PDFs in der Produktion bereitstellen—on-prem, in Docker oder serverlos—innerhalb eines einzigen Sprints.
Häufig gestellte Fragen
Wie kann ich HTML in .NET Core in PDF umwandeln?
Sie können HTML in .NET Core mit der IronPDF-Bibliothek in PDF umwandeln. Installieren Sie zuerst das IronPDF NuGet-Paket und erstellen Sie dann eine ChromePdfRenderer-Instanz. Verwenden Sie die RenderHtmlAsPdf-Methode, um HTML-Strings in PDFs umzuwandeln.
Wie konvertiere ich eine Website-URL in ein PDF-Dokument?
Um eine Website-URL in ein PDF-Dokument zu konvertieren, installieren Sie das IronPDF NuGet-Paket, erstellen Sie eine ChromePdfRenderer-Instanz und verwenden Sie die RenderUrlAsPdf-Methode, um die URL in ein PDF zu rendern. Das Ergebnis kann mit der SaveAs-Methode gespeichert werden.
Was ist der beste Weg, um Razor-Ansichten in PDFs zu konvertieren?
Der beste Weg, um Razor-Ansichten in PDFs zu konvertieren, ist die Verwendung von IronPDF. Rendern Sie zuerst die Razor-Ansicht in einen HTML-String und übergeben Sie diesen String dann an die RenderHtmlAsPdf-Methode, um ein PDF-Dokument zu erstellen.
Wie kann ich die Sicherheit meiner PDF-Dokumente erhöhen?
Verbessern Sie die PDF-Sicherheit durch die Verwendung von IronPDF, indem Sie AES-256-Verschlüsselung anwenden, Passwörter setzen und Benutzerberechtigungen steuern. Konfigurieren Sie diese Einstellungen über die SecuritySettings-Eigenschaft, um Aktionen wie Drucken und Bearbeiten einzuschränken.
Welche Optionen gibt es zur Anpassung der PDF-Renderung?
IronPDF bietet verschiedene Renderoptionen über die ChromePdfRenderOptions-Klasse, einschließlich der Einstellung von Papiergröße, Ausrichtung, Rändern und der Anwendung von CSS-Medien-Typen. Sie können auch Kopf- und Fußzeilen sowie Wasserzeichen für einen individuell gestalteten Dokumentenausgang hinzufügen.
Wie deploye ich eine PDF-Generierungsanwendung in einem Docker-Container?
Um eine PDF-Generierungsanwendung in einem Docker-Container zu deployen, konfigurieren Sie Linux-Abhängigkeiten in Ihrer Dockerfile und setzen Sie Benutzerberechtigungen. Verwenden Sie IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig für die automatische Verwaltung von Abhängigkeiten.
Wie kann ich Wasserzeichen mit C# zu einem PDF hinzufügen?
Sie können Wasserzeichen zu PDFs mit IronPDF hinzufügen, indem Sie die Watermark-Eigenschaft mit HtmlStamp-Objekten nutzen. Für erweiterte Optionen erlaubt die HtmlStamper-Klasse benutzerdefinierte Positionierung und Transparenzeffekte.
Kann ich digitale Signaturen zu PDF-Dokumenten hinzufügen?
Ja, Sie können digitale Signaturen zu PDFs mit der PdfSignature-Klasse von IronPDF hinzufügen. Verwenden Sie die Sign-Methode an einem PdfDocument und geben Sie eine Zertifikatsdatei an, um die Integrität und Authentizität des Dokuments sicherzustellen.
Wie kann ich die Leistung der PDF-Generierung in .NET Core optimieren?
Optimieren Sie die PDF-Generierungsleistung, indem Sie eine threadsichere ChromePdfRenderer-Instanz wiederverwenden, Multithreading aktivieren und unnötige Headless-Chrome-Start-Flags entfernen. Diese Praktiken tragen zur Effizienzsteigerung Ihrer Anwendung bei.
Funktioniert das .NET Core HTML-zu-PDF-Beispiel in diesem Tutorial auch mit .NET 10?
Ja. IronPDF ist vollständig kompatibel mit .NET 10, sodass Sie das ChromePdfRenderer HTML-zu-PDF-Beispiel aus diesem Tutorial in .NET 10 Projekten verwenden können, ohne den Kerncode zu ändern. Der Hauptunterschied besteht darin, dass Sie .NET 10 beim Erstellen des Projekts anvisieren, dann das neueste IronPDF-Paket von NuGet installieren, um pixelgenaue PDFs aus HTML, Razor-Ansichten oder URLs zu erstellen.

