如何使用 IronPDF 與 Blazor 進行 PDF 生成 | IronPDF

IronPDF Blazor伺服器教學:使用 C# 將 HTML 渲染為 PDF

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

IronPDF能夠使用 C# 在Blazor Server 應用程式中實現 HTML 到 PDF 的轉換,設定極少,支援.NET 6,並可直接從Blazor元件提供 PDF 產生功能。

快速入門:在Blazor Server 中渲染 PDF

開始在Blazor Server 應用程式中使用IronPDF 。 本範例示範如何將 HTML 內容渲染成 PDF。 只需幾行程式碼,即可將Blazor元件轉換為 PDF。

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

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

    IronPdf.HtmlToPdf.RenderHtmlAsPdf(htmlContent).SaveAs(outputPath);
  3. 部署到您的生產環境進行測試

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

    arrow pointer

如何建立一個新的Blazor伺服器專案?

建立一個新項目,並選擇Blazor伺服器應用程式類型。 Visual Studio 提供了一個模板,用於建立可以使用.NET產生 PDF 的伺服器端Blazor應用程式。 Blazor伺服器託管模型在伺服器上執行應用程式邏輯,因此適用於需要伺服器端處理的 PDF 生成場景

Visual Studio 建立專案對話方塊顯示了Blazor Server 應用程式和其他Blazor專案範本及其說明。

Blazor伺服器應用程式有哪些先決條件?

在使用IronPDF建立Blazor Server 應用程式之前,請確保已安裝 Visual Studio 2022 或更高版本,並具備ASP.NET和 Web 開發工作負載。 您需要.NET 6 SDK 或更高版本。 Blazor Server 應用程式需要與伺服器保持持續連接,因此適用於需要從複雜的 HTML 內容產生 PDF 或處理應保留在伺服器上的敏感資料的情況。

我應該使用哪個.NET版本?

為了與Blazor Server 應用程式中的IronPDF相容並獲得最佳效能,請使用.NET 6 或更高版本。 IronPDF與.NET Core 3.1、 .NET 5、 .NET 6、 .NET 7 和.NET 8 相容。最新的 LTS 版本(.NET 6 或.NET 8)提供穩定性和長期支援。 部署到 Azure時,請確保您的 Azure 應用程式服務計畫支援您選擇的.NET版本。

如何配置項目設定?

配置Blazor Server 專案時,選擇"配置為 HTTPS"以確保客戶端和伺服器之間的安全通訊。 除非您打算在 Docker 中執行IronPDF ,否則請勿選取"啟用 Docker"。 對於身份驗證,最初選擇"無"——您可以稍後根據需要添加身份驗證。 項目名稱應遵循 C# 命名約定,避免使用空格或特殊字元。

如何將IronPDF安裝到我的Blazor專案中?

專案建立完成後,請依照下列步驟在 Visual Studio 中透過NuGet安裝IronPDF庫。 IronPDF提供了一個 API,可以從 HTML 字串、URL 和現有 PDF 文件建立 PDF

  1. 在 Visual Studio 的解決方案資源管理器視窗中,以滑鼠右鍵按一下 References,然後選擇 Manage NuGet Packages
  2. 選擇"瀏覽"並搜尋 IronPdf
  3. 選擇最新版本的軟體包,勾選專案複選框,然後按一下安裝。

或者,您可以使用.NET CLI 進行安裝:

Install-Package IronPdf

對於特定平台的項目,您可能需要特定於該平台的軟體包。 例如,如果要部署到 Linux 系統,請查看Linux 安裝指南

為什麼選擇NuGet套件管理器而不是命令列介面?

Visual Studio 中的NuGet套件管理器 GUI 提供了一個視覺化介面,可以更輕鬆地瀏覽套件版本、查看依賴項以及同時管理多個專案。 它可以幫助IronPDF新手開發者探索可用的軟體包及其說明。 對於經驗豐富的開發人員來說,CLI 方法速度更快,更適合在自動化建置管道或使用Docker 容器時。

