如何在ASP .NET Core Web App中将Razor页面转换为PDF

如何在 ASP.NET Core C## 应用程序中将 Razor 页面转换为 PDF.

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

IronPDF支持在ASP.NET Core应用程序中无缝转换Razor页面 (.cshtml文件) 为PDF文档,使用RenderRazorToPdf方法,简化了从Web内容生成PDF,完全支持C#和HTML渲染。

Razor页面是一个带有.cshtml扩展名的文件,将C#和HTML结合,用于生成Web内容。 在 ASP.NET Core 中,Razor Pages 是一种更简单的网络应用程序代码组织方式,非常适合只读或进行简单数据输入的简单页面。

ASP.NET Core Web App是使用ASP.NET Core构建的Web应用程序,这是一个用于开发现代Web应用程序的跨平台框架。

IronPDF简化了在ASP.NET Core Web App项目中从Razor Pages创建PDF文件的过程。 这样就可以在 ASP.NET Core Web Apps 中直接生成 PDF。

快速入门:几秒钟内将Razor Pages 转换为 PDF

在 ASP.NET Core 应用程序中将您的 Razor 页面转换为高质量 PDF。 通过使用CSHTML文件转换为PDF文档,优化工作流程并增强文档分发。 本指南将指导您在几分钟内完成所需的简单步骤。

  1. 使用 NuGet 包管理器安装 https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 复制并运行这段代码。

    // 安装-打包 IronPdf.Extensions.Razor
    var pdf = new IronPdf.ChromePdfRenderer().RenderRazorToPdf("Views/Home/Index.cshtml");
  3. 部署到您的生产环境中进行测试

    通过免费试用立即在您的项目中开始使用IronPDF

    arrow pointer

简介

Razor Pages 为在 ASP.NET Core 应用程序中构建动态网页内容提供了一种强大而直观的方法。 当与 IronPDF 的渲染功能相结合时,开发人员可以直接从他们的网页内容创建专业的 PDF 文档。 这种方法去除了复杂的 PDF 生成逻辑,让您可以使用现有的 HTML 和 CSS 技能。

IronPDF 和 Razor Pages 之间的集成对于生成报告、发票、证书和任何其他需要动态数据展示的文档尤为重要。 通过使用您已经熟悉的 Razor 语法,您可以保持网页视图和 PDF 输出之间的一致性。

将 Razor 转换为 PDF 需要哪些 NuGet 软件包?

IronPdf包的扩展。 要在ASP.NET Core Web App中将Razor页面渲染为PDF文档,需要同时使用IronPdf包。有关详细的安装说明,请访问我们的安装概述指南。

# Command to install IronPdf.Extensions.Razor package using NuGet Package Manager
安装-打包 IronPdf.Extensions.Razor
# Command to install IronPdf.Extensions.Razor package using NuGet Package Manager
安装-打包 IronPdf.Extensions.Razor
SHELL
C# 用于 PDF 的 NuGet 库

通过 NuGet 安装

安装-打包 IronPdf.Extensions.Razor
Icon Quote related to 将 Razor 转换为 PDF 需要哪些 NuGet 软件包?

我最喜欢的这种库是 IronPDF。它允许快速高效地操作 PDF 文件。它还具有许多有价值的功能,比如导出为 PDF/A 格式和数字签名 PDF 文档。

Milan Jovanovic related to 将 Razor 转换为 PDF 需要哪些 NuGet 软件包?

Milan Jovanovic

微软MVP

查看案例研究
Icon Quote related to 将 Razor 转换为 PDF 需要哪些 NuGet 软件包?

IronOCR 意味着我们每年可以节省 $40,000 的人工处理成本,同时提高生产力,并释放资源用于高影响任务。我强烈推荐它。

Brent Matzelle related to 将 Razor 转换为 PDF 需要哪些 NuGet 软件包?

Brent Matzelle

首席技术官,OPYN

查看案例研究
Icon Quote related to 将 Razor 转换为 PDF 需要哪些 NuGet 软件包?

Iron Suite 在我们的运营中起着至关重要的作用。这些工具提高了业务各方面的效率,包括创建平面图和改善库存管理。

David Jones related to 将 Razor 转换为 PDF 需要哪些 NuGet 软件包?

David Jones

首席软件工程师,Agorus Build

查看案例研究

如何在 ASP.NET Core 中将 Razor 页面转换为 PDF?

您需要一个 ASP.NET Core Web App 项目来将 Razor Pages 转换为 PDF 文件。 该过程包括为您的数据建模、设置Razor页面以显示该数据,然后使用IronPDF的RenderRazorToPdf方法生成PDF输出。

为什么我需要一个用于生成 PDF 的模型类?

模型类是 Razor 页面中数据表示的支柱。 它们提供了一种结构化的方式,将数据从控制器逻辑传递到视图,确保了类型安全性和可维护性。 在生成 PDF 时,这些模型变得更加重要,因为它们定义了将出现在最终文档中的数据的确切结构。

  • 在项目中创建一个新文件夹并命名为"Models"。
  • 向文件夹添加一个标准C#类,并将其命名为Person。 此类将作为个别数据的模型。 使用以下代码片段:
