跳過到頁腳內容
USING IRONPDF

ASP.NET Display PDF in Panel Using IronPDF

IronPDF 透過伺服器端渲染,允許在 ASP.NET 面板控制項中流暢地顯示 PDF,消除客戶端依賴性,同時提供對所有瀏覽器和平台上的文件產生和呈現的完全程式控制。

當您需要在 ASP.NET 面板控制項中顯示 PDF 時,直接在 ASP.NET Core Web 應用程式中呈現 PDF 文件就成了一個常見但又具有挑戰性的需求。 無論你是建立文件管理系統、報表檢視器或發票顯示,在面板和其他 UI 控制項中顯示 PDF 檔案對於建立一致的使用者體驗至關重要。

IronPDF透過提供與 ASP.NET Core 面板控制項自然整合的伺服器端 PDF 渲染功能,將這項挑戰轉化為簡單的任務。 使用 IronPDF,您可以直接在應用程式的 UI 元素中產生操作和顯示 PDF 文檔,而無需客戶端插件或複雜的配置。 此方法可確保在所有瀏覽器上呈現一致的效果,同時保持對 PDF 內容和顯示行為的完全控制。

IronPDF C# PDF 庫主頁橫幅展示了其主要功能,包括 HTML 轉 PDF、PDF 編輯功能、部署選項和免費試用優惠

IronPDF 如何簡化面板中的 PDF 檔案顯示?

IronPDF透過將渲染過程完全轉移到伺服器端,徹底革新了 ASP.NET Core 中的 PDF 處理方式。這種根本性的方法消除了傳統客戶端 PDF 顯示器帶來的種種痛點,同時透過其Chrome 渲染引擎,為您提供對文件產生和呈現進行高效、程序化控制的途徑。

該庫的伺服器端渲染引擎意味著無論用戶的瀏覽器、作業系統或已安裝的插件如何,您的 PDF 文件都能一致地顯示。 使用者不再需要 Adobe Reader、瀏覽器擴充功能或任何其他第三方軟體即可在您的應用程式中查看 PDF 檔案。 這種通用性在企業環境中尤其有價值,因為企業中的 IT 策略可能會限制插件的安裝。 Chrome PDF 渲染器在將 HTML 轉換為 PDF 時可確保像素級的精確度。

IronPDF 的架構也為現代部署場景帶來了顯著優勢。 該庫提供可靠的跨平台支持,可在WindowsLinuxmacOS伺服器上流暢運行。 IronPDF 完全支援容器部署,因此非常適合在Docker 容器或 Kubernetes 叢集中執行的應用程式。 這種靈活性確保您的 PDF 顯示功能在 Azure 或AWS上的開發、測試和生產環境中都能一致地運作。

IronPDF 功能概述,主要分為四大類:建立 PDF、轉換 PDF、編輯 PDF 以及簽名和保護 PDF,每類功能下都有詳細的功能清單。

如何設定 IronPDF 以進行面板顯示?

在 ASP.NET Core 專案中使用 IronPDF 只需幾個簡單的步驟即可開始。 首先,開啟 Visual Studio 並前往解決方案資源管理器。 右鍵點選您的項目,然後選擇"管理 NuGet 套件管理員"來安裝IronPDF NuGet 套件。 您也可以在程式包管理器控制台中執行以下程式碼:

Install-Package IronPdf

套件管理器控制台顯示 IronPdf NuGet 套件的安裝過程,正在下載多個相依性

或者,對於您的.NET Framework 或 .NET Core 應用程序,您可以使用 .NET CLI 下載套件:

dotnet add package IronPdf

安裝完成後,在控制器或服務類別中加入必要的 using 語句以存取IronPDF 命名空間

using IronPdf;
using System;
using System.Web;
using IronPdf;
using System;
using System.Web;
Imports IronPdf
Imports System
Imports System.Web
$vbLabelText   $csharpLabel

為了獲得最佳的面板顯示功能以查看 PDF 文件,請配置您的 ASP.NET MVC 或 Core 應用程式以正確處理 PDF 內容。 在您的 Program.cs 檔案中,請確保您的 Web 應用程式能夠提供靜態檔案並處理相應的 MIME 類型。以下原始碼展示了基本配置:

var builder = WebApplication.CreateBuilder(args);
// Add services to the container
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();
var app = builder.Build();
// Configure the HTTP request pipeline
app.UseStaticFiles();
app.UseRouting();
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
var builder = WebApplication.CreateBuilder(args);
// Add services to the container
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();
var app = builder.Build();
// Configure the HTTP request pipeline
app.UseStaticFiles();
app.UseRouting();
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.Extensions.DependencyInjection

