Serveur d'impression

Créer et imprimer un fichier PDF dans ASP.NET MVC – Serveur d’impression

Le 6 octobre 2019 - 3 minutes de lecture

Des outils tels que Crystal Reports peuvent être utilisés pour imprimer des vues affichant des rapports. Ils peuvent même créer et imprimer ces rapports dans un document facile à imprimer. Pour ce faire, le rapport doit être converti au format PDF en l'exportant au format courant puis convertir ce flux en PDF.

Les développeurs utilisant ASP.NET MVC 5 et travaillant sur des applications métier ont souvent l'obligation de créer des documents PDF dans ASP.NET MVC. PDF peut être généré directement en utilisant Rotativa paquet et envoyé pour impression.

Impression d'un fichier PDF dans ASP.NET MVC à l'aide de Rotativa

Rotativa est un framework qui fournit des API gratuites offrant un moyen extrêmement simple d'imprimer des documents PDF dans des applications ASP.NET MVC. Rotativa est basé sur le wkhtmltopdf outil pour créer un document PDF à partir de HTML qui s'affiche dans le navigateur.

Le cadre Rotativa a été créé par Giorgio Bozio et peut être téléchargé à partir de ce lien http://nuget.org/packages/Rotativa ou à partir de Github à l'adresse https://github.com/webgio/Rotativa.

Rotativa utilise le moteur de kit Web utilisé par le navigateur Chrome pour le rendu HTML. La plupart des balises et des styles HTML sont pris en charge par ce cadre.

Le cadre Rotativa fournit Rotativa espace de noms. Cet espace de noms contient les classes suivantes:

1. ActionAsPdf – accepte un nom de vue en tant que paramètre de chaîne afin qu'il puisse être converti en PDF.

2. PartialViewAsPdf – renvoie une vue partielle au format PDF.

3. UrlAsPdf – permet de renvoyer n'importe quelle URL au format PDF.

4. ViewAsPdf – renvoie le résultat sous forme de PDF au lieu de réponse HTML.

Démo d'impression PDF

Cette application est développée à l'aide de ASP.NET MVC 5 avec Visual Studio 2015 ou de Community Edition.

Les étapes suivantes fournissent des informations supplémentaires sur la mise en œuvre de la démonstration.

Étape 1: Ouvrez Visual Studio 2015, créez une nouvelle application Web ASP.NET et nommez-la MVC_Print_PDF. Sélectionnez Modèle d'application MVC vide pour créer une application vide.

Étape 2: Comme cette application utilise EntityFramework, dans le dossier App_Data du projet, ajoutez une nouvelle base de données Sql Server de nom. ApplicationDB.mdf. Dans cette base de données, ajoutez une nouvelle table du nom EmployeeInfo à l'aide du script suivant.



CREER LA TABLE [dbo].[EmployeeInfo] (
    [EmpNo]       ID IDENTITÉ (1, 1) NON NUL,
    [EmpName]     VARCHAR (50) PAS NULL,
    [Salary]      INT NON NULL,
    [DeptName]    VARCHAR (50) PAS NULL,
    [Designation] VARCHAR (50) PAS NULL,
    [HRA]         AS ([Salary]* (0,2)),
    [TA]          AS ([Salary]* (0,15)),
    [DA]          AS ([Salary]* (0,18)),
    [GrossSalary] AS ((([Salary]+[Salary]* (0.2)) +[Salary]* (0.15)) +[Salary]* (0,18)),
    [TDS]         AS (((([Salary]+[Salary]* (0.2)) +[Salary]* (0.15)) +[Salary]* (0,18)) * (0,25)),
    [NetSalary]   AS (((([Salary]+[Salary]* (0.2)) +[Salary]* (0.15)) +[Salary]* (0.18)) - ((([Salary]+[Salary]* (0.2)) +[Salary]* (0.15)) +[Salary]* (0,18)) * (0,25)),
    CLÉ PRIMAIRE CLUSTERÉE ([EmpNo] ASC)
)