:path=/static-assets/pdf/content-code-examples/how-to/cshtml-to-pdf-razor-model.cs
namespace RazorPageSample.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 RazorPageSample.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
$vbLabelText   $csharpLabel

如何为 PDF 转换设置 Razor 页面?

在"Pages"文件夹中添加一个空的Razor页面,并将其命名为persons.cshtml

  • 使用下面提供的代码示例修改新创建的Persons.cshtml文件。

下面的代码会在浏览器中显示信息。 请注意 Razor 语法如何将 C# 代码无缝集成到 HTML 中,使其非常适合生成可转换为 PDF 的动态内容:

@page
@using RazorPageSample.Models;
@model RazorPageSample.Pages.PersonsModel
@{
}

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    @foreach (var person in ViewData["personList"] as List<Person>)
    {
        <tr>
            <td>@person.Name</td>
            <td>@person.Title</td>
            <td>@person.Description</td>
        </tr>
    }
</table>

<form method="post">
    <button type="submit">Print</button>
</form>
@page
@using RazorPageSample.Models;
@model RazorPageSample.Pages.PersonsModel
@{
}

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    @foreach (var person in ViewData["personList"] as List<Person>)
    {
        <tr>
            <td>@person.Name</td>
            <td>@person.Title</td>
            <td>@person.Description</td>
        </tr>
    }
</table>

<form method="post">
    <button type="submit">Print</button>
</form>
HTML

将Razor Pages渲染为PDF

接下来,代码首先实例化ChromePdfRenderer类。 将this传递给RenderRazorToPdf方法即可将此Razor页面转换为PDF文档。

您可以完全访问 RenderingOptions中提供的功能。 这些功能包括在生成的 PDF 中应用 页码、设置 自定义页边距、添加自定义 文本以及 HTML 页眉和页脚。 您还可以为 PDF 配置 metadata 以确保文档的正确标识和可搜索性。

  • 打开Persons.cshtml.cs文件。
  • 使用下面的代码修改Persons.cshtml.cs
using IronPdf.Razor;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPageSample.Models;

namespace RazorPageSample.Pages
{
    public class PersonsModel : PageModel
    {
        [BindProperty(SupportsGet = true)]
        public List<Person> Persons { get; set; }

        // Handle GET request to load initial data
        public void OnGet()
        {
            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" }
            };

            ViewData["personList"] = Persons;
        }

        // Handle POST request to convert Razor page to PDF
        public IActionResult OnPost()
        {
            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" }
            };

            ViewData["personList"] = Persons;

            ChromePdfRenderer renderer = new ChromePdfRenderer();

            // Render Razor Page to PDF document
            PdfDocument pdf = renderer.RenderRazorToPdf(this);

            // Return the generated PDF file with appropriate content headers
            Response.Headers.Add("Content-Disposition", "inline");
            return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");

            // Optionally view the output PDF in browser (uncomment below line if needed)
            // return File(pdf.BinaryData, "application/pdf");
        }
    }
}
using IronPdf.Razor;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPageSample.Models;

namespace RazorPageSample.Pages
{
    public class PersonsModel : PageModel
    {
        [BindProperty(SupportsGet = true)]
        public List<Person> Persons { get; set; }

        // Handle GET request to load initial data
        public void OnGet()
        {
            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" }
            };

            ViewData["personList"] = Persons;
        }

        // Handle POST request to convert Razor page to PDF
        public IActionResult OnPost()
        {
            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" }
            };

            ViewData["personList"] = Persons;

            ChromePdfRenderer renderer = new ChromePdfRenderer();

            // Render Razor Page to PDF document
            PdfDocument pdf = renderer.RenderRazorToPdf(this);

            // Return the generated PDF file with appropriate content headers
            Response.Headers.Add("Content-Disposition", "inline");
            return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");

            // Optionally view the output PDF in browser (uncomment below line if needed)
            // return File(pdf.BinaryData, "application/pdf");
        }
    }
}
Imports IronPdf.Razor
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Imports RazorPageSample.Models

Namespace RazorPageSample.Pages
	Public Class PersonsModel
		Inherits PageModel

		<BindProperty(SupportsGet := True)>
		Public Property Persons() As List(Of Person)

		' Handle GET request to load initial data
		Public Sub OnGet()
			Persons = 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"
				}
			}

			ViewData("personList") = Persons
		End Sub

		' Handle POST request to convert Razor page to PDF
		Public Function OnPost() As IActionResult
			Persons = 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"
				}
			}

			ViewData("personList") = Persons

			Dim renderer As New ChromePdfRenderer()

			' Render Razor Page to PDF document
			Dim pdf As PdfDocument = renderer.RenderRazorToPdf(Me)

			' Return the generated PDF file with appropriate content headers
			Response.Headers.Add("Content-Disposition", "inline")
			Return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf")

			' Optionally view the output PDF in browser (uncomment below line if needed)
			' return File(pdf.BinaryData, "application/pdf");
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

