使用IRONPDF 如何使用 IronPDF 在 ASP.NET Web 应用程序中创建 PDF 查看器 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文档的Web应用程序很简单。 无论您是展示发票、报告还是交互式表单,用户都希望获得流畅的浏览器内文档查看体验——无需 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 Viewer 控件? 在 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 设置为内联,浏览器就会显示而不是下载 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 for .NET 在 ASP.NET Web 应用程序中创建 PDF 查看器非常简单。 通过将强大的渲染引擎与浏览器内置的 PDF 查看器相结合,您可以获得在 Web 应用程序中显示、处理和管理 PDF 文件的专业解决方案。 无论您是转换 HTML 、 URL还是Razor 视图,该实现方式都只需编写最少的代码即可提供最大的功能。 对于生产环境部署,请考虑以下因素: 设置 PDF 生成指标的监控和日志记录 为频繁访问的PDF文件实施缓存策略 使用CDN 分发进行全球 PDF 交付 根据 PDF 生成负载配置自动缩放策略 准备好在您的项目中实施 PDF 浏览了吗? 从免费试用 IronPDF 开始,改变您的 .NET Core Web 应用程序处理文档的方式。 对于生产部署,请查看适合您团队需求的许可选项。 想看更多转化率示例吗? 了解 IronPDF 如何处理DOCX 到 PDF 的转换、图像到 PDF 的转换等等,请参阅这些有用的操作指南。 立即开始使用 IronPDF。 免费开始 常见问题解答 如何在 ASP.NET 网络应用程序中创建 PDF 查看器? 您可以使用 IronPDF 在 ASP.NET Web 应用程序中创建一个 PDF 查看器。它能让您直接在应用程序中显示 PDF 文档,提供无缝的查看体验,而无需使用 Adobe Acrobat Reader 等外部工具。 在 ASP.NET 中使用 IronPDF 查看 PDF 有哪些好处? IronPDF 可在 ASP.NET 应用程序中提供流畅的集成 PDF 查看体验。它允许您以内联方式显示文档,支持各种文件类型,无需第三方 PDF 查看器,从而增强了用户体验。 能否在 ASP.NET 网络应用程序中显示交互式 PDF 表单? 是的,使用 IronPDF,您可以在 ASP.NET Web 应用程序中显示交互式 PDF 表单。它支持表单字段和交互式元素的渲染,允许用户直接在浏览器中与文档进行交互。 是否可以在 ASP.NET 中使用 IronPDF 展示发票和报告? 当然,IronPDF 非常适合在 ASP.NET 应用程序中显示发票、报告和其他文档类型。它能确保在网络应用程序中准确高效地呈现文档。 在使用 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 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 相关文章 已更新2026年1月22日 如何使用 IronPDF 在 .NET 中创建 PDF 文档:完整指南 发现为开发人员创建PDF文件的有效方法。提升您的编码技能并简化您的项目。立即阅读文章! 阅读更多 已更新2026年1月21日 如何在 VB.NET 中合并 PDF 文件:完整教程 使用IronPDF合并PDF VB NET。学习使用简单的VB.NET代码将多个PDF文件合并为一个文档。包括逐步示例。 阅读更多 已更新2026年1月21日 C# PDFWriter 教程:在 .NET 中创建 PDF 文档 使用这份逐步指南了解如何高效地使用C# PDFWriter创建PDF。阅读文章提升您的技能! 阅读更多 如何使用 IronPDF for .NET 在新窗口 ASP.NET C# 中打开 PDFVB .NET 在 PictureBox 中显示 PD...
已更新2026年1月21日 如何在 VB.NET 中合并 PDF 文件:完整教程 使用IronPDF合并PDF VB NET。学习使用简单的VB.NET代码将多个PDF文件合并为一个文档。包括逐步示例。 阅读更多