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

使用Blazor教程創建PDF文件

IronPDF 是一個著名的 C# 庫,可與 Blazor 應用程式搭配使用。 本評測將指導您如何使用 IronPDF 將 PDF 報告嵌入 Blazor 應用程序,展示其無縫整合和高效性。

1. IronPDF 功能

透過功能強大的 IronPDF .NET PDF 庫,開發人員可以快速建立、讀取和處理 PDF 文件。 IronPDF內建 Chrome 引擎,並提供豐富的實用強大功能。 這些功能包括將 HTML5、JavaScript、CSS 和圖像轉換為 PDF,為 PDF 文件添加獨特的頁首和頁腳,以及生成與在 Web 瀏覽器中顯示效果完全相同的 PDF。 IronPDF 支援多種 Web 技術,包括 HTML、ASPX、Razor Pages 和 MVC 框架。

IronPDF的主要特點如下:

IronPDF 提供 .NET C# 應用程式中 PDF 檔案的建立和修改的完全控制。

2. Blazor是什麼?

Blazor 是一個 Web 應用程式框架,它使得使用 WebAssembly 在 C# 和 HTML 中建立客戶端 Web 應用程式成為可能。

WebAssembly 應用程式以二進位指令格式傳送至瀏覽器,其運作速度接近原生應用程式。 這為 C# 等語言在瀏覽器中運作創造了新的可能性。

在 Visual Studio 中建立新專案

首先,開啟 Microsoft Visual Studio 應用程序,然後從"檔案"選單中選擇"新專案"。 然後,選擇"Blazor 伺服器應用程式"。

使用 Blazor 建立 PDF 檔案教學,圖 1:在 Visual Studio 中建立新項目 在 Visual Studio 中建立新項目

輸入項目名稱並選擇檔案路徑。 然後,點擊"創建"按鈕。

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

選擇所需的 .NET Framework 版本(本教學課程將使用 .NET 6.0),如下圖所示:

使用 Blazor 建立 PDF 檔案教學,圖 3:在 Visual Studio 中使用 .NET 6.0 框架建立新項目 使用 .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 Package Manager。

使用 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,然後儲存到客戶端位置。

或者,也可以使用ChromePdfRenderer類別中的SaveAs方法將 PDF 文件儲存到瀏覽器的本機儲存中。

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。您需要先管理驗證 cookies 或權杖,才能存取受限制的內容,然後再使用函式庫的功能將其轉換為 PDF。

IronPDF 是否與 .NET 10 相容,與 .NET 10 搭配使用會帶來哪些好處?

是的,IronPDF 與 .NET 10 完全相容 - 開箱即用,無需自訂變通、墊片或捨棄 API。.NET 10 為 ASP.NET Core 和 Blazor 帶來了更新,包括改進的效能、更好的相依性管理、增強的框架參考處理以及改進的 JavaScript 隔離,所有這些都有益於使用 Razor 頁面、URL 或 HTML 內容的 PDF 生成工作流程。

在 .NET 10 中使用 IronPDF 如何提高性能和運行效率?

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

Curtis Chau
技術作家

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

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