我應該安裝哪個版本的IronPDF ?

安裝最新穩定版IronPDF ,即可獲得新功能、效能改進和安全性更新。 查看更新日誌以了解最新更新詳情。 如果您正在處理現有項目,請確保與其他依賴項版本相容。 對於生產環境,在升級主要版本之前務必進行全面測試。

如何確認安裝是否成功?

安裝完成後,透過檢查解決方案資源管理器中的"Packages"資料夾來驗證IronPDF是否已正確安裝。 你應該能在專案依賴項中看到"IronPDF"。 在 C# 檔案中新增 using IronPdf; - IntelliSense 應該能夠識別該命名空間。 您也可以透過從 HTML 建立基本 PDF來進行簡單的測試,以確認一切運作正常。

如何新增用於產生 PDF 的Razor元件?

將IronPDF安裝到Blazor專案後,新增一個新的Razor組件。 在本教程中,將其命名為"IronPdfComponent"。 此元件將處理使用者輸入,並根據 HTML 內容動態產生 PDF。 Blazor的元件架構使得建立可在整個應用程式中共用的可重複使用 PDF 產生功能變得容易。

在 Visual Studio 的

之後,如下更新程式碼:

@page "/IronPdf"
@inject IJSRuntime JS

<h3>IronPdfComponent</h3>

<EditForm Model="@_InputMsgModel" id="inputText">
  <div>
    <InputTextArea @bind-Value="@_InputMsgModel.HTML" rows="20" />
  </div>
  <div>
    <button type="button" @onclick="@SubmitHTML">Render HTML</button>
  </div>
</EditForm>
@page "/IronPdf"
@inject IJSRuntime JS

<h3>IronPdfComponent</h3>

<EditForm Model="@_InputMsgModel" id="inputText">
  <div>
    <InputTextArea @bind-Value="@_InputMsgModel.HTML" rows="20" />
  </div>
  <div>
    <button type="button" @onclick="@SubmitHTML">Render HTML</button>
  </div>
</EditForm>
HTML
@code {

    // Model to bind user input
    private InputHTMLModel _InputMsgModel = new InputHTMLModel();

    private async Task SubmitHTML()
    {
        // Set your IronPDF license key
        IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

        // Create a renderer to convert HTML to PDF
        var render = new IronPdf.ChromePdfRenderer();

        // Configure rendering options for better output
        render.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        render.RenderingOptions.MarginTop = 40;
        render.RenderingOptions.MarginBottom = 40;

        // Render the HTML input into a PDF document
        var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);

        var fileName = "iron.pdf";

        // Create a stream reference for the PDF content
        using var streamRef = new DotNetStreamReference(stream: doc.Stream);

        // Invoke JavaScript function to download the PDF in the browser
        await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
    }

    public class InputHTMLModel
    {
        public string HTML { get; set; } = @"<h1>Welcome to IronPDF</h1>
            <p>This is a sample PDF generated from HTML content in Blazor Server.</p>
            <ul>
                <li>Easy to use API</li>
                <li>High-quality rendering</li>
                <li>Full HTML5 and CSS3 support</li>
            </ul>";
    }
}
@code {

    // Model to bind user input
    private InputHTMLModel _InputMsgModel = new InputHTMLModel();

    private async Task SubmitHTML()
    {
        // Set your IronPDF license key
        IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

        // Create a renderer to convert HTML to PDF
        var render = new IronPdf.ChromePdfRenderer();

        // Configure rendering options for better output
        render.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        render.RenderingOptions.MarginTop = 40;
        render.RenderingOptions.MarginBottom = 40;

        // Render the HTML input into a PDF document
        var doc = render.RenderHtmlAsPdf(_InputMsgModel.HTML);

        var fileName = "iron.pdf";

        // Create a stream reference for the PDF content
        using var streamRef = new DotNetStreamReference(stream: doc.Stream);

        // Invoke JavaScript function to download the PDF in the browser
        await JS.InvokeVoidAsync("SubmitHTML", fileName, streamRef);
    }

    public class InputHTMLModel
    {
        public string HTML { get; set; } = @"<h1>Welcome to IronPDF</h1>
            <p>This is a sample PDF generated from HTML content in Blazor Server.</p>
            <ul>
                <li>Easy to use API</li>
                <li>High-quality rendering</li>
                <li>Full HTML5 and CSS3 support</li>
            </ul>";
    }
}
$vbLabelText   $csharpLabel

