跳過到頁腳內容
使用IRONPDF
使用 IronPDF 將 Blazor HTML 轉換為 PDF

使用Blazor教程創建PDF文件

IronPDF,一個知名的 C# 函式庫,可用於 Blazor 應用程式。 本評測將指導你使用 IronPDF 將 PDF 報表嵌入 Blazor 應用程式,展示其無縫整合和高效能。

class="hsg-featured-snippet">

如何在 Blazor 中建立 PDF 檔案

  1. 在 Visual Studio 中建立新的 Blazor 專案
  2. 安裝用於 Blazor 應用程式的 HTML 到 PDF 函式庫
  3. 透過 URL 從網頁建立 PDF 文件
  4. 從 HTML 字串建立 PDF 文件

1. IronPDF 功能

開發人員可以利用強大的 IronPDF .NET PDF 函式庫快速創建、閱讀和處理 PDF 文件。 IronPDF 擁有內建的 Chrome 引擎,提供大量的實用和強大的功能。 這些功能包括將 HTML5、JavaScript、CSS和圖像轉換為 PDF 的能力,為 PDF 文件添加獨特的頁眉和頁腳的能力,以及精確生成與網頁瀏覽器中顯示一致的 PDF 文件的能力。 IronPDF 支援各種網路技術,包括 HTML、ASPX、Razor 頁面和 MVC 框架。

IronPDF 的主要屬性如下:

  • IronPDF 提供了在 .NET C# 應用程式中創建和修改 PDF 文件的完整控制。
  • IronPDF 能夠使用特定的 User-Agent、代理、標頭和 Cookie 配置根據 URL 生成網頁的 PDF 文件
  • IronPDF 能夠在使用表單變數的登錄表單後方的網頁生成 PDF 文件。
  • IronPDF 可以從現有的 PDF 文件中提取和/或移除照片
  • IronPDF 可以向 PDF 文件中添加文本、照片、書籤、水印和其他元素。
  • IronPDF 使流行的 PDF 文件的合併和拆分頁面 變得容易。
  • IronPDF 可以處理網頁資源,比如 JavaScript、CSS 和媒體文件,就像在瀏覽器中顯示一樣將它們呈現為 PDF 文件。
  • IronPDF 支援所有 .NET 框架,包括 .NET Core、.NET Standard 等。

2. 什麼是 Blazor?

Blazor 是一個 Web 應用程式框架,讓在 C# 和 HTML 中使用 Web Assembly 創建客戶端 Web 應用變得可行。

Web Assembly 應用以二進制指令的格式發送到瀏覽器中,可以接近原生速度運行。 這為 C# 等語言在瀏覽器中運行創造了新的可能性。

在Visual Studio中創建一個新專案

首先,打開 Microsoft Visual Studio 應用程式,並從檔案功能表中選擇“新建專案”。 接著,選擇“Blazor 伺服器應用”。

使用 Blazor 教學建立 PDF 文件,圖 1:在 Visual Studio 中創建新專案 在 Visual Studio 中創建新專案

輸入專案名稱並選擇文件路徑。 然後,點擊創建按鈕。

使用 Blazor 教學建立 PDF 文件,圖 2:選擇新 Blazor 應用程式的名稱和位置 選擇新 Blazor 應用程式的名稱和位置

選擇所需的 .NET 框架(在本教學中將使用 .NET 6.0),如下圖所示:

使用 Blazor 教學建立 PDF 文件,圖 3:使用 .NET 6.0 框架在 Visual Studio 中創建新專案 使用 .NET 6.0 框架在 Visual Studio 中創建新專案

Microsoft Visual Studio 現在將生成此 Blazor 應用程式的結構。

接下來,將 IronPDF 函式庫添加到此新專案中。

3. 安裝 IronPDF 庫

IronPDF 函式庫可以透過以下四種方法下載和安裝:

  • 使用 Visual Studio 的 NuGet 套件管理器
  • 使用 Visual Studio 的命令行
  • 從 NuGet 網站直接下載
  • 從 IronPDF 網站直接下載

3.1 使用 Visual Studio 的 NuGet 套件管理器

Visual Studio 提供了 NuGet 套件管理器來協助直接將函式庫安裝到專案中。 下面的截圖顯示如何打開 NuGet 包管理器。

使用 Blazor 教學建立 PDF 文件,圖 4:訪問 Visual Studio 的 NuGet 套件管理器 訪問 Visual Studio 的 NuGet 套件管理器

