如何使用 C# 在 Blazor Server 中將 Razor 轉換為 PDF

使用 C# 在Blazor Server 中將Razor轉換為 PDF

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

使用 IronPDF 的 RenderRazorComponentToPdf 方法將Blazor Server 中的Razor元件轉換為 PDF。 用最少的程式碼將 C# UI 元件轉換為 PDF,並可完全自訂頁首、頁尾和頁面格式。

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

使用IronPDF將Blazor Server 應用程式中的Razor元件轉換為 PDF。 RenderRazorComponentToPdf 方法只需幾行程式碼即可將Razor元件轉換為 PDF。 按照本指南,即可將Razor轉 PDF 轉換功能整合到您的專案中,設定最少,自訂選項靈活。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 複製並運行這段程式碼。

    // Install-PackageIronPDFBlazor
    var pdf = new IronPdf.ChromePdfRenderer()
        .RenderRazorComponentToPdf<MyComponent>(new Dictionary<string,object> { {"persons",personsList} })
        .SaveAs("component-to-pdf.pdf");
  3. 部署到您的生產環境進行測試

    今天就在您的專案中開始使用免費試用IronPDF

    arrow pointer

我需要哪些NuGet套件才能將Razor轉換為 PDF 檔案?

IronPDFBlazor擴充了主IronPDF套件。 在Blazor Server 應用程式中,要將Razor元件渲染成 PDF 文檔,需要這兩個軟體包。此擴充功能為Blazor Server 應用程式提供整合點,讓您無需進行大量重構即可將現有的Razor元件轉換為 PDF。

安裝IronPdf.Extensions。 BlazorBlazor自動將核心IronPDF庫作為依賴項包含在內。 此擴充包新增了諸如 RenderRazorComponentToPdf 之類的方法,這些方法可以理解 Blazor 的元件模型並正確渲染具有綁定資料的元件。 為了獲得最佳性能和最新功能,請使用這兩個軟體包的最新版本。 請查看更新日誌以取得更新和改進資訊。

Install-PackageIronPDFBlazor
用於 PDF 的 C# NuGet庫

使用NuGet安裝

Install-PackageIronPDFBlazor

如何在Blazor Server 中將Razor元件渲染為 PDF?

要將Razor元件轉換為 PDF,需要一個Blazor伺服器應用程式專案。 Blazor Server 應用程式在伺服器上執行,並透過 SignalR 連線呈現 UI 更新,因此適用於需要伺服器端處理的 PDF 產生。 這種架構確保 PDF 渲染在伺服器端進行,無論客戶端瀏覽器或裝置如何,都能提供一致的結果。

在開始之前,請確保已安裝.NET SDK 和 Visual Studio 2019 或更高版本,並安裝了ASP.NET和 Web 開發工作負載。 透過 Visual Studio 的專案範本或使用.NET CLI 建立一個新的Blazor伺服器應用程序,dotnet new blazorserver。 有關詳細的安裝說明和平台特定要求,請參閱安裝概述

我應該使用哪種模型類別結構?

新增一個名為PersonInfo 的標準 C# 類別。 該類別作為儲存個人資訊的模型。 插入以下程式碼:

: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; }
    }
}
$vbLabelText   $csharpLabel

此模型表示傳遞給Razor元件並在 PDF 中呈現的資料結構。 IronPDF可以與任何 C# 物件模型一起使用,從簡單的 POCO 到複雜的Entity Framework模型。 在設計用於產生 PDF 的模型時,請考慮資料在最終文件中的顯示方式,並相應地建立屬性。

如何實作用於產生 PDF 的Razor元件?

使用 RenderRazorComponentToPdf 方法將Razor元件轉換為 PDF。 透過實例化ChromePdfRenderer類別來存取此方法。 此方法傳回一個PdfDocument對象,用於匯出或進一步修改。

傳回的 PdfDocument 支援其他修改,包括轉換為PDF/APDF/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>

此方法提供對所有RenderingOptions功能的存取。 新增文字和 HTML 頁首和頁腳,包含頁碼,並調整頁面尺寸和佈局。 RenderingOptions 支援自訂邊距、響應式設計的視窗設定以及動態內容的JavaScript執行延遲。

對於複雜的佈局或 CSS 框架(如 Bootstrap),請探索響應式 CSS 渲染功能,以確保 PDF 在不同的頁面尺寸上正確顯示。

如何為我的Razor元件添加導航?

  • 導航至"共用資料夾"並開啟 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>

此導航設定與 Blazor 的路由系統集成,允許使用者從應用程式的主導航選單存取 PDF 生成功能。 NavLink 元件確保正確反白顯示活動路由。

PDF生成過程是怎麼樣的?

運行專案並產生 PDF 文件。 點擊"列印為PDF"按鈕。 IronPDF會處理您的Razor元件,將其轉換為 HTML,然後使用其基於 Chrome 的渲染引擎將其渲染為 PDF。這樣可以保持與現代 Web 瀏覽器相同的視覺效果。

Visual Studio debugging Blazor app with PDF generation code using ChromePdfRenderer and Razor components

產生的 PDF 檔案將保存在專案的輸出目錄中。 自訂儲存位置,實作直接瀏覽器下載,或將 PDF 儲存在 Azure Blob Storage 等雲端儲存中。 對於生產應用,應實現錯誤處理和使用者回饋機制,以應對 PDF 產生可能失敗或超出預期時間的情​​況。

哪裡可以下載完整的運行範例?

請下載本指南的完整程式碼(壓縮檔案)。在 Visual Studio 中將其作為Blazor伺服器應用程式專案開啟。 此範例包含所有依賴項、設定和範例程式碼,可立即開始在Blazor應用程式中進行Razor到 PDF 的轉換。

下載Blazor範例項目,用於Razor到 PDF 的轉換

準備好要看看你還能做什麼了嗎? 請造訪我們的教學頁面:轉換 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 是您的資料。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 17,803,474 | 版本: 2026.3 剛剛發布
Still Scrolling Icon

還在滾動嗎?

想快速取得證據? PM > Install-Package IronPdf
運行範例看著你的HTML程式碼變成PDF檔。