此元件使用ChromePdfRenderer 類別產生 PDF 檔案。 您可以自訂渲染效果,例如自訂紙張尺寸邊距頁首/頁尾

將此JavaScript程式碼新增至 _layout.cshtml,以允許在Blazor應用程式中下載IronPDF渲染的 PDF:

<script>
    // JavaScript function to download PDFs generated by IronPdf
    window.SubmitHTML = async (fileName, contentStreamReference) => {
        // Get the PDF content as an ArrayBuffer
        const arrayBuffer = await contentStreamReference.arrayBuffer();

        // Create a Blob from the ArrayBuffer
        const blob = new Blob([arrayBuffer]);

        // Create an object URL for the Blob
        const url = URL.createObjectURL(blob);

        // Create an anchor element to initiate the download
        const anchorElement = document.createElement("a");
        anchorElement.href = url;
        anchorElement.download = fileName ?? "download.pdf";

        // Programmatically click the anchor to start the download
        anchorElement.click();

        // Clean up by removing the anchor and revoking the object URL
        anchorElement.remove();
        URL.revokeObjectURL(url);
    };
</script>
<script>
    // JavaScript function to download PDFs generated by IronPdf
    window.SubmitHTML = async (fileName, contentStreamReference) => {
        // Get the PDF content as an ArrayBuffer
        const arrayBuffer = await contentStreamReference.arrayBuffer();

        // Create a Blob from the ArrayBuffer
        const blob = new Blob([arrayBuffer]);

        // Create an object URL for the Blob
        const url = URL.createObjectURL(blob);

        // Create an anchor element to initiate the download
        const anchorElement = document.createElement("a");
        anchorElement.href = url;
        anchorElement.download = fileName ?? "download.pdf";

        // Programmatically click the anchor to start the download
        anchorElement.click();

        // Clean up by removing the anchor and revoking the object URL
        anchorElement.remove();
        URL.revokeObjectURL(url);
    };
</script>
JAVASCRIPT

編輯 Shared 資料夾中的 NavMenu.razor 文件,為我們的新Razor元件添加導航標籤。 新增以下程式碼:

<div class="nav-item px-3">
    <NavLink class="nav-link" href="IronPdf">
        <span class="oi oi-list-rich" aria-hidden="true"></span> IronPdf
    </NavLink>
</div>
<div class="nav-item px-3">
    <NavLink class="nav-link" href="IronPdf">
        <span class="oi oi-list-rich" aria-hidden="true"></span> IronPdf
    </NavLink>
</div>
HTML

完成以上步驟後,執行解決方案,您應該會看到以下內容:

Blazor應用程式使用IronPDF元件,在主內容區域顯示 HTML 輸入文字區域和

為什麼要在Blazor中使用JavaScript來實作 PDF 下載?

Blazor Server 是基於 SignalR 連線運行,所有 C# 程式碼都在伺服器上執行。 若要觸發瀏覽器特定的動作(例如檔案下載),需要使用JavaScript互通。 DotNetStreamReference 類別將二進位資料從伺服器傳輸到客戶端,而無需一次性將整個 PDF 載入到記憶體中。 這種方法比 base64 編碼更有效率,並且適用於大型 PDF 檔案。 作為替代方案,可以考慮將 PDF 匯出到記憶體流

實施 PDF 下載時常見的問題有哪些?

常見的挑戰包括處理可能導致 SignalR 連接逾時的大文件、管理並發的 PDF 生成請求以及確保資源的正確處置。 為避免記憶體洩漏,請務必正確處置 PDF 文件和串流。 為了獲得更好的性能,可以考慮實現非同步PDF生成。 如果遇到渲染問題,請查看渲染選項文件以取得配置提示。