Dans le tableau ci-dessus, les colonnes HRA, TA, DA, GrossSalary, TDS et NetSalary sont générées en fonction de la formule utilisant la colonne Salaire. Dans ce tableau, ajoutez les données de test.

Étape 3: Cliquez avec le bouton droit sur le dossier Modèles et ajoutez un nouveau modèle de données ADO.Net Entity nommé. AppEntities. Dans l'assistant de modèle d'entité, sélectionnez Code First de la base de données comme indiqué dans l'image suivante.

code-first-from-database "src =" https://www.dotnetcurry.com/images/mvc/print-pdf/code-first-from-database.png "width =" 698 "height =" 761 "/ ></p>
<p>Cela va générer <b>Info employé</b> classe d'entité et <b>AppEntities</b> classe dans le dossier Model.</p>
<p><b>Étape 4: </b>Pour utiliser le package Rotativa dans l’application, cliquez avec le bouton droit de la souris sur les références et sélectionnez <b>Gérer les paquets NuGet </b>option. Ceci sélectionnera la fenêtre du gestionnaire de paquets NuGet. Dans cette fenêtre, recherchez Rotativa à partir de la fenêtre de recherche, le package sera affiché comme indiqué dans l'image suivante:</p>
<p><img title= using System.Linq; using System.Web.Mvc; using MVC_Print_PDF.Models; en utilisant Rotativa; espace de noms MVC_Print_PDF.Controllers     Classe publique EmployeeInfoController: Controller              AppEntities ctx;         public EmployeeInfoController ()                      ctx = new Models.AppEntities ();                  public ActionResult Index ()                      var emps = ctx.EmployeeInfoes.ToList ();             retournez la vue (emps);                  public ActionResult PrintAllReport ()                      var report = new ActionAsPdf ("Index");             rapport de retour;                  public ActionResult IndexById (int id)                      var emp = ctx.EmployeeInfoes.Where (e => e.EmpNo == id) .First ();             retourner Voir (emp);                  public ActionResult PrintSalarySlip (int id)                      var report = new ActionAsPdf ("IndexById", new id = id);             rapport de retour;              

La classe de contrôleur ci-dessus effectue les opérations suivantes:

1. La méthode d'action Indice() renvoie l'objet View montrant tous les employés.

2. La méthode d'action PrintAllReports () crée une instance de ActionAdPdf () classe. Le constructeur de cette classe accepte un paramètre View Name en tant que chaîne. Dans ce cas, le Indice la vue est passée à elle. Cette classe imprime la sortie rendue HTML de la vue Index en tant que document PDF.

3. La méthode d'action IndexById () accepte un identifiant paramètre. Cette méthode recherche un employé sur la base de son identifiant et retourne un objet de vue contenant une information sur l'employé.

4. La méthode d'action PrintSalarySlip () accepte un identifiant paramètre. Comme le PrintAllreport () méthode d’action, cette méthode crée également une instance de la classe ActionAsPdf. Le constructeur de cette classe accepte IndexById vue. Cette méthode renvoie la vue IndexById rendue HTML sous forme de document PDF.

mvc-print-rotativa "src =" https://www.dotnetcurry.com/images/mvc/print-pdf/mvc-print-rotativa.png "width =" 1196 "height =" 546 "/></p>
<p><b>Étape 6: </b>Pour ajouter une vue aux méthodes d'action, cliquez avec le bouton droit de la souris sur la <span>Indice()</span> méthode d'action et option de sélection <b>Ajouter une vue. </b>Sélectionnez le modèle de vue Liste et la classe de modèle EmployeeInfo.</p>
<p>Cela ajoutera Index.cshtml dans le sous-dossier EmployeeInfo du dossier Views et affichera toutes les propriétés de la classe EmployeeInfo.</p>
<p>Modifiez cette vue pour afficher EmpName, Salary, DeptName, Designation et NetSalary. Remplace le <b>Créer un nouveau </b>lien d'action comme indiqué dans le code suivant:</p>
<pre class= @ Html.ActionLink ("Print", "PrintAllReport")

