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

在Blazor伺服器以C# PdfDocument 將Razor轉換為PDF

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

在Blazor伺服器中使用IronPDF的RenderRazorComponentToPdf 方法將Razor元件轉換為PDF。 使用最少的程式碼將C# UI元件轉換為PDF,並充分自訂標題、頁尾和頁面格式。

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

使用IronPDF在Blazor伺服器應用程式中將Razor元件轉換為PDF。 RenderRazorComponentToPdf 方法只需幾行程式碼即可將您的Razor元件轉換為PDF。 遵循本指南,將Razor轉換為PDF的功能整合到您的專案中,並具有最小的設置和靈活的自訂選項。

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

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

    // Install-Package IronPdf.Extensions.Blazor
    var pdf = new IronPdf.ChromePdfRenderer()
        .RenderRazorComponentToPdf<MyComponent>(new Dictionary<string,object> { {"persons",personsList} })
        .SaveAs("component-to-pdf.pdf");
  3. 部署以在您的實時環境中測試

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

    arrow pointer

我要為Razor轉換為PDF準備哪些NuGet套件?

IronPdf.Extensions.Blazor 套件擴展了主要的IronPdf 套件。 兩個套件都需要在Blazor伺服器應用程式中將Razor元件渲染為PDF文件。此擴展為Blazor伺服器應用程式提供了整合點,使您能夠將現有的Razor元件轉換為PDF而不需要廣泛的重構。

安裝IronPdf 程式庫作為依賴項。 擴展套件新增了像RenderRazorComponentToPdf 這樣的方法,能夠理解Blazor的元件模型,並正確地渲染具有綁定資料的元件。 為了達到最佳性能和最新功能,請使用兩個套件的最新版本。 查看更新日誌以獲取更新和改進。

Install-Package IronPdf.Extensions.Blazor
C# 的NuGet PDF 程式庫

使用NuGet 安裝

Install-Package IronPdf.Extensions.Blazor
Icon Quote related to 我要為Razor轉換為PDF準備哪些NuGet套件?

我最喜歡的程式庫是IronPDF。它允許快速高效地操作PDF文件。它還有許多有價值的功能,例如導出到PDF/A格式和數位簽署PDF文件。

Milan Jovanovic related to 我要為Razor轉換為PDF準備哪些NuGet套件?

Milan Jovanovic

Microsoft 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套件?

IronSuite在我們的運營中扮演著至關重要的角色。這些工具增加了包括建立平面圖和改善庫存管理在內的業務效率。

David Jones related to 我要為Razor轉換為PDF準備哪些NuGet套件?

David Jones

首席軟體工程師,Agorus Build

查看案例研究

如何在Blazor伺服器中將Razor元件渲染為PDF?

需要一個Blazor伺服器應用程式項目才能將Razor元件轉換為PDF。 Blazor伺服器應用程式在伺服器上運行,並通過SignalR連接渲染UI更新,因此適合於需要伺服器端處理的PDF生成。 這種架構確保PDF渲染在伺服器上發生,無論使用者的瀏覽器或裝置如何,都能提供一致的結果。

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

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

新增一個名為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; }
    }
}
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元件並在PDF中渲染的資料結構。 IronPDF可與任何C#物件模型協同工作,從簡單的POCO到複雜的Entity Framework模型。 在為PDF生成設計模型時,請考慮如何在最終文件中顯示資料並相應地結構化屬性。

我如何實現Razor元件以生成PDF?

使用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元件中新增導航?

  • 導航到"Shared folder"並打開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文件。 點擊"Print to PDF"按鈕。 IronPDF處理您的Razor元件,將其轉換為HTML,並使用其基於Chrome的渲染引擎將其渲染為PDF。這保持了與現代網頁瀏覽器相同的視覺保真度。

Visual Studio 正在偵錯 Blazor 應用程式,其 PDF 產生程式碼使用 `ChromePdfRenderer` 與 Razor 元件

生成的PDF保存在您專案的輸出目錄中。 自定義保存位置,實現直接瀏覽器下載,或者將PDF儲存在如Azure Blob Storage的雲儲存中。 對於生產應用程式,為可能失敗或超過預期時長的PDF生成場景實現錯誤處理和使用者反饋。

我可以在哪裡下載完整的工作範例?

將本指南的完整程式碼下載為壓縮文件。在Visual Studio中將其作為Blazor伺服器應用程式項目打開。 此範例包含所有依賴項、配置和範例程式碼,以便立即開始在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 程式庫作為依賴項目包含在內。使用以下命令安裝:Install-Package IronPdf.Extensions.Blazor

當將 Razor 元件轉換為 PDF 時,我可以加入自訂的頁首和頁尾嗎?

是的,IronPDF 提供頁首、頁尾和頁面格式的完全自訂選項,當使用 RenderRazorComponentToPdf 方法將您的 Razor 元件轉換時。

為什麼推薦使用 Blazor Server 來從 Razor 元件生成 PDF?

Blazor Server 應用程式運行在伺服器上,並通過 SignalR 連接進行 UI 更新,使其非常適合 PDF 生成。這種架構確保 IronPDF 的渲染發生在伺服器端,無論客戶端瀏覽器還是裝置如何,均提供一致的結果。

我需要重構現有的 Razor 元件以將其轉換為 PDF 嗎?

不需要,IronPdf.Extensions.Blazor 套件允許您將現有的 Razor 元件轉換為 PDF,而不需要大量重構。該擴展提供了理解 Blazor 元件模型的整合點。

在將 Razor 元件轉換為 PDF 時,我如何傳遞資料給我的 Razor 元件?

您可以在 RenderRazorComponentToPdf 方法中使用 Dictionary 參數來傳遞資料。例如:new Dictionary { {"persons", personsList} },其中 "persons" 是參數名稱,personsList 是您的資料。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備開始了嗎?
Nuget 下載 20,296,129 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想快速獲得證明嗎? PM > Install-Package IronPdf
執行範例 看您的HTML變成PDF。