如何處理大型PDF文件?

對於大型 PDF 文件,可以考慮新增進度指示器和分塊下載功能。 您可以使用壓縮技術來優化 PDF 檔案的大小。 在Blazor伺服器配置中設定適當的逾時時間:

services.AddServerSideBlazor()
    .AddHubOptions(options =>
    {
        options.MaximumReceiveMessageSize = 10 * 1024 * 1024; // 10MB
        options.ClientTimeoutInterval = TimeSpan.FromSeconds(60);
    });
services.AddServerSideBlazor()
    .AddHubOptions(options =>
    {
        options.MaximumReceiveMessageSize = 10 * 1024 * 1024; // 10MB
        options.ClientTimeoutInterval = TimeSpan.FromSeconds(60);
    });
$vbLabelText   $csharpLabel

對於非常大的文檔,請考慮先將其保存到伺服器存儲,然後提供下載鏈接,而不是直接進行串流傳輸。

何時應該使用串流媒體引用,何時應該直接下載?

對於小於 50MB 且需要立即下載的 PDF 文件,請使用 DotNetStreamReference。 對於較大的文件或需要將 PDF 儲存到磁碟時,請考慮在伺服器上產生 PDF 並提供下載連結。 直接下載適用於報表和發票,而大量處理或合併多個 PDF 檔案則可能需要伺服器端儲存。 在選擇方法時,請考慮應用程式的記憶體限制和使用者體驗要求。

常見問題解答

如何建立新的 Blazor 伺服器專案以產生 PDF?

要使用 IronPDF 創建 Blazor Server 專案,請在 Visual Studio 中選擇「Blazor Server App」作為專案類型。Blazor Server 主機模型在伺服器上執行應用程式邏輯,因此非常適合需要使用 IronPDF 進行伺服器端處理的 PDF 生成情境。

使用Blazor伺服器應用程式產生PDF的先決條件是什麼?

您需要 Visual Studio 2022 或更高版本的 ASP.NET 和網頁開發工作負載,Plus .NET 6 SDK 或更高版本。Blazor Server 應用程式需要持續的伺服器連線,因此適合使用 IronPDF 從複雜的 HTML 內容產生 PDF,或處理應保留在伺服器上的敏感資料時使用。

在 Blazor 中生成 PDF 應該使用哪個 .NET 版本?

為了在 Blazor Server 應用程式中與 IronPDF 達到最佳相容性與效能,請使用 .NET 6 或更高版本。IronPDF 支援 .NET Core 3.1、.NET 5、.NET 6、.NET 7 及 .NET 8。最新的 LTS 版本(.NET 6 或 .NET 8)可提供穩定性和長期支援。

如何設定 Blazor PDF 應用程式的專案設定?

為 IronPDF 設定 Blazor 伺服器專案時,請選擇「Configure for HTTPS」以保證通訊安全。不勾選「啟用 Docker」,除非您打算在 Docker 容器中執行 IronPDF。一開始使用「None」來驗證 - 您可以稍後再加入。使用正確的 C# 命名慣例,不要使用空格或特殊符號。

如何在Blazor伺服器中從HTML快速產生PDF?

IronPDF 為 Blazor Server 中的 HTML 轉 PDF 提供了簡單的單行解決方案:IronPdf.HtmlToPdf.RenderHtmlAsPdf(htmlContent).SaveAs(outputPath).這可讓您以最少的程式碼將 Blazor 元件轉換成 PDF。

在Blazor中實現PDF生成的最基本工作流程是什麼?

最低限度的工作流程包括 5 個步驟:1) 安裝 IronPDF HTML-to-PDF 函式庫;2) 在 Visual Studio 中建立新的 Blazor 專案;3) 使用 IronPDF 將網頁由 URL 轉換成 PDF 文件;4) 將網頁渲染到客戶端的網頁瀏覽器;5) 檢視由 HTML 字串產生的 PDF 文件。

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檔。