Konvertieren von Razor-Seiten in PDFs in ASP.NET Core Web App

Chaknith related to Konvertieren von Razor-Seiten in PDFs in ASP.NET Core Web App
Chaknith Bin
12. September 2023
Aktualisiert 10. Dezember 2024
Teilen Sie:
This article was translated from English: Does it need improvement?
Translated
View the article in English

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.



IronPDF-Erweiterungspaket

Das IronPdf.Extensions.Razor-Paket 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
C# NuGet-Bibliothek für PDF

Mit NuGet installieren

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; }
    }
}

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>
HTML

Als nächstes instanziiert der folgende Code zuerst die ChromePdfRenderer-Klasse. Das Übergeben von diesem an die RenderRazorToPdf-Methode ist ausreichend, um diese Razor-Seite in ein PDF-Dokument zu konvertieren.

Der Benutzer hat vollen Zugriff auf die in RenderingOptions verfügbaren Funktionen. Diese Funktionen umfassen die Möglichkeit, Seitenzahlen auf das generierte PDF anzuwenden, benutzerdefinierte Ränder festzulegen und benutzerdefinierten Text sowie HTML-Header und -Footer hinzuzufügen.

  • Ö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.

    [{i:(Das PDF-Dokument kann im Browser mit dem folgenden Code angezeigt werden: File(pdf.BinaryData, "application/pdf").] Allerdings führt das Herunterladen der PDF-Datei nach der Anzeige im Browser 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");
        }
    }
}

Die RenderRazorToPdf-Methode gibt ein PdfDocument-Objekt zurück, das zusätzliche Verarbeitung und Bearbeitung erfahren kann. Sie können das PDF als PDFA oder PDFUA exportieren, eine digitale Signatur auf das gerenderte PDF-Dokument anwenden oder PDF-Dokumente zusammenführen und teilen. Die Methode erlaubt es Ihnen auch, Seiten zu drehen, Anmerkungen oder Lesezeichen hinzuzufügen und benutzerdefinierte Wasserzeichen auf Ihr PDF zu stempeln.

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>
HTML

Das Projekt ausführen

Hier erfahren Sie, wie Sie das Projekt ausführen und ein PDF-Dokument erstellen.

ASP.NET Core Web App Projekt ausführen --> ## 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](/static-assets/pdf/how-to/cshtml-to-pdf-razor/RazorPageSample.zip)
Chaknith related to Das Projekt ausführen
Software-Ingenieur
Chaknith ist der Sherlock Holmes der Entwickler. Zum ersten Mal kam ihm der Gedanke, dass er eine Zukunft in der Softwareentwicklung haben könnte, als er zum Spaß an Code Challenges teilnahm. Sein Schwerpunkt liegt auf IronXL und IronBarcode, aber er ist stolz darauf, Kunden mit jedem Produkt zu helfen. Chaknith nutzt sein Wissen aus direkten Gesprächen mit Kunden, um die Produkte selbst weiter zu verbessern. Sein anekdotisches Feedback geht über Jira-Tickets hinaus und unterstützt die Produktentwicklung, die Dokumentation und das Marketing, um das Gesamterlebnis der Kunden zu verbessern.Wenn er nicht im Büro ist, lernt er über maschinelles Lernen, programmiert und wandert.