使用瀏覽標籤下的搜索欄搜尋“IronPDF”,如下圖所示:

使用 Blazor 教學建立 PDF 文件,圖 5:在 NuGet 套件管理器 GUI 中搜尋 IronPDF 函式庫 在 NuGet 套件管理器 GUI 中搜尋 IronPDF 函式庫

上圖顯示了相關搜索結果的列表。 選擇所需的選項將軟體包安裝到你的專案中。

3.2 使用 Visual Studio 命令行

在 Visual Studio 中,前往工具 > NuGet 套件管理器 > 包管理器控制台

在包管理器控制台標籤中輸入以下行:

Install-Package IronPdf

現在這個包將被下載並安裝到當前專案中。

使用 Blazor 教學建立 PDF 文件,圖 6:使用 NuGet 套件管理器控制台安裝 IronPDF 函式庫 使用 NuGet 套件管理器控制台安裝 IronPDF 函式庫

3.3 從 NuGet 網站直接下載

第三種安裝 IronPDF 函式庫的方法是直接從網站下載 NuGet 包。

導航到IronPDF 在 NuGet 網站上

  • 點擊右側功能表中的“下載套件”選項。
  • 在文件系統中開啟下載的套件。 它會自動安裝。
  • 重新載入解決方案並開始在項目中使用它。

3.4 從 IronPDF 網站直接下載

訪問 IronPDF 網站以直接下載 IronPDF 套件

下載後,按照以下步驟將套件添加到你的專案中:

  • 右鍵單擊解決方案窗口中的項目。
  • 選擇選項“添加”>“參考”,然後導航到你之前下載的庫的位置。
  • 點擊確定將庫作為參考添加。

4. 在 Blazor 伺服器應用中創建 PDF 文件

本教程中的 Blazor 應用將使用 IronPDF 根據 URL 獲取網頁的 HTML 內容並將其轉換為 PDF 文件。

在專案所含的 .razor 文件中輸入以下程式碼。

@using IronPdf

@code {
    /// <summary>
    /// This method exports data by converting a URL to a PDF file and initiating its download.
    /// </summary>
    public async Task ExportData()
    {
        try
        {
            string fileName = "Demo.pdf";
            var renderer = new ChromePdfRenderer();

            // Render the contents of the URL as a PDF document
            var pdf = renderer.RenderUrlAsPdf("https://localhost:7018/fetchdata");

            // Save the PDF using a JavaScript function
            await JSRuntime.InvokeVoidAsync("saveAsFile", fileName, Convert.ToBase64String(pdf.Stream.ToArray()));
        }
        catch (Exception ex)
        {
            // Handle any exceptions that may occur
            Console.Error.WriteLine($"Error in ExportData: {ex.Message}");
        }
    }
}
@using IronPdf

