IRONSOFTWAREHOME

在Blazor Server中使用C# PdfDocument 将Razor转换为PDF

Curtis Chau
Curtis Chau
Updated: 2026年9月5日

使用IronPDF的RenderRazorComponentToPdf方法,在Blazor Server中将Razor组件转换为PDF。 用最少的代码将 C# UI 组件转换成 PDF,并对页眉、页脚和页面格式进行完全自定义。

快速入门:几分钟内将Razor组件转换为 PDF

using IronPDF 在 Blazor Server 应用程序中将 Razor 组件转换为 PDF。 RenderRazorComponentToPdf方法将您的Razor组件转化为PDF,仅需几行代码。 按照本指南将 Razor 转换为 PDF 整合到您的项目中,只需最少的设置和灵活的自定义选项。

  1. 1Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. 2复制并运行这段代码。

    // 安装-打包 IronPdf.Extensions.Blazor
    var pdf = new IronPdf.ChromePdfRenderer()
        .RenderRazorComponentToPdf<MyComponent>(new Dictionary<string,object> { {"persons",personsList} })
        .SaveAs("component-to-pdf.pdf");
    C#
  3. 3部署到您的生产环境中进行测试

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

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

IronPdf包。 在 Blazor 服务器应用程序中将 Razor 组件渲染为 PDF 文档需要这两个软件包。该扩展为 Blazor Server 应用程序提供了集成点,使您无需大量重构即可将现有 Razor 组件转换为 PDF。

安装IronPdf库作为依赖项包括在内。 扩展包添加了如RenderRazorComponentToPdf的方法,这些方法理解Blazor的组件模型,并能够正确渲染绑定数据的组件。 为获得最佳性能和最新功能,请使用这两个软件包的最新版本。 请查看 changelog 了解更新和改进。

> 安装-打包 IronPdf.Extensions.Blazor

C# 用于 PDF 的 NuGet 库

通过 NuGet 安装

安装-打包 IronPdf.Extensions.Blazor

如何在 Blazor 服务器中将 Razor 组件渲染为 PDF?

需要一个Blazor Server应用程序项目来将Razor组件转换为PDF。 Blazor Server 应用程序在服务器上运行,并通过 SignalR 连接渲染 UI 更新,因此适用于需要服务器端处理的 PDF 生成。 这种架构可确保在服务器上进行 PDF 渲染,无论客户端使用何种浏览器或设备,都能获得一致的结果。

在开始之前,请确保您已安装 .NET SDK 和 Visual Studio 2019 或更高版本的 ASP.NET 和 Web 开发工作负载。 通过Visual Studio的项目模板或使用.NET CLI与dotnet new blazorserver创建一个新的Blazor Server App。 有关详细的安装说明和特定平台要求,请参阅安装概述。

我应该使用什么模型类结构?

添加一个名为PersonInfo的标准C#类。 该类是存储人员信息的模型。 插入以下代码:

namespace BlazorSample.Data
{
    public class PersonInfo
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
    }
}

该模型代表传递给 Razor 组件并在 PDF 中渲染的数据结构。 IronPDF 适用于任何 C# 对象模型,从简单的 POCO 到复杂的Entity Framework模型。 在设计生成 PDF 的模型时,应考虑数据在最终文档中的显示方式,并相应地构建属性结构。

如何实现生成 PDF 的 Razor 组件?

使用RenderRazorComponentToPdf方法将Razor组件转换为PDF。 通过实例化ChromePdfRenderer类来访问此方法。 该方法返回一个用于导出或进一步修改的PdfDocument对象。

返回的PdfDocument支持额外的修改,包括转换为PDF/A或PDF/UA格式。 您可以合并或拆分文档、旋转页面并添加注释或书签。 根据需要应用自定义水印。

添加一个名为**Person.razor**的Razor组件。 输入以下代码:

@page "/Person"
@using BlazorSample.Data;
@using IronPdf;
@using IronPdf.Extensions.Blazor;

<h3>Person</h3>