Cela fera une demande à la PrintAllReport méthode d'action.

Supprimez le lien d'action Modifier, Détails et Supprimer situé au bas du fichier Index.cshtml et ajoutez le lien d'action suivant:



@ Html.ActionLink ("Imprimer le bulletin de salaire", "PrintSalarySlip", nouveau id = item.EmpNo)

..éxécuter PrintSalarySlip méthode d'action.

Étape 7: Cliquez avec le bouton droit de la souris dans la méthode d'action IndexById et ajoutez une vue vide avec le modèle EmployeeInfo.

Cela ajoutera IndexById.cshtml dans le sous-dossier EmployeeInfo du dossier Views. Cette vue sera utilisée pour afficher le bulletin de salaire. La vue aura le code suivant:



@model MVC_Print_PDF.Models.EmployeeInfo

@ 
    ViewBag.Title = "IndexById";



Détail du salaire de: @ Model.EmpName

Nom du département : @ Model.DeptName
La désignation : @ Model.Designation
Détails du revenu
Un salaire @ Model.Salary
HRA @ Model.HRA
TA @ Model.TA
DA @ Model.DA
Gorss Salaire @ Model.GrossSalary
Déductions
TDS @ Model.TDS
Salaire net @ Model.NetSalary

@ Html.ActionLink ("Retour à la liste", "Index")

Étape 8: Dans le fichier RouteConfig.cs du dossier App_Start, mettez à jour la valeur par défaut de Route, comme indiqué dans le code suivant:



routes.MapRoute (
    nom: "Défaut",
    url: "controller / action / id",
    valeurs par défaut: new controller = "EmployeeInfo", action = "Index", id = UrlParameter.Optional
)

Ce code exécutera EmployeeInfoController lors de l'exécution de l'application.

Exécutez l'application pour afficher la vue Index:

res-index "src =" https://www.dotnetcurry.com/images/mvc/print-pdf/res-index.png "width =" 1903 "height =" 944 "/></p>
<p>Clique sur le <b>Impression </b>lien pour afficher le résultat PDF:</p>
<p><img title=

<! –Livre absolument génial sur C # et .NET->

Livre absolument génial sur C # et .NET

C # et .NET existent depuis très longtemps, mais leur croissance constante signifie qu’il ya toujours plus à apprendre.

À DotNetCurry, nous sommes très heureux d’annoncer la Le livre absolument génial sur C # et .NET. Il s'agit d'un eBook technique concis de 500 pages disponible en PDF, ePub (iPad) et Mobi (Kindle).

Organisé autour de concepts, cet eBook vise à fournir une base concise, mais solide, en C # et .NET, couvrant C # 6.0, C # 7.0 et .NET Core, avec des chapitres sur .NET Standard et la prochaine version de C # 8.0. Utilisez ces concepts pour approfondir vos connaissances actuelles en C # et .NET, pour bien vous familiariser avec les dernières nouveautés en C # et .NET OR afin de percer votre prochaine interview .NET.

Cliquez ici pour explorer la table des matières ou télécharger des exemples de chapitres!

Cet article valait-il la peine d'être lu? Partagez-le également avec d'autres développeurs. Merci!




<! –

  • S'il vous plaît Partagez cet article si vous pensez que cela valait la peine de le lire. Merci!

->

Mahesh Sabnis est un auteur de DotNetCurry et un MVP Microsoft possédant plus de 17 ans d'expérience dans la formation et le développement des technologies de l'information. Il est formateur certifié Microsoft (MCT) depuis 2005 et a dirigé divers programmes de formation en entreprise pour les technologies .NET (toutes les versions). Suivez-le sur Twitter @maheshdotnet

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.