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 ein Teil des Model-View-Controllers(MVC) muster, 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 Framework für Webanwendungen. Es folgt einem strukturierten Architekturmuster, das als Model-View-Controller bekannt ist(MVC) zur Organisation und Rationalisierung der Entwicklung von Webanwendungen.

IronPDF-Erweiterungspaket

Das Paket IronPdf.Extensions.Mvc.Framework 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

Installieren mit NuGet

Install-Package IronPDF.Extensions.Mvc.Framework

Ansichten in PDFs rendern

Zum Konvertieren von Ansichten in PDF-Dateien benötigen Sie eine ASP.NET-Webanwendung(.NET-Framework) MVC-Projekt.

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; }
    }
}
Namespace ViewToPdfMVCSample.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
VB   C#

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 mitgelieferten Code wird zunächst die Klasse ChromePdfRenderer erstellt. Um die Methode "RenderView" zu verwenden, müssen Sie ihr einen HttpContext übergeben, den Pfad zur Datei "Persons.cshtml" angeben und eine Liste mit den erforderlichen Daten bereitstellen. Beim Rendern der Ansicht haben die Benutzer die Möglichkeit, RenderingOptions zu verwenden, um die Ränder anzupassen und zusätzlichebenutzerdefinierter Text und HTML-Kopf- und -Fußzeilenund anwendenseitenzahlen in das resultierende PDF-Dokument.

Bitte beachten Sie
Das PDF-Dokument kann mit folgendem Code auf das Gerät heruntergeladen werden: Datei(pdf.BinaryData, "anwendung/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();
        }
    }
}
Imports IronPdf
Imports System.Collections.Generic
Imports System.Web.Mvc
Imports ViewToPdfMVCSample.Models

Namespace ViewToPdfMVCSample.Controllers
	Public Class HomeController
		Inherits Controller

		Public Function Index() As ActionResult
			Return View()
		End Function

		' GET: Person
		Public Function Persons() As ActionResult
'INSTANT VB NOTE: The local variable persons was renamed since Visual Basic will not allow local variables with the same name as their enclosing function or property:
			Dim persons_Conflict = 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"
				}
			}

			If HttpContext.Request.HttpMethod = "POST" Then
				' Provide the path to your View file
				Dim viewPath = "~/Views/Home/Persons.cshtml"

				Dim renderer As New ChromePdfRenderer()

				' Render View to PDF document
				Dim pdf As PdfDocument = renderer.RenderView(Me.HttpContext, viewPath, persons_Conflict)

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

				' View the PDF
				Return File(pdf.BinaryData, "application/pdf")
			End If
			Return View(persons_Conflict)
		End Function

		Public Function About() As ActionResult
			ViewBag.Message = "Your application description page."

			Return View()
		End Function

		Public Function Contact() As ActionResult
			ViewBag.Message = "Your contact page."

			Return View()
		End Function
	End Class
End Namespace
VB   C#

Sobald Sie das PdfDocument-Objekt über die Methode "RenderView" erhalten haben, können Sie verschiedene Verbesserungen und Anpassungen daran vornehmen. Sie können die PDF-Datei konvertieren inPDFA oderPDFUA formate, Zeichendigitale Signatur in die erstellte PDF-Datei einfügen, oderzusammenführen und Aufteilen PDF-Dokumente nach Bedarf. Außerdem ermöglicht die Bibliothek das Drehen von Seiten, das Einfügen vonanmerkungen oderlesezeichenundeindeutige Wasserzeichen anwenden zu Ihren 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 Personen

  • 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 diese Anleitung herunterladen. Er wird als gezippte Datei geliefert, die Sie in Visual Studio als ASP.NET-Webanwendung öffnen können(.NET-Framework) MVC-Projekt.

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.