@code {
    /// <summary>
    /// This method exports data by converting a URL to a PDF file and initiating its download.
    /// </summary>
    public async Task ExportData()
    {
        try
        {
            string fileName = "Demo.pdf";
            var renderer = new ChromePdfRenderer();

            // Render the contents of the URL as a PDF document
            var pdf = renderer.RenderUrlAsPdf("https://localhost:7018/fetchdata");

            // Save the PDF using a JavaScript function
            await JSRuntime.InvokeVoidAsync("saveAsFile", fileName, Convert.ToBase64String(pdf.Stream.ToArray()));
        }
        catch (Exception ex)
        {
            // Handle any exceptions that may occur
            Console.Error.WriteLine($"Error in ExportData: {ex.Message}");
        }
    }
}
[using] ReadOnly Property code() As IronPdf
	''' <summary>
	''' This method exports data by converting a URL to a PDF file and initiating its download.
	''' </summary>
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	public async Task ExportData()
'	{
'		try
'		{
'			string fileName = "Demo.pdf";
'			var renderer = New ChromePdfRenderer();
'
'			' Render the contents of the URL as a PDF document
'			var pdf = renderer.RenderUrlAsPdf("https://localhost:7018/fetchdata");
'
'			' Save the PDF using a JavaScript function
'			await JSRuntime.InvokeVoidAsync("saveAsFile", fileName, Convert.ToBase64String(pdf.Stream.ToArray()));
'		}
'		catch (Exception ex)
'		{
'			' Handle any exceptions that may occur
'			Console.@Error.WriteLine(string.Format("Error in ExportData: {0}", ex.Message));
'		}
'	}
End Property
$vbLabelText   $csharpLabel

上面的程式碼片段使用兩種方法從 HTML 生成 PDF 文件。 第一種方法是 IronPDF 的 RenderUrlAsPdf 方法,它從給定的 URL 下載 HTML 內容並將其轉換為 PDF 格式。

第二種方法是靜態 JSRuntime.InvokeVoidAsync 方法,這會觸發瀏覽器的 JavaScript 引擎來調用網頁範圍內的 JavaScript 函數,將 PDF 內容儲存到客戶端的文件系統上。

以下是包含此 JavaScript 函數:

<script type="text/javascript">
    /**
     * Saves the PDF data as a file on the client's system.
     * @param {string} filename - The name of the file to be created.
     * @param {string} bytesBase64 - The Base64 encoded string of the PDF data.
     */
    function saveAsFile(filename, bytesBase64) {
        if (navigator.msSaveBlob) {
            // Download the document in Microsoft Edge browser
            var data = window.atob(bytesBase64);
            var bytes = new Uint8Array(data.length);
            for (var i = 0; i < data.length; i++) {
                bytes[i] = data.charCodeAt(i);
            }
            var blob = new Blob([bytes.buffer], { type: "application/octet-stream" });
            navigator.msSaveBlob(blob, filename);
            window.navigator.msSaveOrOpenBlob(blob);
        }
        else {
            var link = document.createElement('a');
            link.download = filename;
            link.href = "data:application/octet-stream;base64," + bytesBase64;
            document.body.appendChild(link); // Needed for Firefox
            link.click();
            document.body.removeChild(link);
        }
    }
</script>
<script type="text/javascript">
    /**
     * Saves the PDF data as a file on the client's system.
     * @param {string} filename - The name of the file to be created.
     * @param {string} bytesBase64 - The Base64 encoded string of the PDF data.
     */
    function saveAsFile(filename, bytesBase64) {
        if (navigator.msSaveBlob) {
            // Download the document in Microsoft Edge browser
            var data = window.atob(bytesBase64);
            var bytes = new Uint8Array(data.length);
            for (var i = 0; i < data.length; i++) {
                bytes[i] = data.charCodeAt(i);
            }
            var blob = new Blob([bytes.buffer], { type: "application/octet-stream" });
            navigator.msSaveBlob(blob, filename);
            window.navigator.msSaveOrOpenBlob(blob);
        }
        else {
            var link = document.createElement('a');
            link.download = filename;
            link.href = "data:application/octet-stream;base64," + bytesBase64;
            document.body.appendChild(link); // Needed for Firefox
            link.click();
            document.body.removeChild(link);
        }
    }
</script>
HTML

上面的 JavaScript 函數接收來自 Blazor 的 Base64 數據並將其轉換為 blob,然後存儲到客戶端位置。

Alternatively, The SaveAs method from the ChromePdfRenderer class can also be used to save PDF documents to the browser's local storage.

5. 從 HTML 字串創建 PDF 文件

以下代碼片段顯示如何將 HTML 字串轉換為文件。

@using IronPdf

@code {
    /// <summary>
    /// Demonstrates turning an HTML string into a PDF document.
    /// </summary>
    public void GeneratePdfFromHtmlString()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello world!!</h1>");

        // You can save the generated PDF locally
        pdf.SaveAs("HelloWorld.pdf");
    }
}
@using IronPdf

@code {
    /// <summary>
    /// Demonstrates turning an HTML string into a PDF document.
    /// </summary>
    public void GeneratePdfFromHtmlString()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello world!!</h1>");

        // You can save the generated PDF locally
        pdf.SaveAs("HelloWorld.pdf");
    }
}
[using] ReadOnly Property code() As IronPdf
	''' <summary>
	''' Demonstrates turning an HTML string into a PDF document.
	''' </summary>
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	public void GeneratePdfFromHtmlString()
'	{
'		var renderer = New ChromePdfRenderer();
'		var pdf = renderer.RenderHtmlAsPdf("<h1>Hello world!!</h1>");
'
'		' You can save the generated PDF locally
'		pdf.SaveAs("HelloWorld.pdf");
'	}
End Property
$vbLabelText   $csharpLabel

前面的範例使用RenderHtmlAsPdf實例方法將任何 HTML 字串轉換為 PDF 內容。 此外,可以使用之前描述的過程中的SaveAs方法將此內容儲存在客戶端的電腦上。

使用 Blazor 教學建立 PDF 文件,圖 7:本教學中創建的 Blazor PDF 生成應用程式 本教學中創建的 Blazor PDF 生成應用程式