Dim builder = WebApplication.CreateBuilder(args)
' Add services to the container
builder.Services.AddControllersWithViews()
builder.Services.AddRazorPages()

Dim app = builder.Build()
' Configure the HTTP request pipeline
app.UseStaticFiles()
app.UseRouting()
app.MapControllerRoute(
    name:="default",
    pattern:="{controller=Home}/{action=Index}/{id?}")

app.Run()
$vbLabelText   $csharpLabel

此配置為透過 ASP.NET Core 應用程式提供 PDF 內容奠定了基礎。 AddControllersWithViews()服務註冊可確保您的應用程式能夠處理 API 端點和視圖渲染,這對於在面板控制項中顯示 PDF至關重要。 路由配置可讓您為PDF 產生和顯示建立特定的端點,為面板嵌入式 PDF 提供簡潔的 URL。 如需了解更多進階設定選項,請查看我們的完整API 文件

如何在 ASP.NET 面板中直接顯示 PDF 檔案?

在 ASP.NET Core 面板中顯示 PDF 檔案需要建立一個控制器操作,該操作會產生或檢索 PDF 內容並將其直接串流傳輸到瀏覽器。 以下是一個完整的實作範例,示範了在 ASP.NET 面板中渲染 PDF 頁面的核心功能。 這段程式碼片段展示了完整的解決方案:

[ApiController]
[Route("api/[controller]")]
public class PdfPanelController : ControllerBase
{
    [HttpGet("display/{documentId}")]
    public IActionResult DisplayPdfInPanel(string documentId, object sender, EventArgs e)
    {
        // Create a new Chrome PDF renderer instance
        var renderer = new ChromePdfRenderer();
        // Generate a PDF file from HTML string
        string filename = $"document_{documentId}.pdf";
        var htmlContent = $@"
            <html>
            <head>
                <style>
                    body {{ font-family: Arial, sans-serif; margin: 40px; }}
                    h1 {{ color: #333; }}
                    .content {{ line-height: 1.6; }}
                </style>
            </head>
            <body>
                <h1>Document #{documentId}</h1>
                <div class='content'>
                    <p>This generated PDF file is dynamically created and displayed directly in your panel.</p>
                    <p>Current page generated at: {DateTime.Now:yyyy-MM-dd HH:mm:ss}</p>
                </div>
            </body>
            </html>";
        // Render the HTML string as a PDF document
        using var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        // Convert to byte array for streaming
        byte[] pdfBytes = pdfDocument.BinaryData;
        // Set HTTP header for content disposition
        Response.Headers.Add("Content-Disposition", $"inline; filename={filename}");
        return File(pdfBytes, "application/pdf");
    }
}
[ApiController]
[Route("api/[controller]")]
public class PdfPanelController : ControllerBase
{
    [HttpGet("display/{documentId}")]
    public IActionResult DisplayPdfInPanel(string documentId, object sender, EventArgs e)
    {
        // Create a new Chrome PDF renderer instance
        var renderer = new ChromePdfRenderer();
        // Generate a PDF file from HTML string
        string filename = $"document_{documentId}.pdf";
        var htmlContent = $@"
            <html>
            <head>
                <style>
                    body {{ font-family: Arial, sans-serif; margin: 40px; }}
                    h1 {{ color: #333; }}
                    .content {{ line-height: 1.6; }}
                </style>
            </head>
            <body>
                <h1>Document #{documentId}</h1>
                <div class='content'>
                    <p>This generated PDF file is dynamically created and displayed directly in your panel.</p>
                    <p>Current page generated at: {DateTime.Now:yyyy-MM-dd HH:mm:ss}</p>
                </div>
            </body>
            </html>";
        // Render the HTML string as a PDF document
        using var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        // Convert to byte array for streaming
        byte[] pdfBytes = pdfDocument.BinaryData;
        // Set HTTP header for content disposition
        Response.Headers.Add("Content-Disposition", $"inline; filename={filename}");
        return File(pdfBytes, "application/pdf");
    }
}
Imports Microsoft.AspNetCore.Mvc
Imports System

<ApiController>
<Route("api/[controller]")>
Public Class PdfPanelController
    Inherits ControllerBase

    <HttpGet("display/{documentId}")>
    Public Function DisplayPdfInPanel(documentId As String, sender As Object, e As EventArgs) As IActionResult
        ' Create a new Chrome PDF renderer instance
        Dim renderer As New ChromePdfRenderer()
        ' Generate a PDF file from HTML string
        Dim filename As String = $"document_{documentId}.pdf"
        Dim htmlContent As String = $"
            <html>
            <head>
                <style>
                    body {{ font-family: Arial, sans-serif; margin: 40px; }}
                    h1 {{ color: #333; }}
                    .content {{ line-height: 1.6; }}
                </style>
            </head>
            <body>
                <h1>Document #{documentId}</h1>
                <div class='content'>
                    <p>This generated PDF file is dynamically created and displayed directly in your panel.</p>
                    <p>Current page generated at: {DateTime.Now:yyyy-MM-dd HH:mm:ss}</p>
                </div>
            </body>
            </html>"
        ' Render the HTML string as a PDF document
        Using pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
            ' Convert to byte array for streaming
            Dim pdfBytes As Byte() = pdfDocument.BinaryData
            ' Set HTTP header for content disposition
            Response.Headers.Add("Content-Disposition", $"inline; filename={filename}")
            Return File(pdfBytes, "application/pdf")
        End Using
    End Function
End Class
$vbLabelText   $csharpLabel

以上程式碼示範了在面板中顯示 PDF 檔案的幾個關鍵概念。 ChromePdfRenderer類別作為 IronPDF 在伺服器端的主要渲染引擎,內部使用無頭 Chrome 瀏覽器以確保準確的HTML 到 PDF 轉換。 您可以根據應用程式的資料動態產生 HTML 內容,從而即時建立自訂 PDF 文檔,這些文檔可以在 ASP.NET 面板中完美顯示。

RenderHtmlAsPdf 方法負責處理轉換過程,將您的 HTML 轉換為格式完整的 PDF 文件。 這種方法可以保留CSS 樣式,確保您的 PDF 檔案在面板渲染時保持您指定的視覺設計。 產生的PdfDocument物件透過BinaryData屬性提供 PDF 檔案二進位資料的存取。 對於更複雜的 HTML 結構,您也可以使用模板樣式選項

響應配置對於 ASP.NET 應用程式中面板的正確顯示至關重要。 將Content-Disposition HTTP 標頭設定為"inline"會告訴瀏覽器直接顯示 PDF,而不是提示下載。 這樣就能在面板控制項中流暢地嵌入,從而在 ASP.NET Web 應用程式中查看 PDF 文件時創造流暢的使用者體驗。 您也可以新增頁首和頁尾來改善您的 PDF 檔案。

要在Razor 視圖面板中顯示 PDF 文件,請建立一個支援 runat 伺服器屬性的簡單面板結構:

@page
@model IndexModel
<div class="container mt-4">
    <div class="card">
        <div class="card-header">
            <h3>PDF Display Panel</h3>
        </div>
        <div class="card-body">
            <div class="pdf-panel" style="height: 600px;">
                <iframe src="/api/PdfPanel/display/12345"
                        width="100%"
                        height="100%"
                        frameborder="0"
                        runat="server">
                </iframe>
            </div>
        </div>
    </div>
</div>
@page
@model IndexModel
<div class="container mt-4">
    <div class="card">
        <div class="card-header">
            <h3>PDF Display Panel</h3>
        </div>
        <div class="card-body">
            <div class="pdf-panel" style="height: 600px;">
                <iframe src="/api/PdfPanel/display/12345"
                        width="100%"
                        height="100%"
                        frameborder="0"
                        runat="server">
                </iframe>
            </div>
        </div>
    </div>
</div>
The provided code is a Razor page markup, which is not directly translatable to VB.NET as it is not C# code. Razor pages are used in ASP.NET Core for building web applications and are typically written in a combination of HTML and C#.

If you have any C# code-behind logic or specific C# code within this Razor page that you need converted to VB.NET, please provide that code, and I can assist with the conversion.
$vbLabelText   $csharpLabel

此 HTML 結構建立了一個響應式面板,其中包含一個指向 PDF 端點的iframeiframe顯示伺服器渲染的 PDF 文件,無需任何客戶端 PDF 檢視器庫或插件。 此面板可自動適應不同的螢幕尺寸,同時保持 PDF 頁面的可讀性,使其成為在 ASP.NET Core 應用程式中顯示 PDF 檔案的理想選擇。 如需更多自訂選項,請查閱我們的渲染設定文件。 您還可以實現自訂邊距,以便更好地控制佈局。

產生的PDF檔案是什麼樣子的?

Web 瀏覽器顯示嵌入在 ASP.NET 應用程式中的 PDF 檢視器,顯示帶有產生時間戳記的文件 #12345。

如何將PDF文件與動態面板整合?

動態面板更新和模態彈出顯示需要更複雜的 PDF 整合方法。 根據微軟的ASP.NET Core 文檔,非同步模式對於保持響應式介面至關重要。 以下是如何在響應式使用者介面中實現基於 AJAX 的 PDF 加載,以便在面板中顯示 PDF 文件並進行適當的錯誤處理:

[HttpPost("generate")]
public async Task<IActionResult> GenerateDynamicPdf([FromBody] PdfRequestModel request)
{
    try
    {
        var renderer = new ChromePdfRenderer();
        // Configure rendering options for optimal display
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;
        // Build HTML string from request data
        var htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<html><body>");
        htmlBuilder.Append($"<h2>{request.Title}</h2>");
        htmlBuilder.Append($"<div>{request.Content}</div>");
        // Add any dynamic data tables or charts
        if (request.IncludeData)
        {
            htmlBuilder.Append("<table border='1' style='width:100%;'>");
            foreach (var item in request.DataItems)
            {
                htmlBuilder.Append($"<tr><td>{item.Key}</td><td>{item.Value}</td></tr>");
            }
            htmlBuilder.Append("</table>");
        }
        htmlBuilder.Append("</body></html>");
        // Generate the PDF file asynchronously
        var pdfDocument = await Task.Run(() =>
            renderer.RenderHtmlAsPdf(htmlBuilder.ToString())
        );
        // Return PDF as base64 string for JavaScript handling
        byte[] byteArray = pdfDocument.BinaryData;
        var base64Pdf = Convert.ToBase64String(byteArray);
        return Ok(new { success = true, pdfData = base64Pdf });
    }
    catch (Exception ex)
    {
        return BadRequest(new { success = false, error = ex.Message });
    }
}
[HttpPost("generate")]
public async Task<IActionResult> GenerateDynamicPdf([FromBody] PdfRequestModel request)
{
    try
    {
        var renderer = new ChromePdfRenderer();
        // Configure rendering options for optimal display
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;
        // Build HTML string from request data
        var htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<html><body>");
        htmlBuilder.Append($"<h2>{request.Title}</h2>");
        htmlBuilder.Append($"<div>{request.Content}</div>");
        // Add any dynamic data tables or charts
        if (request.IncludeData)
        {
            htmlBuilder.Append("<table border='1' style='width:100%;'>");
            foreach (var item in request.DataItems)
            {
                htmlBuilder.Append($"<tr><td>{item.Key}</td><td>{item.Value}</td></tr>");
            }
            htmlBuilder.Append("</table>");
        }
        htmlBuilder.Append("</body></html>");
        // Generate the PDF file asynchronously
        var pdfDocument = await Task.Run(() =>
            renderer.RenderHtmlAsPdf(htmlBuilder.ToString())
        );
        // Return PDF as base64 string for JavaScript handling
        byte[] byteArray = pdfDocument.BinaryData;
        var base64Pdf = Convert.ToBase64String(byteArray);
        return Ok(new { success = true, pdfData = base64Pdf });
    }
    catch (Exception ex)
    {
        return BadRequest(new { success = false, error = ex.Message });
    }
}
Imports System.Text
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc

<HttpPost("generate")>
Public Async Function GenerateDynamicPdf(<FromBody> request As PdfRequestModel) As Task(Of IActionResult)
    Try
        Dim renderer As New ChromePdfRenderer()
        ' Configure rendering options for optimal display
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
        renderer.RenderingOptions.MarginTop = 20
        renderer.RenderingOptions.MarginBottom = 20
        renderer.RenderingOptions.MarginLeft = 20
        renderer.RenderingOptions.MarginRight = 20
        ' Build HTML string from request data
        Dim htmlBuilder As New StringBuilder()
        htmlBuilder.Append("<html><body>")
        htmlBuilder.Append($"<h2>{request.Title}</h2>")
        htmlBuilder.Append($"<div>{request.Content}</div>")
        ' Add any dynamic data tables or charts
        If request.IncludeData Then
            htmlBuilder.Append("<table border='1' style='width:100%;'>")
            For Each item In request.DataItems
                htmlBuilder.Append($"<tr><td>{item.Key}</td><td>{item.Value}</td></tr>")
            Next
            htmlBuilder.Append("</table>")
        End If
        htmlBuilder.Append("</body></html>")
        ' Generate the PDF file asynchronously
        Dim pdfDocument = Await Task.Run(Function() renderer.RenderHtmlAsPdf(htmlBuilder.ToString()))
        ' Return PDF as base64 string for JavaScript handling
        Dim byteArray As Byte() = pdfDocument.BinaryData
        Dim base64Pdf = Convert.ToBase64String(byteArray)
        Return Ok(New With {.success = True, .pdfData = base64Pdf})
    Catch ex As Exception
        Return BadRequest(New With {.success = False, .error = ex.Message})
    End Try
End Function
$vbLabelText   $csharpLabel

這種非同步方法可以實現非阻塞式 PDF 生成,這對於在 ASP.NET 面板中渲染 PDF 時保持響應式使用者介面至關重要。 RenderingOptions屬性可以對 PDF 的佈局進行精細控制,包括紙張大小、邊距和方向。 這些設定可確保您的 PDF 檔案在面板限制範圍內以最佳方式顯示。 對於進階場景,您還可以為動態產生的 PDF新增頁首和頁尾

此方法接受包含動態資料的請求模型,示範如何根據使用者輸入或資料庫內容建立 PDF。 HTML 建置流程展示如何以程式設計方式將表格、清單和其他結構化資料融入 PDF 中,使其非常適合在 ASP.NET Core 面板中顯示資料驅動的 PDF。 IronPDF 也支援渲染 JavaScriptCSS ,以處理更複雜的動態內容。

如何處理不同的PDF來源?

IronPDF 擅長從各種來源產生 PDF 文件,每個文件都適用於面板顯示中的不同場景。 讓我們來探討建立和載入 PDF 文件的主要方法:

如何將HTML字串轉換為PDF?

當處理從應用程式資料產生的動態內容時,您可以將 HTML 字串渲染成 PDF 頁面:

[HttpGet("from-html")]
 public IActionResult GenerateFromHtmlString(string reportType)
 {
     var renderer = new ChromePdfRenderer();
     // Load HTML template from your application
     var htmlTemplate = GetHtmlTemplate(reportType);
     // Safely get the user name, fallback to "Unknown" if null
     var userName = User?.Identity?.Name ?? "Unknown";
     // Inject dynamic data into HTML string
     var processedHtml = htmlTemplate
         .Replace("{{DATE}}", DateTime.Now.ToString("yyyy-MM-dd"))
         .Replace("{{USER}}", userName)
         .Replace("{{REPORT_TYPE}}", reportType);
     // Render with custom CSS for specific page formatting
     renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
     var PDF = renderer.RenderHtmlAsPdf(processedHtml);
     // Save the generated PDF file
     string path = $"{reportType}.pdf";
     var webRootPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot");
     var fullPath = Path.Combine(webRootPath, path.TrimStart('/').Replace('/', Path.DirectorySeparatorChar));
     pdf.SaveAs(fullPath);
     return File(pdf.BinaryData, "application/pdf");
 }
 // Add this private method inside the PdfPanel class to resolve CS0103
 private string GetHtmlTemplate(string reportType)
 {
     // Example: return a simple HTML template with placeholders
     return @"
         <html>
         <head>
             <title>{{REPORT_TYPE}} Report</title>
         </head>
         <body>
             <h1>{{REPORT_TYPE}} Report</h1>
             <p>Date: {{DATE}}</p>
             <p>User: {{USER}}</p>
             <div>Report content goes here.</div>
         </body>
         </html>";
 }
[HttpGet("from-html")]
 public IActionResult GenerateFromHtmlString(string reportType)
 {
     var renderer = new ChromePdfRenderer();
     // Load HTML template from your application
     var htmlTemplate = GetHtmlTemplate(reportType);
     // Safely get the user name, fallback to "Unknown" if null
     var userName = User?.Identity?.Name ?? "Unknown";
     // Inject dynamic data into HTML string
     var processedHtml = htmlTemplate
         .Replace("{{DATE}}", DateTime.Now.ToString("yyyy-MM-dd"))
         .Replace("{{USER}}", userName)
         .Replace("{{REPORT_TYPE}}", reportType);
     // Render with custom CSS for specific page formatting
     renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
     var PDF = renderer.RenderHtmlAsPdf(processedHtml);
     // Save the generated PDF file
     string path = $"{reportType}.pdf";
     var webRootPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot");
     var fullPath = Path.Combine(webRootPath, path.TrimStart('/').Replace('/', Path.DirectorySeparatorChar));
     pdf.SaveAs(fullPath);
     return File(pdf.BinaryData, "application/pdf");
 }
 // Add this private method inside the PdfPanel class to resolve CS0103
 private string GetHtmlTemplate(string reportType)
 {
     // Example: return a simple HTML template with placeholders
     return @"
         <html>
         <head>
             <title>{{REPORT_TYPE}} Report</title>
         </head>
         <body>
             <h1>{{REPORT_TYPE}} Report</h1>
             <p>Date: {{DATE}}</p>
             <p>User: {{USER}}</p>
             <div>Report content goes here.</div>
         </body>
         </html>";
 }
Imports System
Imports System.IO
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf

<HttpGet("from-html")>
Public Function GenerateFromHtmlString(reportType As String) As IActionResult
    Dim renderer As New ChromePdfRenderer()
    ' Load HTML template from your application
    Dim htmlTemplate As String = GetHtmlTemplate(reportType)
    ' Safely get the user name, fallback to "Unknown" if null
    Dim userName As String = If(User?.Identity?.Name, "Unknown")
    ' Inject dynamic data into HTML string
    Dim processedHtml As String = htmlTemplate _
        .Replace("{{DATE}}", DateTime.Now.ToString("yyyy-MM-dd")) _
        .Replace("{{USER}}", userName) _
        .Replace("{{REPORT_TYPE}}", reportType)
    ' Render with custom CSS for specific page formatting
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    Dim pdf = renderer.RenderHtmlAsPdf(processedHtml)
    ' Save the generated PDF file
    Dim path As String = $"{reportType}.pdf"
    Dim webRootPath As String = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")
    Dim fullPath As String = Path.Combine(webRootPath, path.TrimStart("/"c).Replace("/"c, Path.DirectorySeparatorChar))
    pdf.SaveAs(fullPath)
    Return File(pdf.BinaryData, "application/pdf")
End Function

' Add this private method inside the PdfPanel class to resolve CS0103
Private Function GetHtmlTemplate(reportType As String) As String
    ' Example: return a simple HTML template with placeholders
    Return "
        <html>
        <head>
            <title>{{REPORT_TYPE}} Report</title>
        </head>
        <body>
            <h1>{{REPORT_TYPE}} Report</h1>
            <p>Date: {{DATE}}</p>
            <p>User: {{USER}}</p>
            <div>Report content goes here.</div>
        </body>
        </html>"
End Function
$vbLabelText   $csharpLabel

此方法演示了基於模板的 PDF 生成。 HTML範本系統可讓您在不同類型的PDF中保持一致的格式,同時注入動態內容。 CssMediaType.Print設定可確保 PDF 使用print-improve CSS 規則,從而產生更清晰、更專業的文檔,並具有正確的分頁符號。 您還可以添加自訂浮水印背景和前景,以達到品牌推廣的目的。

HTML字串轉PDF的輸出結果是什麼樣的呢?

PDF 檢視器正在顯示一份帶有浮水印的 htmltopdf 報告,水印內容包括日期 2025-11-18 和"使用者:未知"字樣,背景為交叉陰影圖案。

如何根據URL產生PDF?

用於將現有網頁或外部內容轉換為在您的 MVC 專案中顯示:

[HttpGet("from-url")]
public async Task<IActionResult> GenerateFromUrl(string encodedUrl)
{
    var url = HttpUtility.UrlDecode(encodedUrl);
    var renderer = new ChromePdfRenderer();
    // Configure for web page capture to display PDF pages
    renderer.RenderingOptions.ViewPortWidth = 1920;
    renderer.RenderingOptions.ViewPortHeight = 1080;
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait for JS execution
    // Generate PDF from URL
    var PDF = await renderer.RenderUrlAsPdfAsync(url);
    // Return the generated PDF file
    string filename = "webpage.pdf";
    Response.Headers.Append("Content-Disposition", $"inline; filename={filename}");
    return File(pdf.BinaryData, "application/pdf");
}
[HttpGet("from-url")]
public async Task<IActionResult> GenerateFromUrl(string encodedUrl)
{
    var url = HttpUtility.UrlDecode(encodedUrl);
    var renderer = new ChromePdfRenderer();
    // Configure for web page capture to display PDF pages
    renderer.RenderingOptions.ViewPortWidth = 1920;
    renderer.RenderingOptions.ViewPortHeight = 1080;
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait for JS execution
    // Generate PDF from URL
    var PDF = await renderer.RenderUrlAsPdfAsync(url);
    // Return the generated PDF file
    string filename = "webpage.pdf";
    Response.Headers.Append("Content-Disposition", $"inline; filename={filename}");
    return File(pdf.BinaryData, "application/pdf");
}
Imports System.Web
Imports Microsoft.AspNetCore.Mvc

<HttpGet("from-url")>
Public Async Function GenerateFromUrl(encodedUrl As String) As Task(Of IActionResult)
    Dim url = HttpUtility.UrlDecode(encodedUrl)
    Dim renderer = New ChromePdfRenderer()
    ' Configure for web page capture to display PDF pages
    renderer.RenderingOptions.ViewPortWidth = 1920
    renderer.RenderingOptions.ViewPortHeight = 1080
    renderer.RenderingOptions.EnableJavaScript = True
    renderer.RenderingOptions.WaitFor.RenderDelay(2000) ' Wait for JS execution
    ' Generate PDF from URL
    Dim pdf = Await renderer.RenderUrlAsPdfAsync(url)
    ' Return the generated PDF file
    Dim filename As String = "webpage.pdf"
    Response.Headers.Append("Content-Disposition", $"inline; filename={filename}")
    Return File(pdf.BinaryData, "application/pdf")
End Function
$vbLabelText   $csharpLabel

URL渲染方法對於擷取現有網頁內容尤其有效。 視窗設定可確保頁面以桌面解析度呈現,而啟用 JavaScript 則允許在產生 PDF 之前載入動態內容。 渲染延遲使單頁應用程式有時間完成初始化,從而確保所有圖像和內容都能正確顯示。 ## 常見的實作注意事項有哪些?

成功實現 PDF 檢視器功能需要專注於幾個關鍵因素,以確保在 ASP.NET 應用程式中渲染 PDF 檔案時在不同場景下都能可靠地運作。 正確實施需要仔細規劃和了解IronPDF 的性能特點

IronPDF 功能概述展示了三大主要優勢:像素級完美渲染、5 分鐘快速設定以及跨平台相容性(提供程式碼範例和支援的平台)

如何確保跨瀏覽器相容性?

現代瀏覽器能夠很好地處理內嵌 PDF 顯示,但要保持一致性需要正確的配置。 使用基於 iframe 的面板顯示時,請務必設定明確的 MIME 類型,並確保 Content-Disposition 標頭允許內嵌框架。 IronPDF 的伺服器端渲染消除了大多數瀏覽器特有的問題,因為 PDF 產生與客戶端瀏覽器的功能無關。 有關詳細的瀏覽器相容性信息,請參閱W3C 標準文件。 預設設定適用於大多數情況。 該庫還支援使用cookie在渲染過程中維護會話狀態。

IronPDF 跨平台支援圖展示了其與 .NET 版本、作業系統、開發環境以及程式語言(包括 C#、F#、VB.NET、Java、Node.js 和 Python)的兼容性

如何有效管理記憶體?

當處理多個 PDF 文件或大型文件時,妥善處置至關重要。 這段程式碼示範了正確的清理和記憶體管理

public IActionResult OptimizedPdfGeneration()
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CreatePdfFormsFromHtml = false;
    var htmlTemplate = GetHtmlTemplate("improve");
    var processedHtml = htmlTemplate
       .Replace("{{DATE}}", DateTime.Now.ToString("yyyy-MM-dd"))
       .Replace("{{USER}}", "Test")
       .Replace("{{REPORT_TYPE}}", "Improve");
    // Create the PDF document
    using (var PDF = renderer.RenderHtmlAsPdf(processedHtml))
    {
        // Process and return immediately
        byte[] byteArray = pdf.BinaryData;
        pdf.SaveAs("output.pdf");
        return File(byteArray, "application/pdf");
    }
}
public IActionResult OptimizedPdfGeneration()
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CreatePdfFormsFromHtml = false;
    var htmlTemplate = GetHtmlTemplate("improve");
    var processedHtml = htmlTemplate
       .Replace("{{DATE}}", DateTime.Now.ToString("yyyy-MM-dd"))
       .Replace("{{USER}}", "Test")
       .Replace("{{REPORT_TYPE}}", "Improve");
    // Create the PDF document
    using (var PDF = renderer.RenderHtmlAsPdf(processedHtml))
    {
        // Process and return immediately
        byte[] byteArray = pdf.BinaryData;
        pdf.SaveAs("output.pdf");
        return File(byteArray, "application/pdf");
    }
}
Public Function OptimizedPdfGeneration() As IActionResult
    Dim renderer = New ChromePdfRenderer()
    renderer.RenderingOptions.CreatePdfFormsFromHtml = False
    Dim htmlTemplate = GetHtmlTemplate("improve")
    Dim processedHtml = htmlTemplate _
        .Replace("{{DATE}}", DateTime.Now.ToString("yyyy-MM-dd")) _
        .Replace("{{USER}}", "Test") _
        .Replace("{{REPORT_TYPE}}", "Improve")
    ' Create the PDF document
    Using PDF = renderer.RenderHtmlAsPdf(processedHtml)
        ' Process and return immediately
        Dim byteArray As Byte() = PDF.BinaryData
        PDF.SaveAs("output.pdf")
        Return File(byteArray, "application/pdf")
    End Using
End Function
$vbLabelText   $csharpLabel

using 語句確保渲染器和PdfDocument物件都能正確釋放,從而防止在高流量情況下出現記憶體洩漏。 請參閱我們的詳細指南,以了解更多關於提升 PDF 效能的資訊。這種方法為記憶體管理提供了最佳解決方案。 您也可以將 PDF 檔案匯出到記憶體流中進行高效處理。

改進PDF生成功能會產生什麼效果?

! PDF 文件檢視器顯示一份"改進報告",日期為 2025-11-18,使用者為"Test",以 100% 縮放比例顯示,並帶有 Iron Software 水印。

哪些是不可或缺的最佳實務?

從動態內容產生 PDF 文件時,請務必驗證使用者輸入,以防止 XSS 攻擊。 對頻繁請求的 PDF 檔案實施適當的快取策略,以降低伺服器負載。 在頻寬受限的環境下,考慮對多頁文件實施漸進式載入。 監控 PDF 產生效能,並對長時間運行的操作實施適當的逾時設定。 IronPDF 的完整文件為生產部署提供了更多指導。 請記住,免費試用這些功能無需信用卡。

使用 Visual Studio 時,請使用解決方案資源管理器來組織與 PDF 相關的原始程式碼。 在解決方案資源管理器中以滑鼠右鍵按一下您的項目,為 PDF 顯示功能新增新的控制器。 將產生的 PDF 檔案儲存在具有適當存取控制的相應目錄中。 考慮在程式碼中加入註釋,以幫助其他開發人員理解 PDF 生成過程。 您也可以使用數位簽章進行文件認證。

對於 ASP.NET MVC 項目,請確保您的系統在嘗試顯示 PDF 時包含適當的錯誤處理。 HTML 的格式直接影響產生的 PDF的品質。 使用首頁提供不同 PDF 檢視器選項的連結。 請務必將重要的配置設定儲存到web.configappsettings.json檔案中。考慮為互動式文件實作PDF 表單,並探索合併或分割 PDF以實現更進階的文件管理。

為什麼選擇 IronPDF 來滿足您的 PDF 顯示需求?

IronPDF 將 ASP.NET 面板控制項中顯示 PDF 的複雜任務簡化為簡單易維護的解決方案。 透過使用伺服器端渲染和與 ASP.NET Core 架構的無縫集成,您可以建立可靠的 PDF 顯示功能,而無需客戶端依賴項或瀏覽器相容性問題。 IronPDF 能夠直接在面板內產生渲染和顯示 PDF 文檔,使其成為現代 Web 應用程式的理想選擇。 IronPDF 支援各種 PDF 版本符合 PDF/A 標準,確保您的文件符合業界標準。

立即開始免費試用,體驗 IronPDF 如何簡化 ASP.NET 應用程式中的 PDF 處理。 無需信用卡即可開始。 對於生產環境部署,請了解我們靈活的授權選項,這些選項可根據您的需求進行擴展。 無論您需要將 HTML 轉換為 PDF編輯現有 PDF實施安全功能,IronPDF 都能提供您進行專業 PDF 管理所需的完整工具。

IronPDF 許可頁面顯示了團隊許可的不同定價層級,從 Lite 版(749 美元)到 Unlimited 版(3,999 美元)不等,並設有開發者、地點和專案限制。

常見問題解答

在 ASP.NET 面板中顯示 PDF 的目的是什麼?

在 ASP.NET 面板中顯示 PDF,可讓開發人員直接將 PDF 文件整合到 Web 應用程式中,為文件管理、報表檢視或發票顯示創造無縫的使用者體驗。

IronPDF 如何幫助在 ASP.NET 中顯示 PDF?

IronPDF for .NET 提供的工具可讓開發人員毫不費力地在 ASP.NET 面板中呈現和顯示 PDF 文件,確保順暢的整合和一致的使用者介面。

使用 IronPDF 在 ASP.NET 應用程式中顯示 PDF 有哪些好處?

使用 IronPDF for .NET 可輕鬆整合 PDF、縮短開發時間,並透過在 UI 控件中提供高品質的 PDF 渲染,增強 ASP.NET 應用程式的功能。

IronPDF 可否用於在 ASP.NET 中建立文件管理系統?

是的,IronPDF 是建立文件管理系統的理想選擇,因為它支援在 ASP.NET 面板中無縫顯示 PDF,增強了直接在網路上管理和檢視文件的能力。

IronPDF 是否與 ASP.NET Core 相容,可顯示 PDF?

IronPDF for .NET 與 ASP.NET Core 完全相容,讓開發人員可以使用面板控制在網頁應用程式中顯示 PDF 文件,確保現代化的網頁整合。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。