Comment convertir les vues en PDF dans ASP.NET MVC

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

par Chaknith Bin

Une vue est un composant du Framework .NET utilisé pour générer des balises HTML dans les applications web. Il fait partie du modèle-vue-contrôleur(MVC) couramment utilisé dans les applications ASP.NET MVC et ASP.NET Core MVC. Les vues sont chargées de présenter les données à l'utilisateur en restituant le contenu HTML de manière dynamique.



Application Web ASP.NET(framework .NET) MVC est un cadre d'application web fourni par Microsoft. Il suit un modèle architectural structuré connu sous le nom de Modèle-Vue-Contrôleur(MVC) pour organiser et rationaliser le développement d'applications web.

Paquet d'extension IronPDF

Le paquet IronPdf.Extensions.Mvc.Framework est une extension du paquet principal IronPdf. Les packages IronPdf.Extensions.Mvc.Framework et IronPDF sont tous deux nécessaires pour rendre les vues des documents PDF dans un environnement ASP.NET MVC.

PM > Install-Package IronPdf.Extensions.Mvc.Framework
Bibliothèque NuGet C# pour PDF

Installer avec NuGet

Installer-Package IronPDF.Extensions.Mvc.Framework

Rendre les vues en PDF

Pour convertir les vues en fichiers PDF, vous aurez besoin d'une application Web ASP.NET(framework .NET) Projet MVC.

Ajouter une classe de modèle

  • Naviguer vers le dossier "Models
  • Créez un nouveau fichier de classe C# nommé "Personne" Cette classe servira de modèle pour représenter les données individuelles. Utilisez l'extrait de code suivant :
: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#

Modifier le contrôleur

Naviguez jusqu'au dossier "Controllers" et ouvrez le fichier "HomeController". Nous allons ajouter l'action "Personnes". Veuillez vous référer au code ci-dessous pour obtenir des conseils :

Dans le code fourni, la classe ChromePdfRenderer est d'abord créée. Pour utiliser la méthode RenderView, vous devez lui fournir un HttpContext, spécifier le chemin d'accès au fichier "Persons.cshtml" et fournir une liste contenant les données nécessaires. Lors du rendu de la vue, les utilisateurs ont la possibilité d'utiliser les Options de rendu pour personnaliser les marges, ajouter destexte personnalisé et en-têtes et pieds de page HTMLet appliquernuméros de page au document PDF résultant.

A noter
Le document PDF peut être téléchargé sur la machine à l'aide du code suivant : 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();
        }
    }
}
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#

Une fois que vous avez obtenu l'objet PdfDocument par la méthode RenderView, vous pouvez lui apporter diverses améliorations et ajustements. Vous pouvez convertir le PDF enPDFA ouPDFUA formats, signesignature numérique au PDF créé, oufusionner et scinder Documents PDF selon les besoins. De plus, la bibliothèque vous permet de faire pivoter les pages, d'insérer desannotations ousignetsetappliquer des filigranes distincts à vos fichiers PDF.

Ajouter une vue

  • Cliquez avec le bouton droit de la souris sur l'action Personne nouvellement ajoutée et sélectionnez "Ajouter une vue"

    Cliquer avec le bouton droit de la souris sur l'action Personnes

  • Choisissez "MVC 5 View" pour le nouvel élément échafaudé.

    Sélectionner l'échafaudage

  • Sélectionnez le modèle "Liste" et la classe de modèle "Personne".

    Ajouter une vue

    Cela créera un fichier .cshtml nommé "Personnes"

  • Naviguez jusqu'au dossier "Views" -> dossier "Home" -> fichier "Persons.cshtml".

    Pour ajouter un bouton qui invoque l'action "Personnes", utilisez le code ci-dessous :

@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

Ajouter une section à la barre de navigation supérieure

  • Dans le dossier "Views", naviguez jusqu'au dossier "Shared" -> fichier "_Layout.cshtml". Placez l'élément de navigation "Personne" après "Accueil"

    Assurez-vous que les valeurs de la méthode ActionLink correspondent exactement au nom de notre fichier, qui dans ce cas est "Personnes"

<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

Exécuter le projet

Elle vous montrera comment exécuter le projet et générer un document PDF.

Exécuter un projet ASP.NET MVC

Sortie PDF

Télécharger le projet ASP.NET MVC

Vous pouvez télécharger le code complet de ce guide. Il se présente sous la forme d'un fichier zippé que vous pouvez ouvrir dans Visual Studio en tant qu'application Web ASP.NET(framework .NET) Projet MVC.

Télécharger l'exemple de projet MVC pour la conversion PDF

Chaknith related to Télécharger le projet ASP.NET MVC

Chaknith Bin

Ingénieur logiciel

Chaknith est le Sherlock Holmes des développeurs. C'est en s'amusant à relever des défis de code qu'il s'est rendu compte pour la première fois qu'il pourrait avoir un avenir dans le domaine de l'ingénierie logicielle. Il se concentre sur IronXL et IronBarcode, mais il est fier d'aider les clients avec chaque produit. Chaknith tire parti des connaissances qu'il a acquises en discutant directement avec les clients pour améliorer les produits eux-mêmes. Ses commentaires anecdotiques vont au-delà des tickets Jira et soutiennent le développement de produits, la documentation et le marketing, afin d'améliorer l'expérience globale des clients.Quand il n'est pas au bureau, on peut le trouver en train d'apprendre sur l'apprentissage automatique, le codage et la randonnée.