上圖顯示了本教程中開發的 Web 應用。 點擊下載按鈕將觸發 C# 代碼以生成 PDF 內容,並觸發 JavaScript 函數以在客戶端下載 PDF 內容。

結論

本文展示了如何開發一個使用 IronPDF PDF 函式庫從網頁生成 PDF 文件的 Blazor Web 應用程式。

IronPDF 並非開源,但免費試用金鑰允許你無水印地在生產環境中使用。

常見問題解答

如何將 PDF 庫整合到 Blazor 伺服器端應用程式中?

您可以使用 IronPDF 將 PDF 庫整合到 Blazor 伺服器端應用程式中。首先,在 Visual Studio 中建立一個 Blazor 項目,然後透過 NuGet 套件管理器或命令列安裝 IronPDF 庫。 IronPDF 讓您從 HTML 內容無縫產生 PDF 文件。

在 Blazor 應用程式中,有哪些方法可以從 HTML 產生 PDF?

在 Blazor 應用程式中,您可以使用 IronPDF 的RenderUrlAsPdf方法將網頁 URL 轉換為 PDF,或使用RenderHtmlAsPdf直接從 HTML 字串產生 PDF。這些方法讓您可以靈活地從各種 HTML 來源建立 PDF 文件。

如何在 Blazor 應用程式中將 PDF 檔案保存到客戶端的檔案系統中?

若要在 Blazor 應用程式中將 PDF 檔案儲存到客戶端檔案系統,可以使用 JavaScript 函數將 PDF 資料轉換為 blob 並觸發下載。 IronPDF 提供了產生 PDF 所需的工具,然後可以使用客戶端 JavaScript 處理該 PDF。

在 Visual Studio 中建立 Blazor 伺服器端專案的流程是什麼?

在 Visual Studio 中建立 Blazor 伺服器端專案需要從“檔案”功能表中選擇“新專案”,然後選擇“Blazor 伺服器應用程式”,指定專案名稱和位置,並選擇相應的 .NET Framework 版本。此設定可讓您整合 IronPDF 等其他庫以增強功能。

我可以使用此程式庫將 HTML 中的 JavaScript 和 CSS 內容轉換為 PDF 嗎?

是的,您可以使用 IronPDF 將 HTML 中的 JavaScript 和 CSS 內容轉換為 PDF。它支援渲染 HTML5、CSS 和 JavaScript 內容,使您能夠產生保留原始網頁佈局和樣式的完整 PDF 文件。

Blazor 中 PDF 產生功能無法正常運作時,有哪些故障排除步驟?

如果 Blazor 中 PDF 產生未如預期運作,請確保 IronPDF 庫已正確安裝在專案中。驗證 HTML 內容格式是否正確且可存取。此外,檢查瀏覽器控制台中是否存在任何可能影響 PDF 渲染過程的 JavaScript 錯誤。

使用 PDF 程式庫時,如何確保我的 PDF 文件包含頁首和頁尾?

若要在 IronPDF 中使用 PDF 文件新增頁首和頁尾,您可以配置渲染選項以新增自訂頁首和頁尾內容。這樣,您就可以在 PDF 輸出中包含頁碼或標題等附加資訊。

Blazor 應用程式中是否可以為需要身份驗證的頁面產生 PDF 檔案?

是的,IronPDF 可以為 Blazor 應用程式中需要身份驗證的頁面產生 PDF 檔案。您需要先管理驗證 cookie 或令牌才能存取受限內容,然後才能使用該程式庫的功能將其轉換為 PDF 檔案。

IronPDF 與 .NET 10 相容嗎?與 .NET 10 一起使用有哪些好處?

是的,IronPDF 完全相容於 .NET 10——無需任何自訂變通方案、補丁或已棄用的 API,即可開箱即用。 .NET 10 對 ASP.NET Core 和 Blazor 進行了更新,包括效能提升、依賴管理最佳化、框架引用處理增強以及 JavaScript 隔離改進,所有這些都有利於使用 Razor 頁面、URL 或 HTML 內容的 PDF 生成工作流程。

將 IronPDF 與 .NET 10 結合如何提高效能和執行時間效率?

將 IronPDF 與 .NET 10 結合使用,可利用多項執行時間增強功能,例如陣列介面方法去虛擬化、結構體轉義分析、改進的 JIT 最佳化以及對 AVX-512 指令的支援。這些改進減少了記憶體分配,降低了垃圾回收的開銷,並加快了 HTML 渲染和 PDF 處理等任務的速度。

Curtis Chau
技術作家

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

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