如何在 Blazor Server 中使用 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 伺服器是一個可以使用 C# 而非 JavaScript 建立互動式 Web UI 的 Web 框架。 在這個框架中,元件的邏輯在伺服器上執行。

IronPDF 使您可以在 Blazor Server 專案或應用程序中從 Razor 元件生成 PDF 文件。 這使得在 Blazor Server 中創建 PDF 文件/頁面變得簡單。

快速入門:在幾分鐘內將 Razor 元件轉換為 PDF

輕鬆使用 IronPDF 將 Razor 元件轉換為您 Blazor Server 應用程序中的 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包的擴展。 在 Blazor Server App 中渲染 Razor 元件為 PDF 文件需要同時包含 IronPdf.Extensions.Blazor 和 IronPdf 包。

Install-Package IronPdf.Extensions.Blazor

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

NuGet 安裝

class="copy-nuget-row">
Install-Package IronPdf.Extensions.Blazor
class="copy-button">
class="nuget-link">nuget.org/packages/IronPdf.Extensions.Blazor/

將 Razor 元件渲染為 PDF

需要一個 Blazor 伺服器應用專案來將 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 頁眉和頁腳的能力。 此外,您可以添加 頁碼 並調整頁面尺寸和佈局以滿足您的需求。

在左側菜單添加區段

  • 瀏覽到”共享文件夾”,打開 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 伺服器專案

下載 Blazor Server App 專案

您可以下載本指南的完整代碼。它作為一個壓縮文件提供,您可以在 Visual Studio 中作為 Blazor Server App 專案打開。

下載 Razor 轉換為 PDF 的 Blazor 範例專案

準備看看您還能做哪些其他事情嗎? 在這裡查看我們的教程頁面:轉換PDF

常見問題解答

如何在 Blazor Server 專案中將 Razor 元件轉換為 PDF?

您可以使用 IronPDF 的 `RenderRazorComponentToPdf` 方法將 Blazor Server 專案中的 Razor 元件轉換為 PDF 文件。

從 Razor 元件產生 PDF 的關鍵步驟是什麼?

關鍵步驟包括從 NuGet 下載 IronPDF 庫,新增資料模型類,建立 Razor 元件,以及使用 `RenderRazorComponentToPdf` 方法進行轉換。

為什麼需要 IronPdf.Extensions.Blazor 套件?

在 Blazor Server 應用程式中,要將 Razor 元件渲染到 PDF 文檔,需要 IronPdf.Extensions.Blazor 套件。

如何在 Blazor Server 專案中安裝 IronPdf.Extensions.Blazor?

您可以使用 NuGet 透過下列指令安裝Install-Package IronPdf.Extensions.Blazor IronPdf.Extensions.Blazor 。

`RenderRazorComponentToPdf` 方法提供哪些功能?

`RenderRazorComponentToPdf` 方法將 Razor 元件轉換為 PDF 文件,從而可以進行進一步的修改,例如添加註釋或書籤。

Blazor Server 中有哪些選項可用於自訂 PDF 文件?

自訂選項包括插入文字、新增 HTML 頁首和頁尾、頁碼以及使用 IronPDF 中的 RenderingOptions 調整頁面尺寸。

如何將 Razor 元件整合到 Blazor 伺服器應用程式的左側選單中?

若要將 Razor 元件新增至左側選單,請導覽至 Shared 資料夾,開啟 NavMenu.razor,然後新增一個包含指向您的元件的 NavLink 的部分。

在哪裡可以找到將 Razor 元件轉換為 PDF 的範例項目?

可以從 IronPDF 網站下載完整的範例專案程式碼壓縮文件,並在 Visual Studio 中以 Blazor 伺服器應用程式專案開啟。

模型類別在 Razor 元件 PDF 轉換中扮演什麼角色?

模型類別(例如 `PersonInfo`)保存要在 Razor 元件中顯示的數據,對於 PDF 中的動態內容產生至關重要。

在 Blazor Server 中使用 Razor 元件有哪些好處?

Razor 元件允許使用 C# 和 Razor 語法建立可重複使用的 UI 元素,從而實現具有伺服器端邏輯的互動式 Web UI。

.NET 10 相容性:我可以在 .NET 10 導向的 Blazor Server 應用程式中使用 IronPDF 和 Razor 到 PDF 的方法嗎?

是的。 IronPDF 完全相容於 .NET 10;它在 .NET 10 專案中“完美運行”,與在 .NET 6、7 或 8 中一樣。 Razor 到 PDF 的轉換方法,包括 `RenderRazorComponentToPdf`,在面向 .NET 10 時無需特殊變通方法即可使用。

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'name'

Filename: sections/author_component.php

Line Number: 18

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 18
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'title'

Filename: sections/author_component.php

Line Number: 38

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 38
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: Illegal string offset 'comment'

Filename: sections/author_component.php

Line Number: 48

Backtrace:

File: /var/www/ironpdf.com/application/views/main/sections/author_component.php
Line: 48
Function: _error_handler

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 63
Function: view

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 64
Function: main_view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

準備好開始了嗎?
Nuget 下載 16,154,058 | 版本: 2025.11 剛剛發布