跳至頁尾內容
使用IRONPDF
Blazor HTML到PDF使用IronPDF

如何將多張圖像合併為一個PDF

IronPDF,一個知名的C#程式庫,可與Blazor應用程式搭配使用。 本篇評論將引導您使用IronPDF在Blazor應用程式中嵌入PDF報告,展示其無縫整合與高效能。

1. IronPDF功能

開發人員可以藉助強大的IronPDF .NET PDF程式庫,快速建立、閱讀和處理PDF文件。 IronPDF具有內建的Chrome引擎,提供豐富且強大的實用功能。 這些功能包括將HTML5、JavaScript、CSS和圖像轉換成PDF的能力、為PDF文件新增獨特標題和頁腳的功能,以及生成與網頁瀏覽器中顯示一致的PDF。 IronPDF支持各種網頁技術,包括HTML、ASPX、Razor Pages和MVC框架。

IronPDF的主要特徵如下:

  • IronPDF在.NET C#應用程式中提供對PDF文件建立和修改的全面控制
  • IronPDF可以透過使用特定使用者代理、代理伺服器、標頭和Cookie配置生成網站頁面的PDF文件
  • IronPDF可以為位於登錄表單之後的網頁生成PDF文件,使用表單變數
  • IronPDF可以從現有的PDF文件中提取和/或移除照片
  • IronPDF可以為PDF文件新增文字、照片、書籤、浮水印及其他元素
  • IronPDF讓您能夠輕鬆合併和拆分一個或多個PDF文件的頁面。
  • IronPDF可以處理網頁資產,如JavaScript、CSS和多媒體文件,並將其渲染到PDF文件中,就像在瀏覽器中顯示一樣。
  • IronPDF支持所有的.NET框架,包括.NET Core、.NET Standard等。

2. 什麼是Blazor?

Blazor是一個網頁應用程式框架,使得可以使用C#和HTML通過Web Assembly建立使用者端網頁應用程式。

Web Assembly應用程式以二進位指令格式發送到瀏覽器,可以以接近本機速度運行。 這為C#等語言在瀏覽器中運行創造了新的潛力。

在Visual Studio中建立新專案

首先,打開Microsoft Visual Studio應用程式,並從"檔案"選單中選擇"新建專案"。 然後,選擇"Blazor Server App"。

與Blazor教程建立PDF文件,圖1:在Visual Studio中建立新專案 在Visual Studio中建立新專案

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

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

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

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

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

接下來,將IronPDF程式庫新增到這個新專案中。

3. 安裝IronPDF程式庫

IronPDF程式庫可以通過四種方式下載和安裝:

  • 使用Visual Studio的NuGet Package Manager
  • 使用Visual Studio的命令行
  • 直接從NuGet網站下載
  • 直接從IronPDF網站下載

3.1 使用Visual Studio的NuGet Package Manager

Visual Studio提供NuGet Package Manager以協助直接將程式庫安裝到專案中。 下面的截圖展示了如何打開NuGet Package Manager。

與Blazor教程建立PDF文件,圖4:存取Visual Studio的NuGet Package Manager 存取Visual Studio的NuGet Package Manager

在"瀏覽"標籤下的搜尋欄位中搜尋"IronPDF",如下圖所示:

與Blazor教程建立PDF文件,圖5:在NuGet Package Manager GUI中搜尋IronPDF程式庫 在NuGet Package Manager GUI中搜尋IronPDF程式庫

從上方的圖片中顯示了相關搜索結果的列表。 選擇所需的選項將套件安裝到您的專案中。

3.2 使用Visual Studio命令行

In Visual Studio, go to Tools > NuGet Package Manager > Package Manager Console

在Package Manager Console標籤中輸入以下行:

Install-Package IronPdf

該套件現在將被下載並安裝到當前項目中。

與Blazor教程建立PDF文件,圖6:使用NuGet Package Manager Console安裝IronPDF程式庫 使用NuGet Package Manager Console安裝IronPDF程式庫

3.3 直接從NuGet網站下載

安裝IronPDF程式庫的第三種方式是直接從網站下載NuGet套件。

導航至NuGet IronPDF網站

  • 從右側選單中點擊"下載套件"選項。
  • 在文件系統中打開下載的套件。 它將會自動安裝。
  • 重新載入解決方案並開始在您的專案中使用它。

3.4 直接從IronPDF網站下載

存取IronPDF網站直接下載IronPDF套件

下載後,按照以下步驟將套件新增到您的專案中:

  • 右鍵單擊解決方案窗口中的專案。
  • 選擇"新增">"參考"選項,然後導航到您之前下載的程式庫的位置。
  • 點擊確定以將程式庫新增為引用。

4. 在Blazor Server App中建立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,然後將其保存到客戶端位置。

或者,可以使用SaveAs方法,該方法來自ChromePdfRenderer類,也可以用來將PDF文件保存到瀏覽器的本地儲存中。

5. 從HTML字串建立PDF文件

以下程式碼片段顯示如何將HTTP字串轉變為文件。

@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實例方法來將任何HTTP字串轉化為PDF內容。 此外,可以使用SaveAs方法在上述描述的程式中將此內容保存到客戶端的計算機上。

與Blazor教程建立PDF文件,圖7:在此教程中建立的BlazorPDF生成應用程式 在本教程中建立的Blazor PDF生成應用程式

上方的截圖展示了在本教程中開發的網頁應用程式。 點擊下載按鈕將觸發C#程式碼以生成PDF內容,並觸發JavaScript函式在客戶端下載PDF內容。

結論

本文演示了如何開發一個Blazor網頁應用程式,該應用程式使用IronPDF文件程式庫生成網站頁面的PDF文件。

IronPDF不是開源的,但免費試用密鑰允許您在生產中使用它而不含浮水印。

常見問題

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

您可以通過使用IronPDF將PDF程式庫整合到Blazor伺服器端應用程式中。首先,在Visual Studio中建立Blazor專案,然後通過NuGet套件管理員或命令行安裝IronPDF程式庫。IronPDF允許您從HTML內容無縫生成PDF文件。

在Blazor應用程式中生成PDF的HTML方法有哪些?

在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文件,保留原網頁的佈局和樣式。

如果PDF生成在Blazor中未按預期運作,有哪些故障排除步驟?

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

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

要在使用IronPDF的PDF文件中包含頁眉和頁腳,您可以配置渲染選項以新增自定義頁眉和頁腳內容。這使您可以在PDF輸出中包括頁碼或標題等附加資訊。

在Blazor應用程式中能否為需要身份驗證的頁面生成PDF?

是的,IronPDF可以在Blazor應用程式中為需要身份驗證的頁面生成PDF。您需要管理身份驗證Cookie或代幣,以便在使用程式庫功能將其轉換為PDF之前存取受限制的內容。

IronPDF是否與.NET 10相容,以及使用.NET 10帶來了哪些好處?

是的,IronPDF完全相容.NET 10 —它可以開箱即用,而不需要定制的權宜之計、shim或者廢棄的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擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

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

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話