Aktualisiert 17. Dezember 2024
Teilen Sie:

Konvertieren von Ansichten in PDFs in ASP.NET MVC

This article was translated from English: Does it need improvement?
Translated
View the article in English

von Chaknith Bin

Eine Ansicht ist eine Komponente des ASP.NET-Frameworks, die zur Erzeugung von HTML-Markup in Webanwendungen verwendet wird. Es ist Teil des Model-View-Controller (MVC) Musters, das häufig in ASP.NET MVC und ASP.NET Core MVC Anwendungen verwendet wird. Ansichten sind für die Darstellung von Daten für den Benutzer verantwortlich, indem sie HTML-Inhalte dynamisch wiedergeben.



ASP.NET-Webanwendung (.NET Framework) MVC ist ein von Microsoft bereitgestelltes Webanwendungs-Framework. Es folgt einem strukturierten Architekturmodell, bekannt als Model-View-Controller (MVC), um die Entwicklung von Webanwendungen zu organisieren und zu optimieren.

IronPDF-Erweiterungspaket

Das IronPdf.Extensions.Mvc.Framework-Paket ist eine Erweiterung des Hauptpakets IronPdf. Sowohl das IronPdf.Extensions.Mvc.Framework als auch das IronPdf-Paket sind erforderlich, um Ansichten in PDF-Dokumente in einem ASP.NET MVC zu rendern.

PM > Install-Package IronPdf.Extensions.Mvc.Framework
C# NuGet-Bibliothek für PDF

Mit NuGet installieren

Install-Package IronPDF.Extensions.Mvc.Framework

Ansichten in PDFs rendern

Um Ansichten in PDF-Dateien zu konvertieren, benötigen Sie ein ASP.NET-Webanwendungsprojekt (.NET Framework) MVC.

Hinzufügen einer Modellklasse

  • Navigieren Sie zum Ordner "Models"
  • Erstellen Sie eine neue C#-Klassendatei mit dem Namen "Person" Diese Klasse wird als Modell für die Darstellung individueller Daten dienen. Verwenden Sie den folgenden Codeschnipsel:
:path=/static-assets/pdf/content-code-examples/how-to/cshtml-to-pdf-mvc-framework-model.cs
namespace ViewToPdfMVCSample.Models
{
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
    }
}

Bearbeiten Sie den Controller

Navigieren Sie zum Ordner "Controllers" und öffnen Sie die Datei "HomeController". Wir werden die Aktion "Personen" hinzufügen. Bitte beachten Sie den nachstehenden Code als Orientierungshilfe:

In dem bereitgestellten Code wird zuerst die ChromePdfRenderer-Klasse erstellt. Um die RenderView-Methode zu verwenden, müssen Sie ihr einen HttpContext bereitstellen, den Pfad zur Datei "Persons.cshtml" angeben und eine Liste mit den notwendigen Daten übergeben. Beim Rendern der Ansicht haben Benutzer die Möglichkeit, RenderingOptions zu verwenden, um Ränder anzupassen, benutzerdefinierte Text- und HTML-Kopf- und Fußzeilen hinzuzufügen und Seitenzahlen auf das resultierende PDF-Dokument anzuwenden.

Bitte beachten Sie
Das PDF-Dokument kann mit folgendem Code auf den Rechner heruntergeladen werden: File(pdf.BinaryData, "application/pdf", "viewToPdfMVC.pdf").

using IronPdf;
using System.Collections.Generic;
using System.Web.Mvc;
using ViewToPdfMVCSample.Models;

namespace ViewToPdfMVCSample.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        // GET: Person
        public ActionResult Persons()
        {
            var 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" }
            };

            if (HttpContext.Request.HttpMethod == "POST")
            {
                // Provide the path to your View file
                var viewPath = "~/Views/Home/Persons.cshtml";

                ChromePdfRenderer renderer = new ChromePdfRenderer();

                // Render View to PDF document
                PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);

                Response.Headers.Add("Content-Disposition", "inline");

                // View the PDF
                return File(pdf.BinaryData, "application/pdf");
            }
            return View(persons);
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}
using IronPdf;
using System.Collections.Generic;
using System.Web.Mvc;
using ViewToPdfMVCSample.Models;

namespace ViewToPdfMVCSample.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        // GET: Person
        public ActionResult Persons()
        {
            var 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" }
            };

            if (HttpContext.Request.HttpMethod == "POST")
            {
                // Provide the path to your View file
                var viewPath = "~/Views/Home/Persons.cshtml";

                ChromePdfRenderer renderer = new ChromePdfRenderer();

                // Render View to PDF document
                PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);

                Response.Headers.Add("Content-Disposition", "inline");

                // View the PDF
                return File(pdf.BinaryData, "application/pdf");
            }
            return View(persons);
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}