PdfDocument对象,该对象可以接受额外的处理和编辑。 您可以将PDF导出为PDFUA,为生成的PDF文档应用数字签名,或合并和拆分PDF文档。 该方法还允许您旋转页面、添加注释或书签,以及在 PDF 上加盖自定义水印。

为了加强文档管理,您还可以压缩 PDF 文件,在不影响质量的前提下减小文件大小。 这在处理大型报告或带宽问题时尤其有用。 此外,IronPDF 提供的广泛编辑功能已在我们全面的 PDF 编辑教程中进行了记录。

如何为 PDF 生成页面添加导航?

导航对于 ASP.NET Core 应用程序的用户体验至关重要。 通过将 PDF 生成页面集成到主导航中,用户可以轻松访问该功能,而无需手动键入 URL。

  • 导航至Pages文件夹 -> Shared文件夹 -> _Layout.cshtml。 将"Person"导航项放在"Home"之后。

确保Persons。 这可确保在您的 ASP.NET Core 应用程序中正确路由:

<header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-page="/Index">RazorPageSample</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Persons">Person</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
</header>
<header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-page="/Index">RazorPageSample</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Persons">Person</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
</header>
HTML

运行 PDF 生成时会发生什么?

这将向您展示如何运行项目并生成 PDF 文档。 点击 "人员 "导航链接后,您将看到以表格格式显示的数据。 点击 "打印 "按钮会触发 PDF 生成过程,将当前的 Razor 页面视图转换为可下载的 PDF 文档。

Visual Studio 显示 C# PersonsModel 类,其中包含使用 IronPDF 生成 PDF 的 OnGet 和 OnPostAsync 方法

生成的 PDF 将保留 Razor 页面的所有样式和格式,确保网页视图和 PDF 输出的外观保持一致。 这种方法尤其适用于生成报告、发票或任何需要从应用程序数据库或业务逻辑中获取数据的文档。

在哪里可以下载完整的 ASP.NET Core Web 应用程序示例?

您可以下载本指南的完整代码作为压缩文件,并在Visual Studio中打开为ASP.NET Core Web App项目。

下载RazorPageSample.zip ASP.NET Core Web App项目

常见问题解答

如何在 ASP.NET Core 中将 Razor Pages 转换为 PDF?

您可以使用 IronPDF 的 RenderRazorToPdf 方法在 ASP.NET Core 中将 Razor 页面转换为 PDF。只需安装 IronPdf.Extensions.Razor 包,并使用 ChromePdfRenderer 将 .cshtml 文件直接渲染为 PDF 文档即可。

Razor 转换为 PDF 需要哪些 NuGet 软件包?

您需要两个 NuGet 软件包:IronPdf.Extensions.Razor(扩展包)和 IronPDF(主包)。在 ASP.NET Core Web 应用程序中将 Razor 页面渲染为 PDF 文档需要这两个包。

转换为PDF时,我可以在Razor页面中使用动态数据吗?

是的,IronPDF 完全支持 Razor 页面中的动态数据。在转换为PDF时,您可以使用C#代码、模型绑定和所有标准的Razor语法功能,使其成为生成具有动态内容的报告、发票和证书的理想选择。

我可以从 Razor Pages 生成哪些类型的文档?

IronPDF 的 Razor to PDF 转换功能非常适合生成各种文档类型,包括报告、发票、证书、收据以及任何其他需要动态数据展示的文档,同时还能保持您现有的 HTML 和 CSS 风格。

如何在我的项目中快速实现 Razor 到 PDF 的转换?

using IronPDF,您可以在几分钟内实现 Razor 到 PDF 的转换。最简单的工作流程只需5个步骤:安装库、添加模型类、创建Razor页面、编辑.cs文件以使用RenderRazorToPdf方法,然后运行应用程序。

转换是否会保留我的 HTML 和 CSS 样式?

是的,在将 Razor Pages 转换为 PDF 时,IronPDF 会保留您的 HTML 和 CSS 风格。这使您可以使用已经创建的相同样式和布局,保持网页视图和 PDF 输出之间的一致性。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

审核者
Jeff Fritz
Jeffrey T. Fritz
首席项目经理 - .NET 社区团队
Jeff 也是 .NET 和 Visual Studio 团队的首席项目经理。他是 .NET Conf 虚拟会议系列的执行制片人,并主持“Fritz and Friends”直播节目,每周两次与观众一起谈论技术并编写代码。Jeff 撰写研讨会、演示文稿并计划包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP 峰会在内的最大型微软开发者活动的内容。
准备开始了吗?
Nuget 下载 19,936,792 | 版本: 2026.7 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPdf
运行示例看着你的HTML代码变成PDF文件。