如何將多張圖像合併為一個PDF
IronPDF,一個知名的C#程式庫,可與Blazor應用程式搭配使用。 本篇評論將引導您使用IronPDF在Blazor應用程式中嵌入PDF報告,展示其無縫整合與高效能。
如何在Blazor中建立PDF檔案
- 在Visual Studio中建立一個新的Blazor專案
- 安裝適用於Blazor應用程式的HTML到PDF程式庫
- 透過URL從網頁建立PDF文件
- 從HTML字串建立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"。
在Visual Studio中建立新專案
輸入專案名稱並選擇文件路徑。 然後,點擊建立按鈕。
選擇新Blazor應用程式的名稱和位置
選擇所需的.NET框架(在本教程中我們將使用.NET 6.0),如下圖所示:
在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。
存取Visual Studio的NuGet Package Manager
在"瀏覽"標籤下的搜尋欄位中搜尋"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
該套件現在將被下載並安裝到當前項目中。
使用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
上面的程式碼片段使用了兩種方法從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>
上述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
前面的範例使用了RenderHtmlAsPdf實例方法來將任何HTTP字串轉化為PDF內容。 此外,可以使用SaveAs方法在上述描述的程式中將此內容保存到客戶端的計算機上。
在本教程中建立的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操作這樣的任務。