Sobald Sie das PdfDocument-Objekt über die RenderView-Methode erhalten, können Sie verschiedene Verbesserungen und Anpassungen daran vornehmen. Sie können das PDF in PDFA- oder PDFUA-Formate konvertieren, digitale Signaturen zu dem erstellten PDF hinzufügen oder PDF-Dokumente nach Bedarf zusammenführen und teilen. Darüber hinaus ermöglicht die Bibliothek das Drehen von Seiten, das Einfügen von Anmerkungen oder Lesezeichen und das Anwenden unterschiedlicher Wasserzeichen auf Ihre PDF-Dateien.

Eine Ansicht hinzufügen

  • Klicken Sie mit der rechten Maustaste auf die neu hinzugefügte Aktion Person und wählen Sie "Ansicht hinzufügen"

    Rechtsklick auf Aktion „Persons“

  • Wählen Sie "MVC 5 View" für das neue Scaffolded Item.

    Gerüst auswählen

  • Wählen Sie die Vorlage "Liste" und die Modellklasse "Person".

    Ansicht hinzufügen

    Dadurch wird eine .cshtml-Datei mit dem Namen "Personen" erstellt

  • Navigieren Sie zum Ordner "Views" -> Ordner "Home" -> Datei "Persons.cshtml".

    Um eine Schaltfläche hinzuzufügen, die die Aktion "Personen" aufruft, verwenden Sie den folgenden Code:

@using (Html.BeginForm("Persons", "Home", FormMethod.Post))
{
    <input type="submit" value="Print Person" />
}
@using (Html.BeginForm("Persons", "Home", FormMethod.Post))
{
    <input type="submit" value="Print Person" />
}
HTML

Einen Abschnitt zur oberen Navigationsleiste hinzufügen

  • Navigieren Sie im Ordner "Views" zum Ordner "Shared" -> Datei "_Layout.cshtml". Platzieren Sie das Navigationselement "Person" nach "Home"

    Stellen Sie sicher, dass die Werte für die ActionLink-Methode genau mit unserem Dateinamen übereinstimmen, der in diesem Fall "Personen" lautet

<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-dark bg-dark">
    <div class="container">
        @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
        <button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" title="Toggle navigation" aria-controls="navbarSupportedContent"
                aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse d-sm-inline-flex justify-content-between">
            <ul class="navbar-nav flex-grow-1">
                <li>@Html.ActionLink("Home", "Index", "Home", new { area = "" }, new { @class = "nav-link" })</li>
                <li>@Html.ActionLink("Persons", "Persons", "Home", new { area = "" }, new { @class = "nav-link" })</li>
                <li>@Html.ActionLink("About", "About", "Home", new { area = "" }, new { @class = "nav-link" })</li>
                <li>@Html.ActionLink("Contact", "Contact", "Home", new { area = "" }, new { @class = "nav-link" })</li>
            </ul>
        </div>
    </div>
</nav>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-dark bg-dark">
    <div class="container">
        @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
        <button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" title="Toggle navigation" aria-controls="navbarSupportedContent"
                aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse d-sm-inline-flex justify-content-between">
            <ul class="navbar-nav flex-grow-1">
                <li>@Html.ActionLink("Home", "Index", "Home", new { area = "" }, new { @class = "nav-link" })</li>
                <li>@Html.ActionLink("Persons", "Persons", "Home", new { area = "" }, new { @class = "nav-link" })</li>
                <li>@Html.ActionLink("About", "About", "Home", new { area = "" }, new { @class = "nav-link" })</li>
                <li>@Html.ActionLink("Contact", "Contact", "Home", new { area = "" }, new { @class = "nav-link" })</li>
            </ul>
        </div>
    </div>
</nav>
HTML

Das Projekt ausführen

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

ASP.NET MVC-Projekt ausführen

Ausgabe PDF

ASP.NET MVC-Projekt herunterladen

Sie können den vollständigen Code für diesen Leitfaden herunterladen. Er wird als ZIP-Datei geliefert, die Sie in Visual Studio als ASP.NET-Webanwendung (.NET Framework) MVC-Projekt öffnen können.

Laden Sie das MVC-Beispielprojekt für die PDF-Konvertierung herunter

Chaknith related to ASP.NET MVC-Projekt herunterladen

Chaknith Bin

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.