USING IRONPDF How to Create a PDF Viewer in ASP.NET Web Application with IronPDF Curtis Chau 更新:2025年12月4日 下載 IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 IronPDF 透過產生伺服器端 PDF,直接在瀏覽器的內建檢視器中顯示,在 ASP.NET Core 應用程式中實現無縫的 PDF 檢視,無需外掛程式或外部相依性-只需配置回應標頭,然後讓 IronPDF基於 Chrome 的渲染引擎處理HTML 到 PDF 的轉換即可。 建立用於顯示PDF文件的網路應用程式很簡單。 無論您是展示發票、報告還是互動式表單,使用者都希望獲得流暢的瀏覽器內文件檢視體驗—無需 Adobe Acrobat Reader 或其他第三方工具。 IronPDF 讓這一切變得異常簡單。 這個經常更新的.NET 程式庫可讓您使用幾行程式碼在 ASP.NET Core 專案中建立、渲染和顯示 PDF 檔案。 讓我們深入了解如何實現一個專業的PDF 檢視器控件,它可以處理從簡單的HTML 轉換到複雜的Razor 視圖的一切操作。 基於瀏覽器的PDF檢視是如何運作的? 好消息是:現代瀏覽器已經內建了 PDF 檢視器。 當您的伺服器傳送的 PDF 檔案具有正確的 MIME 類型( application/pdf )時,瀏覽器會自動將其內嵌顯示。這意味著您無需外部插件或複雜的客戶端 JavaScript 程式庫即可查看 PDF 文件。 關鍵在於產生高品質的PDF文件並配置正確的回應標頭。 IronPDF 在伺服器端處理繁重的工作,使用其Chrome 渲染引擎從 HTML、CSS 和JavaScript創建像素級完美的PDF 頁面。 結果如何? 您的使用者將獲得原生文件檢視器體驗,具備文字選擇、搜尋、列印和下載等功能,而無需任何額外的 UI 配置。 您可以輕鬆地嵌入和顯示內容。 這種方法可以無縫地應用於所有.NET 應用程序,無論您是使用ASP.NET Core MVC 、 Razor 視圖構建,還是使用傳統的 Web 資料夾專案構建。 對於容器化部署,IronPDF 提供出色的Docker 支持,依賴項極少,使其成為微服務架構的理想選擇。 如何安裝和設定 PDF 檢視器控制項? 在 Visual Studio 中開始使用 IronPDF 只需幾個步驟。 開啟您的 ASP.NET Core 專案並安裝NuGet 套件: Install-Package IronPdf 對於容器化環境,IronPDF 提供官方 Docker 映像,並支援Linux和Windows 容器。 該程式庫會自動處理Chrome 依賴項和字型安裝,從而最大限度地降低部署複雜度。 接下來,在Program.cs中新增您的許可證金鑰配置: IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY" $vbLabelText $csharpLabel 對於Azure 部署,您可以將許可證金鑰儲存在 Azure Key Vault 或環境變數中。 IronPDF 也支援AWS Lambda和其他雲端平台,並優化了效能設定。 這就是將 IronPDF 完全整合到您的.NET 應用程式中所需的所有設定。 有關Azure 部署或Docker 容器等進階場景的其他設定選項,請參閱IronPDF 的文件。 您可以先免費試用,在正式購買前體驗所有功能。 如何從 HTML 產生和顯示 PDF 文件? 在 ASP.NET Core Web 應用程式中建立 PDF 檢視器的最簡單方法是直接轉換 HTML 字串。 以下是一個完整的容器編排控制器範例,其中包含健康檢查端點: using IronPdf; using Microsoft.AspNetCore.Mvc; public class PdfController : Controller { private readonly ChromePdfRenderer _renderer; public PdfController() { _renderer = new ChromePdfRenderer(); // Configure for container environments _renderer.RenderingOptions.WaitFor.RenderDelay = 100; // ms _renderer.RenderingOptions.Timeout = 30000; // 30 seconds } public IActionResult DisplayFromHtml() { // Create PDF from HTML with CSS styling var html = @" <html> <head> <style> body { font-family: Arial; padding: 20px; } h1 { color: #2c3e50; } .content { line-height: 1.6; } </style> </head> <body> <h1>Sample PDF Document</h1> <p class='content'>This PDF was generated using IronPDF in ASP.NET Core.</p> </body> </html>"; var pdf = _renderer.RenderHtmlAsPdf(html); // Display PDF inline in browser Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf"); return File(pdf.BinaryData, "application/pdf"); } // Health check endpoint for Kubernetes readiness probe [HttpGet("health")] public IActionResult Health() { try { var test = _renderer.RenderHtmlAsPdf("<p>Health check</p>"); return Ok(new { status = "healthy", engine = "ready" }); } catch { return StatusCode(503, new { status = "unhealthy" }); } } } using IronPdf; using Microsoft.AspNetCore.Mvc; public class PdfController : Controller { private readonly ChromePdfRenderer _renderer; public PdfController() { _renderer = new ChromePdfRenderer(); // Configure for container environments _renderer.RenderingOptions.WaitFor.RenderDelay = 100; // ms _renderer.RenderingOptions.Timeout = 30000; // 30 seconds } public IActionResult DisplayFromHtml() { // Create PDF from HTML with CSS styling var html = @" <html> <head> <style> body { font-family: Arial; padding: 20px; } h1 { color: #2c3e50; } .content { line-height: 1.6; } </style> </head> <body> <h1>Sample PDF Document</h1> <p class='content'>This PDF was generated using IronPDF in ASP.NET Core.</p> </body> </html>"; var pdf = _renderer.RenderHtmlAsPdf(html); // Display PDF inline in browser Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf"); return File(pdf.BinaryData, "application/pdf"); } // Health check endpoint for Kubernetes readiness probe [HttpGet("health")] public IActionResult Health() { try { var test = _renderer.RenderHtmlAsPdf("<p>Health check</p>"); return Ok(new { status = "healthy", engine = "ready" }); } catch { return StatusCode(503, new { status = "unhealthy" }); } } } Imports IronPdf Imports Microsoft.AspNetCore.Mvc Public Class PdfController Inherits Controller Private ReadOnly _renderer As ChromePdfRenderer Public Sub New() _renderer = New ChromePdfRenderer() ' Configure for container environments _renderer.RenderingOptions.WaitFor.RenderDelay = 100 ' ms _renderer.RenderingOptions.Timeout = 30000 ' 30 seconds End Sub Public Function DisplayFromHtml() As IActionResult ' Create PDF from HTML with CSS styling Dim html As String = " <html> <head> <style> body { font-family: Arial; padding: 20px; } h1 { color: #2c3e50; } .content { line-height: 1.6; } </style> </head> <body> <h1>Sample PDF Document</h1> <p class='content'>This PDF was generated using IronPDF in ASP.NET Core.</p> </body> </html>" Dim pdf = _renderer.RenderHtmlAsPdf(html) ' Display PDF inline in browser Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf") Return File(pdf.BinaryData, "application/pdf") End Function ' Health check endpoint for Kubernetes readiness probe <HttpGet("health")> Public Function Health() As IActionResult Try Dim test = _renderer.RenderHtmlAsPdf("<p>Health check</p>") Return Ok(New With {Key .status = "healthy", Key .engine = "ready"}) Catch Return StatusCode(503, New With {Key .status = "unhealthy"}) End Try End Function End Class $vbLabelText $csharpLabel 瀏覽器中產生的 PDF 檔案是什麼樣子的? 瀏覽器正在顯示一個標題為"範例 PDF 文件"且文字為"此 PDF 文檔使用 ASP.NET Core 中的 IronPDF 產生"的 PDF 文檔,該文件位於 localhost:7254/Pdf/DisplayFromHtml ChromePdfRenderer類別使用 Chromium 進行精確渲染,確保您的CSS 、 JavaScript和圖像能夠完全按照預期顯示。 將Content-Disposition設為 inline 會告訴瀏覽器直接顯示 PDF 文件,而不是下載它。 這樣就能創造無縫的檢視體驗,使用戶可以直接在您的網頁使用者介面中存取文件。 對於佈局複雜的文檔,您可以在 HTML 中或使用RenderingOptions指定寬度和高度等渲染設定。 WaitFor 選項可確保在容器化環境中正確渲染,因為網路延遲可能會影響資源載入。 如需了解更多 HTML 轉換選項,請查看HTML 字串轉 PDF 指南和效能最佳化技巧。 如何透過 URL 和 Razor 視圖渲染 PDF 檔案? IronPDF也可以將即時網頁轉換為PDF文件。 這非常適合在分散式系統中產生報表或存檔 Web 內容: public IActionResult RenderFromUrl(string url = "___PROTECTED_URL_92___") { var renderer = new ChromePdfRenderer(); // Configure for production environments renderer.RenderingOptions.EnableJavaScript = true; renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print; renderer.RenderingOptions.WaitFor.NetworkIdle = 2000; // Wait for network idle renderer.RenderingOptions.PaperFit.UseChromeDefaultRendering = false; // Consistent across environments var pdf = renderer.RenderUrlAsPdf(url); Response.Headers.Add("Content-Disposition", "inline; filename=webpage.pdf"); // Add caching headers for CDN distribution Response.Headers.Add("Cache-Control", "public, max-age=3600"); return File(pdf.BinaryData, "application/pdf"); } public IActionResult RenderFromUrl(string url = "___PROTECTED_URL_92___") { var renderer = new ChromePdfRenderer(); // Configure for production environments renderer.RenderingOptions.EnableJavaScript = true; renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print; renderer.RenderingOptions.WaitFor.NetworkIdle = 2000; // Wait for network idle renderer.RenderingOptions.PaperFit.UseChromeDefaultRendering = false; // Consistent across environments var pdf = renderer.RenderUrlAsPdf(url); Response.Headers.Add("Content-Disposition", "inline; filename=webpage.pdf"); // Add caching headers for CDN distribution Response.Headers.Add("Cache-Control", "public, max-age=3600"); return File(pdf.BinaryData, "application/pdf"); } Public Function RenderFromUrl(Optional url As String = "___PROTECTED_URL_92___") As IActionResult Dim renderer = New ChromePdfRenderer() ' Configure for production environments renderer.RenderingOptions.EnableJavaScript = True renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print renderer.RenderingOptions.WaitFor.NetworkIdle = 2000 ' Wait for network idle renderer.RenderingOptions.PaperFit.UseChromeDefaultRendering = False ' Consistent across environments Dim pdf = renderer.RenderUrlAsPdf(url) Response.Headers.Add("Content-Disposition", "inline; filename=webpage.pdf") ' Add caching headers for CDN distribution Response.Headers.Add("Cache-Control", "public, max-age=3600") Return File(pdf.BinaryData, "application/pdf") End Function $vbLabelText $csharpLabel 基於URL的PDF渲染是如何顯示的? ! 這是使用 IronPDF 在 ASP.NET Web 應用程式中渲染的維基百科首頁的 PDF 檢視器螢幕截圖,顯示了主要頁面內容和導航元素,並保留了完整的 CSS 樣式。 要將Razor 視圖轉換為 PDF ,您需要一個輔助方法先將視圖渲染為 HTML。這種方法可讓您重複使用現有範本進行 Web 顯示和PDF 生成,這對於保持微服務之間的一致性至關重要: public async Task<IActionResult> ViewToPdf() { var invoiceModel = new InvoiceModel { InvoiceNumber = 1001, InvoiceDate = DateTime.Now, CustomerName = "Acme Corp.", Items = new List<ItemModel> { new ItemModel { Description = "Product A", Quantity = 2, UnitPrice = 50.00m }, new ItemModel { Description = "Service B", Quantity = 1, UnitPrice = 150.00m } } }; invoiceModel.TotalAmount = invoiceModel.Items.Sum(i => i.LineTotal); // NOTE: RenderViewToStringAsync uses the Request services and ActionContext var htmlContent = await RenderViewToStringAsync("Invoice", invoiceModel); var renderer = new IronPdf.ChromePdfRenderer(); // Optimize for memory-constrained containers renderer.RenderingOptions.UseMarginsOnHeaderAndFooter = UseMargins.All; renderer.RenderingOptions.MarginTop = renderer.RenderingOptions.MarginBottom = 40; var pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrl: HttpContext.Request.Scheme + "://" + HttpContext.Request.Host); // Add monitoring metrics _logger.LogInformation($"PDF generated: Size={pdf.BinaryData.Length} bytes, Pages={pdf.PageCount}"); return File(pdf.BinaryData, "application/pdf"); } private async Task<string> RenderViewToStringAsync(string viewName, object model) { // Use the current HttpContext's service provider (guaranteed available during a request) var actionContext = new ActionContext(HttpContext, RouteData, ControllerContext.ActionDescriptor); var viewEngine = HttpContext.RequestServices.GetRequiredService<IRazorViewEngine>(); var tempDataFactory = HttpContext.RequestServices.GetRequiredService<ITempDataDictionaryFactory>(); var tempData = tempDataFactory.GetTempData(HttpContext); ViewData.Model = model; var viewResult = viewEngine.FindView(actionContext, viewName, isMainPage: false); if (!viewResult.Success) { // Helpful error for debugging var searchedLocations = string.Join(Environment.NewLine, viewResult.SearchedLocations ?? Array.Empty<string>()); throw new InvalidOperationException($"Couldn't find view '{viewName}'. Searched locations:{Environment.NewLine}{searchedLocations}"); } await using var writer = new StringWriter(); var viewContext = new ViewContext( actionContext, viewResult.View, ViewData, tempData, writer, new HtmlHelperOptions() ); await viewResult.View.RenderAsync(viewContext); return writer.ToString(); } public async Task<IActionResult> ViewToPdf() { var invoiceModel = new InvoiceModel { InvoiceNumber = 1001, InvoiceDate = DateTime.Now, CustomerName = "Acme Corp.", Items = new List<ItemModel> { new ItemModel { Description = "Product A", Quantity = 2, UnitPrice = 50.00m }, new ItemModel { Description = "Service B", Quantity = 1, UnitPrice = 150.00m } } }; invoiceModel.TotalAmount = invoiceModel.Items.Sum(i => i.LineTotal); // NOTE: RenderViewToStringAsync uses the Request services and ActionContext var htmlContent = await RenderViewToStringAsync("Invoice", invoiceModel); var renderer = new IronPdf.ChromePdfRenderer(); // Optimize for memory-constrained containers renderer.RenderingOptions.UseMarginsOnHeaderAndFooter = UseMargins.All; renderer.RenderingOptions.MarginTop = renderer.RenderingOptions.MarginBottom = 40; var pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrl: HttpContext.Request.Scheme + "://" + HttpContext.Request.Host); // Add monitoring metrics _logger.LogInformation($"PDF generated: Size={pdf.BinaryData.Length} bytes, Pages={pdf.PageCount}"); return File(pdf.BinaryData, "application/pdf"); } private async Task<string> RenderViewToStringAsync(string viewName, object model) { // Use the current HttpContext's service provider (guaranteed available during a request) var actionContext = new ActionContext(HttpContext, RouteData, ControllerContext.ActionDescriptor); var viewEngine = HttpContext.RequestServices.GetRequiredService<IRazorViewEngine>(); var tempDataFactory = HttpContext.RequestServices.GetRequiredService<ITempDataDictionaryFactory>(); var tempData = tempDataFactory.GetTempData(HttpContext); ViewData.Model = model; var viewResult = viewEngine.FindView(actionContext, viewName, isMainPage: false); if (!viewResult.Success) { // Helpful error for debugging var searchedLocations = string.Join(Environment.NewLine, viewResult.SearchedLocations ?? Array.Empty<string>()); throw new InvalidOperationException($"Couldn't find view '{viewName}'. Searched locations:{Environment.NewLine}{searchedLocations}"); } await using var writer = new StringWriter(); var viewContext = new ViewContext( actionContext, viewResult.View, ViewData, tempData, writer, new HtmlHelperOptions() ); await viewResult.View.RenderAsync(viewContext); return writer.ToString(); } Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Threading.Tasks Imports Microsoft.AspNetCore.Mvc Imports Microsoft.Extensions.DependencyInjection Imports Microsoft.Extensions.Logging Imports IronPdf Public Class YourController Inherits Controller Private ReadOnly _logger As ILogger(Of YourController) Public Sub New(logger As ILogger(Of YourController)) _logger = logger End Sub Public Async Function ViewToPdf() As Task(Of IActionResult) Dim invoiceModel As New InvoiceModel With { .InvoiceNumber = 1001, .InvoiceDate = DateTime.Now, .CustomerName = "Acme Corp.", .Items = New List(Of ItemModel) From { New ItemModel With {.Description = "Product A", .Quantity = 2, .UnitPrice = 50.0D}, New ItemModel With {.Description = "Service B", .Quantity = 1, .UnitPrice = 150.0D} } } invoiceModel.TotalAmount = invoiceModel.Items.Sum(Function(i) i.LineTotal) ' NOTE: RenderViewToStringAsync uses the Request services and ActionContext Dim htmlContent As String = Await RenderViewToStringAsync("Invoice", invoiceModel) Dim renderer As New ChromePdfRenderer() ' Optimize for memory-constrained containers renderer.RenderingOptions.UseMarginsOnHeaderAndFooter = UseMargins.All renderer.RenderingOptions.MarginTop = 40 renderer.RenderingOptions.MarginBottom = 40 Dim pdf = renderer.RenderHtmlAsPdf(htmlContent, baseUrl:=HttpContext.Request.Scheme & "://" & HttpContext.Request.Host) ' Add monitoring metrics _logger.LogInformation($"PDF generated: Size={pdf.BinaryData.Length} bytes, Pages={pdf.PageCount}") Return File(pdf.BinaryData, "application/pdf") End Function Private Async Function RenderViewToStringAsync(viewName As String, model As Object) As Task(Of String) ' Use the current HttpContext's service provider (guaranteed available during a request) Dim actionContext As New ActionContext(HttpContext, RouteData, ControllerContext.ActionDescriptor) Dim viewEngine = HttpContext.RequestServices.GetRequiredService(Of IRazorViewEngine)() Dim tempDataFactory = HttpContext.RequestServices.GetRequiredService(Of ITempDataDictionaryFactory)() Dim tempData = tempDataFactory.GetTempData(HttpContext) ViewData.Model = model Dim viewResult = viewEngine.FindView(actionContext, viewName, isMainPage:=False) If Not viewResult.Success Then ' Helpful error for debugging Dim searchedLocations = String.Join(Environment.NewLine, viewResult.SearchedLocations ?? Array.Empty(Of String)()) Throw New InvalidOperationException($"Couldn't find view '{viewName}'. Searched locations:{Environment.NewLine}{searchedLocations}") End If Await Using writer As New StringWriter() Dim viewContext As New ViewContext( actionContext, viewResult.View, ViewData, tempData, writer, New HtmlHelperOptions() ) Await viewResult.View.RenderAsync(viewContext) Return writer.ToString() End Using End Function End Class Public Class InvoiceModel Public Property InvoiceNumber As Integer Public Property InvoiceDate As DateTime Public Property CustomerName As String Public Property Items As List(Of ItemModel) Public Property TotalAmount As Decimal End Class Public Class ItemModel Public Property Description As String Public Property Quantity As Integer Public Property UnitPrice As Decimal Public ReadOnly Property LineTotal As Decimal Get Return Quantity * UnitPrice End Get End Property End Class $vbLabelText $csharpLabel Razor View 產生 PDF 的結果是什麼? ! 網頁瀏覽器中顯示的 PDF 發票,發票編號為 1001,寄件人為 Acme 公司,包含兩項,總計 250.00 美元,表示 Razor 視圖到 PDF 的轉換已成功完成。 此輔助方法可確保您有清晰的路徑將Razor 視圖內容渲染為 HTML 字串,然後 IronPDF 可以對其進行轉換。 Razor 轉 PDF 教學詳細介紹了這個工作流程。 對於Blazor 應用程序,類似的方法也適用於元件渲染。 如何處理串流的大型PDF檔案? 在容器化環境中處理大型 PDF 文件時,串流可提高效能並減少記憶體使用。 使用MemoryStream可以有效率地提供檔案服務,同時保持較低的記憶體佔用: public IActionResult StreamLargePdf() { var renderer = new ChromePdfRenderer(); // Configure for memory efficiency renderer.RenderingOptions.CreatePdfFormsFromHtml = false; // Reduce memory if forms not needed var pdf = renderer.RenderHtmlAsPdf("<h1>Large Document</h1><p>Content here...</p>"); // Optional: Compress for reduced bandwidth pdf.CompressImages(80); // 80% quality var stream = new MemoryStream(pdf.BinaryData); // Set response headers for optimal streaming Response.Headers.Add("Content-Length", pdf.BinaryData.Length.ToString()); Response.Headers.Add("Accept-Ranges", "bytes"); return new FileStreamResult(stream, "application/pdf"); } // Async version for better container performance public async Task<IActionResult> StreamLargePdfAsync() { var renderer = new ChromePdfRenderer(); var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Large Document</h1><p>Content here...</p>"); var stream = new MemoryStream(pdf.BinaryData); return new FileStreamResult(stream, "application/pdf"); } public IActionResult StreamLargePdf() { var renderer = new ChromePdfRenderer(); // Configure for memory efficiency renderer.RenderingOptions.CreatePdfFormsFromHtml = false; // Reduce memory if forms not needed var pdf = renderer.RenderHtmlAsPdf("<h1>Large Document</h1><p>Content here...</p>"); // Optional: Compress for reduced bandwidth pdf.CompressImages(80); // 80% quality var stream = new MemoryStream(pdf.BinaryData); // Set response headers for optimal streaming Response.Headers.Add("Content-Length", pdf.BinaryData.Length.ToString()); Response.Headers.Add("Accept-Ranges", "bytes"); return new FileStreamResult(stream, "application/pdf"); } // Async version for better container performance public async Task<IActionResult> StreamLargePdfAsync() { var renderer = new ChromePdfRenderer(); var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Large Document</h1><p>Content here...</p>"); var stream = new MemoryStream(pdf.BinaryData); return new FileStreamResult(stream, "application/pdf"); } Imports System.IO Imports System.Threading.Tasks Imports Microsoft.AspNetCore.Mvc Public Class PdfController Inherits Controller Public Function StreamLargePdf() As IActionResult Dim renderer As New ChromePdfRenderer() ' Configure for memory efficiency renderer.RenderingOptions.CreatePdfFormsFromHtml = False ' Reduce memory if forms not needed Dim pdf = renderer.RenderHtmlAsPdf("<h1>Large Document</h1><p>Content here...</p>") ' Optional: Compress for reduced bandwidth pdf.CompressImages(80) ' 80% quality Dim stream As New MemoryStream(pdf.BinaryData) ' Set response headers for optimal streaming Response.Headers.Add("Content-Length", pdf.BinaryData.Length.ToString()) Response.Headers.Add("Accept-Ranges", "bytes") Return New FileStreamResult(stream, "application/pdf") End Function ' Async version for better container performance Public Async Function StreamLargePdfAsync() As Task(Of IActionResult) Dim renderer As New ChromePdfRenderer() Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Large Document</h1><p>Content here...</p>") Dim stream As New MemoryStream(pdf.BinaryData) Return New FileStreamResult(stream, "application/pdf") End Function End Class $vbLabelText $csharpLabel 對於舊版ASP.NET Web Forms項目,您可以使用事件處理程序並進行適當的資源清理來實現類似的功能: protected void btnGeneratePdf_Click(object sender, EventArgs e) { using (var renderer = new ChromePdfRenderer()) { var pdf = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>"); Response.ContentType = "application/pdf"; Response.BinaryWrite(pdf.BinaryData); Response.End(); } } protected void btnGeneratePdf_Click(object sender, EventArgs e) { using (var renderer = new ChromePdfRenderer()) { var pdf = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>"); Response.ContentType = "application/pdf"; Response.BinaryWrite(pdf.BinaryData); Response.End(); } } Protected Sub btnGeneratePdf_Click(sender As Object, e As EventArgs) Using renderer = New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>") Response.ContentType = "application/pdf" Response.BinaryWrite(pdf.BinaryData) Response.End() End Using End Sub $vbLabelText $csharpLabel 對於高效能場景,在產生多個 PDF 時,請考慮使用非同步方法和平行處理。 IronPDF性能指南提供了詳細的最佳化策略。 此PDF檢視器控制支援哪些功能? 透過利用瀏覽器的原生 PDF 檢視器,您的使用者可自動獲得豐富的功能:文字選擇以複製內容、搜尋功能以查找特定資料、列印選項以產生實體副本以及下載功能以離線存取。 這種方法還可以處理使用者需要上傳現有文件進行檢視、編輯或合併的情況。 IronPDF 的伺服器端處理功能包括JavaScript 執行、 CSS 渲染和表單(包含使用者可以填寫的互動式元素)。 該框架支援標籤助理整合、自訂頁面大小、頁首和頁尾、浮水印,甚至還支援編輯功能。 在安全功能方面,IronPDF 提供加密、數位簽章和PDF/A 合規性,以實現長期存檔。 對於容器化部署,IronPDF 提供: -原生支援 Linux,無需 Wine 或複雜的依賴項 具有預先配置依賴項的 Docker 基礎映像 -遠端引擎部署,用於單獨擴展 PDF 生成規模 編排平台的健康檢查端點 資源受限環境下的記憶體最佳化設置 如需了解完整的功能概述,請瀏覽IronPDF 功能頁面。 下一步實施步驟是什麼? 使用 IronPDF 在 ASP.NET Web 應用程式中建立 PDF 檢視器非常簡單。 透過將強大的渲染引擎與瀏覽器內建的 PDF 檢視器結合,您可以獲得在 Web 應用程式中顯示、處理和管理 PDF 文件的專業解決方案。 無論您是轉換 HTML 、 URL還是Razor 視圖,此實作方式都只需編寫最少的程式碼即可提供最大的功能。 對於生產環境部署,請考慮以下因素: 設定 PDF 產生指標的監控和日誌記錄 為頻繁存取的PDF檔案實施快取策略 使用CDN 分發進行全球 PDF 交付 根據 PDF 產生負載配置自動縮放策略 準備好在您的專案中實現 PDF 查看功能了嗎? 立即開始 IronPDF 的免費試用,改變您的 .NET Core Web 應用程式處理文件的方式。 對於生產環境部署,請查看符合您團隊需求的授權選項。 想看更多轉換率範例嗎? 了解 IronPDF 如何處理DOCX 到 PDF 的轉換、影像到 PDF 的轉換等等,請參閱這些有用的操作指南。 !{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110-- 常見問題解答 如何在 ASP.NET Web 應用程式中建立 PDF 檢視器? 您可以使用 IronPDF 在 ASP.NET Web 應用程式中建立 PDF 檢視器。它可讓您直接在應用程式中顯示 PDF 文件,提供無縫的檢視體驗,而不需要 Adobe Acrobat Reader 等外部工具。 在 ASP.NET 中使用 IronPDF 檢視 PDF 有哪些好處? IronPDF 在 ASP.NET 應用程式中提供流暢且整合的 PDF 檢視體驗。它允許您以內嵌方式顯示文件,支援各種檔案類型,而且不需要第三方 PDF 檢視器,提升了使用者體驗。 我可以在 ASP.NET Web 應用程式中顯示互動式 PDF 表單嗎? 是的,使用 IronPDF,您可以在 ASP.NET Web 應用程式中顯示互動式 PDF 表單。它支援表單欄位和互動元素的渲染,讓使用者可以直接在瀏覽器中與文件互動。 是否可以在 ASP.NET 中使用 IronPDF 展示發票和報表? IronPDF 絕對適合在 ASP.NET 應用程式中顯示發票、報表和其他文件類型。它可以確保您的文件在 Web 應用程式中準確且有效率地呈現。 在使用 IronPDF 的 ASP.NET 應用程式中檢視 PDF 是否需要 Adobe Acrobat Reader? 不,使用 IronPDF for .NET 時,您不需要 Adobe Acrobat Reader 來在 ASP.NET 應用程式中檢視 PDF。它允許您直接在瀏覽器中渲染和檢視 PDF,而無需第三方依賴。 Curtis Chau 立即與工程團隊聊天 技術撰稿人 Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。 相關文章 更新2026年1月22日 How to Create PDF Documents in .NET with IronPDF: Complete Guide Discover effective methods to create PDF files in C# for developers. Enhance your coding skills and streamline your projects. Read the article now! 閱讀更多 更新2026年1月21日 How to Merge PDF Files in VB.NET: Complete Tutorial Merge PDF VB NET with IronPDF. Learn to combine multiple PDF files into one document using simple VB.NET code. Step-by-step examples included. 閱讀更多 更新2026年1月21日 C# PDFWriter Tutorial: Create PDF Documents in .NET Learn to create PDFs efficiently using C# PDFWriter with this step-by-step guide for developers. Read the article to enhance your skills today! 閱讀更多 How to Open PDF in New Window ASP.NET C# with IronPDFVB .NET Display PDF in PictureBox: ...
更新2026年1月22日 How to Create PDF Documents in .NET with IronPDF: Complete Guide Discover effective methods to create PDF files in C# for developers. Enhance your coding skills and streamline your projects. Read the article now! 閱讀更多
更新2026年1月21日 How to Merge PDF Files in VB.NET: Complete Tutorial Merge PDF VB NET with IronPDF. Learn to combine multiple PDF files into one document using simple VB.NET code. Step-by-step examples included. 閱讀更多
更新2026年1月21日 C# PDFWriter Tutorial: Create PDF Documents in .NET Learn to create PDFs efficiently using C# PDFWriter with this step-by-step guide for developers. Read the article to enhance your skills today! 閱讀更多