Konvertieren von Razor-Seiten in PDFs in ASP.NET Core Web App
Eine Razor Page ist eine Datei mit der Erweiterung .cshtml, die C# und HTML kombiniert, um Webinhalte zu erzeugen. In ASP.NET Core sind Razor Pages eine einfachere Möglichkeit, den Code für Webanwendungen zu organisieren, was sie zu einer guten Lösung für einfache Seiten macht, die nur gelesen werden oder einfache Dateneingaben vornehmen.
Eine ASP.NET Core Web App ist eine Webanwendung, die mit ASP.NET Core erstellt wurde, einem plattformübergreifenden Framework für die Entwicklung moderner Webanwendungen.
IronPDF vereinfacht den Prozess der Erstellung von PDF-Dateien aus Razor Pages innerhalb eines ASP.NET Core Web App-Projekts. Dies macht die PDF-Erstellung in ASP.NET Core Web Apps einfach und direkt.
Konvertieren von Razor-Seiten in PDFs in ASP.NET Core Web App
- Laden Sie die C#-Bibliothek für die Konvertierung von Razor-Seiten in PDFs in ASP.NET Core Web App herunter
- Hinzufügen einer Modellklasse für die Daten
- Erstellen Sie eine neue Razor-Seite und bearbeiten Sie die Datei ".cshtml", um die Daten anzuzeigen
- Bearbeiten Sie die ".cs"-Datei und verwenden Sie die
RenderRazorToPdf
methode - Laden Sie das Beispielprojekt für einen schnellen Start herunter
IronPDF-Erweiterungspaket
Das Paket IronPdf.Extensions.Razor ist eine Erweiterung des Hauptpakets IronPdf. Sowohl die IronPdf.Extensions.Razor- als auch die IronPdf-Pakete werden benötigt, um Razor Pages in einer ASP.NET Core Web App in PDF-Dokumente umzuwandeln.
Install-Package IronPdf.Extensions.Razor
Installieren mit NuGet
Install-Package IronPDF.Extensions.Razor
Razor-Seiten in PDFs umwandeln
Sie benötigen ein ASP.NET Core Web App-Projekt, um Razor-Seiten in PDF-Dateien zu konvertieren.
Erstellen einer Modellklasse
- Erstellen Sie einen neuen Ordner im Projekt und nennen Sie ihn "Modelle"
- Fügen Sie dem Ordner eine Standard-C#-Klasse hinzu und nennen Sie sie "Person" Diese Klasse wird als Modell für individuelle Daten dienen. Verwenden Sie den folgenden Codeschnipsel:
:path=/static-assets/pdf/content-code-examples/how-to/cshtml-to-pdf-razor-model.cs
namespace RazorPageSample.Models
{
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}
}
Namespace RazorPageSample.Models
Public Class Person
Public Property Id() As Integer
Public Property Name() As String
Public Property Title() As String
Public Property Description() As String
End Class
End Namespace
Eine Razor-Seite hinzufügen
Fügen Sie eine leere Razor-Seite in den Ordner "Seiten" ein und nennen Sie sie "persons.cshtml"
Ändern Sie die neu erstellte Datei "Persons.cshtml" anhand des unten aufgeführten Codebeispiels.
Der folgende Code dient zur Anzeige der Informationen im Browser.
@page
@using RazorPageSample.Models;
@model RazorPageSample.Pages.PersonsModel
@{
}
<table class="table">
<tr>
<th>Name</th>
<th>Title</th>
<th>Description</th>
</tr>
@foreach (var person in ViewData ["personList"] as List<Person>)
{
<tr>
<td>@person.Name</td>
<td>@person.Title</td>
<td>@person.Description</td>
</tr>
}
</table>
<form method="post">
<button type="submit">print</button>
</form>
@page
@using RazorPageSample.Models;
@model RazorPageSample.Pages.PersonsModel
@{
}
<table class="table">
<tr>
<th>Name</th>
<th>Title</th>
<th>Description</th>
</tr>
@foreach (var person in ViewData ["personList"] as List<Person>)
{
<tr>
<td>@person.Name</td>
<td>@person.Title</td>
<td>@person.Description</td>
</tr>
}
</table>
<form method="post">
<button type="submit">print</button>
</form>
Der folgende Code instanziiert zunächst die Klasse ChromePdfRenderer. Die Übergabe von this an die Methode "RenderRazorToPdf" reicht aus, um diese Razor-Seite in ein PDF-Dokument zu konvertieren.
Der Benutzer hat vollen Zugriff auf die in RenderingOptions verfügbaren Funktionen. Zu diesen Funktionen gehört die Möglichkeit, Folgendes anzuwendenseitenzahlen in die generierte PDF-Datei einfügen, benutzerdefinierte Ränder festlegen und benutzerdefiniertetext sowie HTML-Kopf- und -Fußzeilen.
- Öffnen Sie das Dropdown-Menü für die Datei "Persons.cshtml", um die Datei "Persons.cshtml.cs" anzuzeigen.
Ändern Sie die Datei "Persons.cshtml.cs" mit dem folgenden Code.
Bitte beachten Sie
Das PDF-Dokument kann mit folgendem Code im Browser angezeigt werden:Datei(pdf.BinaryData, "anwendung/pdf")
. Das Herunterladen der PDF-Datei nach der Anzeige im Browser führt jedoch zu einem beschädigten PDF-Dokument.
using IronPdf.Razor.Pages;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPageSample.Models;
namespace RazorPageSample.Pages
{
public class PersonsModel : PageModel
{
[BindProperty(SupportsGet = true)]
public List<Person> persons { get; set; }
public void OnGet()
{
persons = new List<Person>
{
new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
ViewData ["personList"] = persons;
}
public IActionResult OnPostAsync()
{
persons = new List<Person>
{
new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
ViewData ["personList"] = persons;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render Razor Page to PDF document
PdfDocument pdf = renderer.RenderRazorToPdf(this);
Response.Headers.Add("Content-Disposition", "inline");
return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");
// View output PDF on browser
return File(pdf.BinaryData, "application/pdf");
}
}
}
using IronPdf.Razor.Pages;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPageSample.Models;
namespace RazorPageSample.Pages
{
public class PersonsModel : PageModel
{
[BindProperty(SupportsGet = true)]
public List<Person> persons { get; set; }
public void OnGet()
{
persons = new List<Person>
{
new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
ViewData ["personList"] = persons;
}
public IActionResult OnPostAsync()
{
persons = new List<Person>
{
new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
};
ViewData ["personList"] = persons;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render Razor Page to PDF document
PdfDocument pdf = renderer.RenderRazorToPdf(this);
Response.Headers.Add("Content-Disposition", "inline");
return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");
// View output PDF on browser
return File(pdf.BinaryData, "application/pdf");
}
}
}
Imports IronPdf.Razor.Pages
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Imports RazorPageSample.Models
Namespace RazorPageSample.Pages
Public Class PersonsModel
Inherits PageModel
<BindProperty(SupportsGet := True)>
Public Property persons() As List(Of Person)
Public Sub OnGet()
persons = New List(Of Person) From {
New Person With {
.Name = "Alice",
.Title = "Mrs.",
.Description = "Software Engineer"
},
New Person With {
.Name = "Bob",
.Title = "Mr.",
.Description = "Software Engineer"
},
New Person With {
.Name = "Charlie",
.Title = "Mr.",
.Description = "Software Engineer"
}
}
ViewData ("personList") = persons
End Sub
Public Function OnPostAsync() As IActionResult
persons = New List(Of Person) From {
New Person With {
.Name = "Alice",
.Title = "Mrs.",
.Description = "Software Engineer"
},
New Person With {
.Name = "Bob",
.Title = "Mr.",
.Description = "Software Engineer"
},
New Person With {
.Name = "Charlie",
.Title = "Mr.",
.Description = "Software Engineer"
}
}
ViewData ("personList") = persons
Dim renderer As New ChromePdfRenderer()
' Render Razor Page to PDF document
Dim pdf As PdfDocument = renderer.RenderRazorToPdf(Me)
Response.Headers.Add("Content-Disposition", "inline")
Return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf")
' View output PDF on browser
Return File(pdf.BinaryData, "application/pdf")
End Function
End Class
End Namespace
Die Methode "RenderRazorToPdf" gibt ein PdfDocument-Objekt zurück, das weiter verarbeitet und bearbeitet werden kann. Sie können die PDF-Datei exportieren alsPDFA oderPDFUAanwenden, einedigitale Signatur zum gerenderten PDF-Dokument, oderzusammenführen und Aufteilen PDF-Dokumente. Die Methode ermöglicht auch das Drehen von Seiten, das Hinzufügen vonanmerkungen oderlesezeichenundbenutzerdefinierte Wasserzeichen stempeln auf Ihr PDF.
Einen Abschnitt zur oberen Navigationsleiste hinzufügen
Navigieren Sie zum Ordner Seiten -> Gemeinsamer Ordner -> _Layout.cshtml. Platzieren Sie den Navigationspunkt "Person" nach "Home".
Vergewissern Sie sich, dass der Wert für das Attribut asp-page genau mit unserem Dateinamen übereinstimmt, der in diesem Fall "Personen" lautet.
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-page="/Index">RazorPageSample</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Persons">Person</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-page="/Index">RazorPageSample</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Persons">Person</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
Das Projekt ausführen
Hier erfahren Sie, wie Sie das Projekt ausführen und ein PDF-Dokument erstellen.
ASP.NET Core Web App-Projekt herunterladen
Sie können den vollständigen Code für dieses Handbuch als gezippte Datei herunterladen, die Sie in Visual Studio als ASP.NET Core Web App-Projekt öffnen können.
Laden Sie das RazorPageSample.zip ASP.NET Core Web App Projekt herunter