@code {
    // A parameter to receive a list of persons from the parent component.
    [Parameter]
    public IEnumerable<PersonInfo> persons { get; set; }

    // Dictionary to hold parameters that will be passed to the PDF renderer.
    public Dictionary<string, object> Parameters { get; set; } = new Dictionary<string, object>();

    protected override async Task OnInitializedAsync()
    {
        // Initialize the persons list with some sample data.
        persons = new List<PersonInfo>
        {
            new PersonInfo { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
            new PersonInfo { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
            new PersonInfo { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
        };
    }

    private async void PrintToPdf()
    {
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Apply text footer to the PDF pages.
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} - {time}",
            DrawDividerLine = true,
            RightText = "Page {page} of {total-pages}",
            Font = IronSoftware.Drawing.FontTypes.Arial,
            FontSize = 11
        };

        Parameters.Add("persons", persons);

        // Render Razor component to PDF and save it.
        PdfDocument pdf = renderer.RenderRazorComponentToPdf<Person>(Parameters);
        File.WriteAllBytes("razorComponentToPdf.pdf", pdf.BinaryData);
    }
}

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    @foreach (var person in persons)
    {
        <tr>
            <td>@person.Name</td>
            <td>@person.Title</td>
            <td>@person.Description</td>
        </tr>
    }
</table>

<button class="btn btn-primary" @onclick="PrintToPdf">Print to Pdf</button>
Text

此方法提供对所有**RenderingOptions**功能的访问。 添加文本和 HTML 页眉和页脚,包括页码,并调整页面尺寸和布局。 RenderingOptions支持自定义边距、用于响应式设计的viewport设置、以及用于动态内容的JavaScript执行延迟。

对于复杂的布局或 CSS 框架(如 Bootstrap),请探索响应式 CSS 呈现功能,以确保 PDF 在不同页面尺寸下都能正确显示。

如何在我的 Razor 组件中添加导航?

  • 导航到"Shared文件夹"并打开NavMenu.razor。 添加打开我们Razor组件的部分Person。 我们的Person组件将是第二个选项。
<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
    <nav class="flex-column">
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="" Match="NavLinkMatch.All">
                <span class="oi oi-home" aria-hidden="true"></span> Home
            </NavLink>
        </div>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="Person">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Person
            </NavLink>
        </div>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="counter">
                <span class="oi oi-plus" aria-hidden="true"></span> Counter
            </NavLink>
        </div>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="fetchdata">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data
            </NavLink>
        </div>
    </nav>
</div>
Text

该导航设置与 Blazor 的路由系统集成,允许用户从应用程序的主导航菜单访问 PDF 生成功能。 NavLink组件确保正确高亮显示活动路由。

PDF 生成过程是怎样的?

运行项目并生成 PDF 文档。 单击 "打印为 PDF "按钮。 IronPDF 处理您的 Razor 组件,将其转换为 HTML,并使用其基于 Chrome 浏览器的渲染引擎将其渲染为 PDF。这保持了与现代网络浏览器相同的视觉保真度。

Visual Studio 调试 Blazor 应用,其中使用 `ChromePdfRenderer` 和 Razor 组件的 PDF 生成代码

生成的 PDF 将保存在项目的输出目录中。 自定义保存位置,实现浏览器直接下载,或将 PDF 存储在 Azure Blob Storage 等云存储中。 对于生产应用,应针对 PDF 生成可能失败或超出预期持续时间的情况实施错误处理和用户反馈。

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

Milan Jovanovic

微软MVP

查看案例研究

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

Brent Matzelle

首席技术官,OPYN

查看案例研究

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

David Jones

首席软件工程师,Agorus Build

查看案例研究

在哪里可以下载完整的工作示例?

以压缩文件的形式下载本指南的完整代码。在 Visual Studio 中将其作为 Blazor Server App 项目打开。 示例包括所有依赖项、配置和示例代码,以便立即开始在 Blazor 应用程序中进行 Razor 到 PDF 的转换。

下载用于Razor到PDF转换的Blazor示例项目

准备好看看您还能做些什么吗? 查看我们的教程页面:转换PDF文档

如需了解更多高级应用场景,请参阅我们的 Blazor 教程,其中涵盖在 Blazor 应用程序中使用 IronPDF 的其他集成模式和最佳实践。

常见问题解答

在 Blazor Server 中将 Razor 组件转换为 PDF 的最快方法是什么?

最快的方法是使用 IronPDF 的 RenderRazorComponentToPdf 方法。只需一行代码,您就可以将任何 Razor 组件转换为 PDF:var pdf = new IronPdf.ChromePdfRenderer().RenderRazorComponentToPdf(new Dictionary { {"persons",personsList} }).SaveAs("component-to-pdf.pdf");

在 Blazor Server 中将 Razor 转换为 PDF 需要哪些 NuGet 软件包?

您需要 IronPdf.Extensions.Blazor 软件包,该软件包会自动将 IronPDF 核心库作为依赖项。使用以下方法安装安装包 IronPdf.Extensions.Blazor

将Razor组件转换为PDF时,我可以添加自定义页眉和页脚吗?

是的,当使用 RenderRazorComponentToPdf 方法转换您的 Razor 组件时,IronPDF 可为页眉、页脚和页面格式提供完整的自定义选项。

为什么推荐使用 Blazor Server 从 Razor 组件生成 PDF?

Blazor Server 应用程序在服务器上运行,通过 SignalR 连接渲染 UI 更新,因此非常适合生成 PDF。这种架构确保了 IronPDF 的渲染发生在服务器端,无论客户端浏览器或设备如何,都能提供一致的结果。

我需要重构现有的Razor组件以将其转换为PDF吗?

这不,IronPdf.Extensions.Blazor软件包使您无需大量重构即可将现有的Razor组件转换为PDF。该扩展提供了能理解Blazor组件模型的集成点。

转换为PDF时,如何向Razor组件传递数据?

您可以在 RenderRazorComponentToPdf 方法中使用 Dictionary 参数传递数据。例如:new Dictionary { {"persons", personsList}} 其中 "persons "是参数名称,personsList 是您的数据。

What advantage does using Blazor Server have for PDF generation?

Blazor Server runs on the server, which means that PDF rendering happens server-side, providing consistent rendering results regardless of the client's browser or device.

How can I ensure proper navigation when integrating a Razor component for PDF generation in a Blazor app?

Integrate the Razor component into the Blazor app's navigation system using `NavLink` components. This allows users to access the PDF generation functionality directly from the main navigation menu.

Can IronPDF add headers and footers to the generated PDFs from Razor components?

Yes, with IronPDF, you can add both text and HTML headers and footers, including page numbers, by utilizing the `RenderingOptions` features.

What is required before starting with Razor to PDF conversion in a Blazor Server project?

Ensure that you have the .NET SDK installed, along with Visual Studio 2019 or later with the ASP.NET and web development workload. You can start a new project using Visual Studio's templates or the .NET CLI.

Curtis Chau
技术作家

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

...
阅读更多

准备开始了吗?

Nuget Downloads 21,105,021版本:2026.9刚刚发布

免费获取

30天试用密钥 即刻获取。

bullet_checked无需信用卡或创建账户
bullet_test在生产环境中测试
且无水印
bullet_calendar30天完全
功能性产品
bullet_support试用期间提供
24/5技术支持
立即获取您的免费30 天试用密钥。
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999 起

Key in blue circle

立即获取免费的 30 天试用版密钥。

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥。
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999 起