如何在 ASP.NET MVC 中将视图转换为 PDF
视图是ASP.NET框架中的一个组件,用于在Web应用程序中生成HTML标记。 它是模型-视图-控制器(MVC)模式的一部分,常用于ASP.NET MVC和ASP.NET Core MVC应用程序中。 视图负责通过动态渲染HTML内容向用户展示数据。
ASP.NET Web 应用程序 (.NET Framework) MVC 是由 Microsoft 提供的一个 Web 应用程序框架。 它遵循一种被称为模型-视图-控制器(MVC)的结构化架构模式,用于组织和简化Web应用程序的开发。
- 模型:管理数据、业务逻辑和数据完整性。
- 视图:展示用户界面并渲染信息。
-
控制器:处理用户输入,处理请求,并协调模型和视图之间的交互。
IronPDF 简化了在 ASP.NET MVC 项目中从视图创建 PDF 文件的过程。 这使得在ASP.NET MVC中的PDF生成变得简单直接。
如何在 ASP.NET MVC 中将视图转换为 PDF
IronPDF 扩展包
IronPdf.Extensions.Mvc.Framework package 是主要 IronPdf 软件包的扩展。 在ASP.NET MVC中,需要IronPdf.Extensions.Mvc.Framework和IronPdf包来将视图渲染为PDF文档。
PM > Install-Package IronPdf.Extensions.Mvc.Framework
使用 NuGet 安装
安装包 IronPdf.Extensions.Mvc.Framework
将视图渲染为PDF文件
要将视图转换为PDF文件,您需要一个ASP.NET Web应用程序(.NET Framework)MVC项目。
添加一个模型类
- 导航到“Models”文件夹
- 创建一个名为“Person”的新C#类文件。这个类将作为表示个人数据的模型。 使用以下代码片段:
: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; }
}
}
编辑控制器
导航到“Controllers”文件夹并打开“HomeController”文件。我们将添加“Persons”操作。 请参考下面的代码以获取指导:
在所提供的代码中,首先创建ChromePdfRenderer类。 要使用RenderView
方法,您需要提供一个HttpContext,指定"Persons.cshtml"文件的路径,并提供一个包含必要数据的列表。 在渲染视图时,用户可以使用渲染选项自定义边距,添加自定义文本和HTML页眉和页脚,以及将页码应用于生成的PDF文档。
请注意
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();
}
}
}
一旦通过RenderView
方法获取PdfDocument对象,您就可以对其进行各种改进和调整。 您可以将 PDF 转换为PDFA或PDFUA格式,给创建的 PDF 添加数字签名,或者根据需要合并和拆分 PDF 文档。 此外,该库允许您旋转页面、插入批注或书签,以及应用不同的水印到您的PDF文件中。
添加视图
-
右键单击新添加的Person操作,然后选择“添加视图”。
-
选择“MVC 5 View”作为新的脚手架项。
-
选择“列表”模板和“人员”模型类。
这将创建一个名为“Persons”的.cshtml文件。
-
导航到“Views”文件夹 -> “Home”文件夹 -> “Persons.cshtml”文件。
要添加调用“Persons”操作的按钮,请使用以下代码:
@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" />
}
将一个部分添加到顶部导航栏
-
在“Views”文件夹中,导航到“Shared”文件夹 -> “_Layout.cshtml”文件。将“Person”导航项放置在“Home”之后。
确保 ActionLink 方法的值与我们的文件名完全匹配,在这种情况下文件名为“Persons”。
<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>
运行项目
这将向您展示如何运行项目并生成PDF文档。

输出 PDF
下载 ASP.NET MVC 项目
您可以下载本指南的完整代码。它是一个压缩文件,您可以在 Visual Studio 中以 ASP.NET Web 应用程序 (.NET Framework) MVC 项目打开。