如何在Blazor服务器中使用C#将Razor转换为PDF

How to Convert Razor to PDF in Blazor Server

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

Razor组件是一个用户界面元素,如页面、对话框或数据输入表单,使用C#和Razor语法构建。 它用作可重用的UI组件。

Blazor Server是一个Web框架,允许您使用C#而不是JavaScript来构建交互式Web UI。 在该框架中,组件的逻辑运行在服务器上。

IronPDF 使您能够在Blazor Server项目或应用中从Razor组件生成PDF文档。 这使得在Blazor Server中创建PDF文件/页面变得简单。

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

在您的Blazor Server应用程序中使用IronPDF轻松将Razor组件转换为PDF。 只需几行代码,IronPDF的RenderRazorComponentToPdf方法让您可以将Razor组件转换为专业质量的PDF。 按照这个快速指南,无缝地将Razor转PDF的转换集成到您的项目中,实现在最小设置下高效渲染。对于寻求快速实现的开发人员,该方法提供了灵活性,具有进一步自定义的选项,确保一个简单而强大的PDF生成过程。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. Copy and run this code snippet.

    // Install-Package IronPdf.Extensions.Blazor
    var pdf = new IronPdf.ChromePdfRenderer()
        .RenderRazorComponentToPdf<MyComponent>(new Dictionary<string,object> { {"persons",personsList} })
        .SaveAs("component‑to‑pdf.pdf");
  3. Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer
class='hsg-featured-snippet'>

最小工作流程(5 步骤)

  1. 下载用于在Blazor Server中将Razor转换为PDF的C#库
  2. 添加数据模型类
  3. 创建一个新的Razor组件并使用RenderRazorComponentToPdf方法
  4. 在左侧菜单中添加一个部分以访问新的Razor组件
  5. 下载示例项目以快速入门

IronPDF 扩展包

IronPdf.Extensions.Blazor包是主IronPdf包的扩展。 IronPdf.Extensions.Blazor 和 IronPdf 包都需要在Blazor Server应用程序中将Razor组件渲染为PDF文档。

Install-Package IronPdf.Extensions.Blazor

<link rel='stylesheet' type='text/css' href='/zh/front/css/contentinstall-componentsextended.css' media='print' onload='this.media='all'; this.onload=null;'>

class='products-download-section'>
data-modal-id='trial-license-after-download'>
class='product-image'> C# NuGet Library for PDF
class='product-info'>

使用NuGet安装

data-original-title='点击复制'>
class='copy-nuget-row'>
Install-Package IronPdf.Extensions.Blazor
class='copy-button'>
class='nuget-link'>nuget.org/packages/IronPdf.Extensions.Blazor/

将Razor组件渲染为PDF

需要一个Blazor Server应用程序项目来将Razor组件转换为PDF。

添加模型类

添加一个标准的C#类,并命名为PersonInfo。 此类将作为存储人员信息的模型。 插入以下代码:

:path=/static-assets/pdf/content-code-examples/how-to/razor-to-pdf-blazor-server-model.cs
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; }
    }
}
Namespace BlazorSample.Data
	Public Class PersonInfo
		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

添加Razor组件

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

The returned PdfDocument can undergo additional modifications, such as conversion to PDF/A or PDF/UA formats. You can also merge or split the PDF document, rotate its pages, and add annotations or bookmarks. 自定义水印也可以盖在您的PDF上。

添加一个Razor组件并命名为Person.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>

此外,使用这种方法生成PDF可让您完全访问RenderingOptions中的所有功能。 这包括能够插入文本,以及HTML页眉和页脚。 另外,您可以添加页码,并调整页面的尺寸和布局以符合您的喜好。

在左侧菜单中添加一个部分

  • 导航到“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>

运行项目

这将向您展示如何运行项目并生成 PDF 文档。

运行Blazor Server项目

下载Blazor Server应用程序项目

您可以下载本指南的完整代码。它作为一个压缩文件提供,您可以在Visual Studio中将其打开为一个Blazor Server App项目。

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

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

常见问题解答

如何在 Blazor Server 项目中将 Razor 组件转换为 PDF?

您可以使用 IronPDF 的 `RenderRazorComponentToPdf` 方法在 Blazor Server 项目中将 Razor 组件转换为 PDF 文档。

设置 PDF 生成的关键步骤有哪些?

关键步骤包括从 NuGet 下载 IronPDF 库、添加数据的模型类、创建 Razor 组件,以及使用 `RenderRazorComponentToPdf` 方法进行转换。

为什么需要 IronPdf.Extensions.Blazor 包?

IronPdf.Extensions.Blazor 包对于在 Blazor Server 应用程序中将 Razor 组件渲染为 PDF 文档是必要的。

如何在 Blazor Server 项目中安装 IronPdf.Extensions.Blazor?

您可以使用 NuGet 安装 IronPdf.Extensions.Blazor 包,命令如下:Install-Package IronPdf.Extensions.Blazor

`RenderRazorComponentToPdf` 方法提供了什么功能?

`RenderRazorComponentToPdf` 方法将 Razor 组件转换为 PDF 文档,允许进一步的修改,如添加注释或书签。

在 Blazor Server 中如何自定义 PDF 文档?

自定义选项包括插入文本、添加 HTML 页眉和页脚、页码,以及使用 IronPDF 中的 RenderingOptions 调整页面尺寸。

如何将 Razor 组件集成到 Blazor Server 应用的左侧菜单中?

要将 Razor 组件添加到左侧菜单,请导航到 Shared 文件夹,打开 NavMenu.razor,并添加带有 NavLink 到您的组件的部分。

在哪里可以找到将 Razor 组件转换为 PDF 的示例项目?

一个完整的示例项目代码可以从 IronPDF 网站下载为压缩文件,并可以作为 Blazor Server App 项目在 Visual Studio 中打开。

模型类在 Razor 组件 PDF 转换中的作用是什么?

模型类,例如 `PersonInfo`,存储要在 Razor 组件中显示的数据,对于 PDF 中动态内容生成至关重要。

在 Blazor Server 中使用 Razor 组件的好处是什么?

Razor 组件允许使用 C# 和 Razor 语法构建可重用的 UI 元素,使带有服务器端逻辑的互动式网络 UI 成为可能。

.NET 10 兼容性:我可以在面向 .NET 10 的 Blazor Server 应用程序中使用 IronPDF 和 Razor 到 PDF 的方法吗?

是的。IronPDF 完全兼容 .NET 10;它在 .NET 10 项目中“完美运行”,与在 .NET 6、7 或 8 中一样。Razor 到 PDF 的转换方法,包括 `RenderRazorComponentToPdf`,在面向 .NET 10 时无需特殊变通方法即可使用。

Chaknith Bin
软件工程师
Chaknith 在 IronXL 和 IronBarcode 工作。他在 C# 和 .NET 方面有着深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的见解有助于更好的产品、文档和整体体验。
准备开始了吗?
Nuget 下载 16,154,058 | 版本: 2025.11 刚刚发布