跳過到頁腳內容
使用IRONPDF
在 Blazor 伺服器應用程式中如何使用 Iron PDF 將 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套件管理器。

使用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}");
        }
    }
}
$vbLabelText   $csharpLabel

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

第二種方法是靜態方法,它會觸發瀏覽器的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");
    }
}
$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 應用程式中,生成 PDF 可用的方法有哪些?

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

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

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

在 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 內容格式是否正確且可訪問。此外,檢查瀏覽器控制台中的任何 JavaScript 錯誤可能影響 PDF 渲染過程。

如何確保我的 PDF 文件在使用 PDF 庫時包含頁眉和頁腳?

要確保您的 PDF 文件在使用 IronPDF 時包含頁眉和頁腳,您可以配置渲染選項來添加自定義頁眉和頁腳內容。這使您能夠在 PDF 輸出中包含頁碼或標題等額外資訊。

在 Blazor 應用程式中是否可以為受身份驗證限制的頁面生成 PDF?

是的,IronPDF可以生成適用於Blazor應用程式中身份驗證後的頁面。您需要管理身份驗證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 機器人,結合科技與創意的樂趣。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me