跳至页脚内容
使用IRONPDF

如何在 ASP 中将 HTML 转换为 PDF

开发人员如何在 ASP.NET Core 中将 HTML 转换为 PDF?

在您的 ASP.NET Core 应用程序中挣扎着获取清晰、精确的报告和发票?您并不孤单。

每个开发人员最终都需要将动态网页内容(例如报告或确认)转换为可靠、可下载的 PDF 版本。 这是生成从发票、详细报告到安全文档格式的一项基本要求。

挑战是什么? 将复杂的 HTML 以及所有的 CSS 和 JavaScript 完美地呈现为 PDF。 这就是 IronPDF 的作用。 我们拥有一个功能强大的 .NET PDF 库,它使用 Chrome 的 HTML 内容渲染引擎来简化 HTML 到 PDF 的转换过程,确保您获得与屏幕上所见完全一致的结果。 只需几行代码,即可轻松将最复杂的 HTML 文件转换为 PDF 文件格式。

准备好看看了吗? 让我们深入了解一下如何使用 IronPDF 处理 ASP 将 HTML 转换为 PDF 的任务。

立即开始免费试用,开始将 HTML 文档转换为 PDF 文档。

开始使用 IronPDF 的步骤是什么?

在您的 ASP.NET Core 项目中安装 IronPDF 只需要在 NuGet 包管理器控制台中执行一条命令:

Install-Package IronPdf
Install-Package IronPdf
SHELL

这个 .NET Framework 库提供全面的 HTML 渲染功能,支持现代 HTML 元素、CSS 样式和 JavaScript 执行。 PDF 转换器可以无缝处理复杂的 HTML 结构和 CSS 属性。 这对于管理各种文档格式至关重要。

如何将 HTML 字符串转换为 PDF 文档?

将 HTML 字符串直接转换为 PDF 文件并不复杂。 以下代码片段创建了一个完整的 ASP.NET Core 控制器,用于将 HTML 内容转换为 PDF 文档:

using Microsoft.AspNetCore.Mvc;
using IronPdf;

namespace HtmlToPdf.Controllers
{
    public class PdfController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        [HttpGet]
        public IActionResult ConvertHtmlStringToPdf()
        {
            string htmlContent = @"
<html>
  <head>
    <title>IronPDF Test</title>
    <style>
      body { font-family: Arial; margin: 40px; }
      h1 { color: #2b5797; }
      table { border-collapse: collapse; width: 100%; margin-top: 20px; }
      th, td { border: 1px solid #ccc; padding: 8px; }
      th { background: #f0f0f0; }
    </style>
  </head>
  <body>
    <h1>IronPDF HTML to PDF Test</h1>
    <p>This is a simple test of converting an HTML string to PDF using IronPDF.</p>
    <table>
      <tr><th>Item</th><th>Price</th></tr>
      <tr><td>Apples</td><td>$1.50</td></tr>
      <tr><td>Bananas</td><td>$0.90</td></tr>
    </table>
    <p><em>End of test document.</em></p>
  </body>
</html>";
            // Initialize the PDF converter
            var renderer = new ChromePdfRenderer();
            // Configure default page size and other settings
            renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
            renderer.RenderingOptions.MarginTop = 20;
            renderer.RenderingOptions.MarginBottom = 20;
            // Convert HTML string to PDF document
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
            // Return PDF file to user, allowing them to download PDF version
            return File(pdfDocument.BinaryData, "application/pdf", "output.pdf");
        }
    }
}
using Microsoft.AspNetCore.Mvc;
using IronPdf;

namespace HtmlToPdf.Controllers
{
    public class PdfController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        [HttpGet]
        public IActionResult ConvertHtmlStringToPdf()
        {
            string htmlContent = @"
<html>
  <head>
    <title>IronPDF Test</title>
    <style>
      body { font-family: Arial; margin: 40px; }
      h1 { color: #2b5797; }
      table { border-collapse: collapse; width: 100%; margin-top: 20px; }
      th, td { border: 1px solid #ccc; padding: 8px; }
      th { background: #f0f0f0; }
    </style>
  </head>
  <body>
    <h1>IronPDF HTML to PDF Test</h1>
    <p>This is a simple test of converting an HTML string to PDF using IronPDF.</p>
    <table>
      <tr><th>Item</th><th>Price</th></tr>
      <tr><td>Apples</td><td>$1.50</td></tr>
      <tr><td>Bananas</td><td>$0.90</td></tr>
    </table>
    <p><em>End of test document.</em></p>
  </body>
</html>";
            // Initialize the PDF converter
            var renderer = new ChromePdfRenderer();
            // Configure default page size and other settings
            renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
            renderer.RenderingOptions.MarginTop = 20;
            renderer.RenderingOptions.MarginBottom = 20;
            // Convert HTML string to PDF document
            var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
            // Return PDF file to user, allowing them to download PDF version
            return File(pdfDocument.BinaryData, "application/pdf", "output.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

输出 PDF 文件

ASP.NET HTML 转 PDF:完整指南(使用 IronPDF):图 1 - ASP.NET 中的简单 HTML 转 PDF 输出

这个代码片段在处理网页时内调用ImportFromUrlChromePdfRenderer类处理转换过程,将 HTML 代码转换为格式正确的 PDF 文件。生成的 PDF 文档直接保留所有来自 HTML 字符串的 HTML 标签、CSS 文件和内联样式。 这个过程对于准确转换 PDF 页面至关重要。

如何将 HTML 文件转换为 PDF 文件?

当处理服务器上的现有 HTML 文件时,IronPDF 可以转换 HTML 文件内容,同时保留所有链接资源。 这种方法完美适用于基于模板的文档生成:

using IronPdf;
using Microsoft.AspNetCore.Mvc;
using System.IO;

namespace YourApp.Controllers
{
    public class DocumentController : Controller
    {
        private readonly IWebHostEnvironment _environment;

        public DocumentController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }

        [HttpGet]
        public IActionResult GeneratePdfFromTemplate(string templateName)
        {
            // Get path to HTML file
            string htmlFilePath = Path.Combine(_environment.WebRootPath, "templates", $"{templateName}.html");
            var renderer = new ChromePdfRenderer();
            // Configure rendering options
            renderer.RenderingOptions.EnableJavaScript = true;
            renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
            // Convert HTML file to PDF
            var pdf = renderer.RenderHtmlFileAsPdf(htmlFilePath);
            // Add headers and footers if needed
            renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
            {
                Height = 25,
                HtmlFragment = "<div style='text-align:center'>Company Report</div>"
            };
            return File(pdf.BinaryData, "application/pdf", $"{templateName}_generated.pdf");
        }
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using System.IO;

namespace YourApp.Controllers
{
    public class DocumentController : Controller
    {
        private readonly IWebHostEnvironment _environment;

        public DocumentController(IWebHostEnvironment environment)
        {
            _environment = environment;
        }

        [HttpGet]
        public IActionResult GeneratePdfFromTemplate(string templateName)
        {
            // Get path to HTML file
            string htmlFilePath = Path.Combine(_environment.WebRootPath, "templates", $"{templateName}.html");
            var renderer = new ChromePdfRenderer();
            // Configure rendering options
            renderer.RenderingOptions.EnableJavaScript = true;
            renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
            // Convert HTML file to PDF
            var pdf = renderer.RenderHtmlFileAsPdf(htmlFilePath);
            // Add headers and footers if needed
            renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
            {
                Height = 25,
                HtmlFragment = "<div style='text-align:center'>Company Report</div>"
            };
            return File(pdf.BinaryData, "application/pdf", $"{templateName}_generated.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

输出PDF

! ASP 将 HTML 转换为 PDF:IronPDF 完整指南:图 2 - HTML 模板文件到 PDF

这种方法从磁盘读取 HTML 文档并在保持 HTML 结构的同时将其转换为 PDF 文件。 PDF 转换过程保留所有的 CSS 属性、图像 URL,甚至复杂的 HTML 元素。 您还可能遇到高级场景,例如设置特定的页面宽度。

IronPDF 如何处理具有表单身份验证的网页?

ASP.NET Core 应用程序通常使用表单身份验证来保护内容。 在转换需要身份验证的 HTML 文档时,IronPDF 可以传递身份验证 cookie:

[Authorize]
public IActionResult ConvertAuthenticatedPage()
{
    var renderer = new ChromePdfRenderer();
    // Get current URL with authentication
    string currentUrl = $"{Request.Scheme}://{Request.Host}/SecureContent";
    // Pass authentication cookie
    var authCookie = Request.Cookies[".AspNetCore.Cookies"];
    if (!string.IsNullOrEmpty(authCookie))
    {
        renderer.RenderingOptions.CustomCssUrl = currentUrl;
    }
    // Convert authenticated page
    var pdf = renderer.RenderUrlAsPdf(currentUrl);
    return File(pdf.BinaryData, "application/pdf", "secure_document.pdf");
}
[Authorize]
public IActionResult ConvertAuthenticatedPage()
{
    var renderer = new ChromePdfRenderer();
    // Get current URL with authentication
    string currentUrl = $"{Request.Scheme}://{Request.Host}/SecureContent";
    // Pass authentication cookie
    var authCookie = Request.Cookies[".AspNetCore.Cookies"];
    if (!string.IsNullOrEmpty(authCookie))
    {
        renderer.RenderingOptions.CustomCssUrl = currentUrl;
    }
    // Convert authenticated page
    var pdf = renderer.RenderUrlAsPdf(currentUrl);
    return File(pdf.BinaryData, "application/pdf", "secure_document.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这个脚本调用ImportFromUrl识别在身份验证后呈现的表格、表单和其他 HTML 内容。 HTTP 状态代码验证确保在 PDF 转换前成功检索页面。 如果 URL 无效或不是 URL,过程将因打开 URL 时出错而失败。 如果 URL 指向相同的虚拟目录,则资源将从指定的 URL 正确解析。

转换 ASPX 文件和动态内容怎么办?

对于旧版 ASPX 文件转换或动态生成的文档,IronPDF 可以无缝处理渲染过程。 这个简单的代码片段可从任何 HTTP 或 HTTPS 地址创建 PDF 页面:

public IActionResult ConvertDynamicContent()
{
    var renderer = new ChromePdfRenderer();
    // Enable JavaScript for dynamic content
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.WaitFor.RenderDelay(1000); // Wait for content to load
    // Handle various HTML tags and dynamic elements
    string dynamicHtml = GenerateDynamicHtml(); // Your method
    var pdf = renderer.RenderHtmlAsPdf(dynamicHtml);
    return File(pdf.BinaryData, "application/pdf", "dynamic.pdf");
}
public IActionResult ConvertDynamicContent()
{
    var renderer = new ChromePdfRenderer();
    // Enable JavaScript for dynamic content
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.WaitFor.RenderDelay(1000); // Wait for content to load
    // Handle various HTML tags and dynamic elements
    string dynamicHtml = GenerateDynamicHtml(); // Your method
    var pdf = renderer.RenderHtmlAsPdf(dynamicHtml);
    return File(pdf.BinaryData, "application/pdf", "dynamic.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

输出

! ASP 将 HTML 转换为 PDF:IronPDF 完整指南:图 3 - 输出 PDF 文件

HTML 到 PDF 转换中常见的问题是确保内容不会在 HTML 中产生不必要的中断。 IronPDF 将此最小化。

如何处理 CSS 样式和高级 HTML 渲染?

IronPDF 的 HTML 渲染引擎支持高级 CSS 样式和 HTML5 功能。 在将 HTML 转换为 PDF 时,库处理 CSS 属性的解释,包括复杂的布局和响应式设计。 PDF 程序化地保持您的网页的视觉保真度,包括 CSS 文件、HTML 标签和 JavaScript 渲染的内容。

转换过程自动处理空白页面、多页和页面大小调整。 它还可以处理特殊场景,例如在奇数页和偶数页或仅在后续奇数页上添加页眉/页脚,或者优雅地处理不存在的页面。 它旨在轻松转换复杂的网络内容。

为什么选择 IronPDF 用于您的 .NET 项目?

IronPDF 作为一个全面的 .NET 库在 HTML 到 PDF 转换方面脱颖而出。 与基本的 PDF 转换器不同,它完全支持现代网络标准,处理从简单的 HTML 字符串到包含表单身份验证的复杂网络应用程序的所有内容。

该库在转换 HTML 文档时表现出色,同时保留了所有格式,使其成为在您的 .NET Core 应用程序中生成专业 PDF 文档的理想选择。 无论您是需要转换 HTML 文件、处理 HTML 内容,还是生成现有 PDF 文档模板的 PDF,IronPDF 提供了无缝 PDF 转换所需的工具。

立即下载 IronPDF ,只需几行代码即可将您的 HTML 内容转换为专业的 PDF 文档。 如需更多支持,请查阅全面的文档API 参考,以充分发挥ASP.NET Core 应用程序中 HTML 到 PDF 转换的潜力。

常见问题解答

开发者如何在 ASP.NET Core 中将 HTML 转换为 PDF?

在 ASP.NET Core 中,开发者可以使用 IronPDF 将 HTML 转换为 PDF。IronPDF 提供了一个简单易用的 API,用于将 HTML 内容渲染成 PDF 文档。这包括将 HTML 字符串、文件,甚至经过身份验证的网页转换为 PDF。

IronPDF进行HTML到PDF转换的关键功能是什么?

IronPDF 提供诸多关键功能,例如支持 HTML5、CSS、JavaScript 和复杂的页面布局。它还允许开发人员轻松地将 HTML 字符串、URL 和本地 HTML 文件转换为 PDF 文档。

IronPDF在转换过程中能否处理已认证的网页?

是的,IronPDF可以处理需要身份验证的网页。它支持转换需要身份验证的页面,确保从受保护的网页内容安全准确地生成PDF文件。

IronPDF 如何保证转换后的 PDF 文件质量?

IronPDF 利用先进的渲染引擎,精确渲染 HTML 内容(包括样式、字体和图像),从而确保高质量的 PDF 输出。这保证了最终生成的 PDF 文件与原始 HTML 布局高度一致。

是否可以使用 IronPDF 将 HTML 字符串转换为 PDF?

是的,IronPDF可以直接将HTML字符串转换为PDF文档。此功能对于在Web应用程序中根据HTML内容动态生成PDF非常有用。

IronPDF是否支持将本地HTML文件转换为PDF?

IronPDF 支持将本地 HTML 文件转换为 PDF,开发者可以指定文件路径。此功能使得从服务器上存储的静态 HTML 文件生成 PDF 变得非常容易。

IronPDF 支持哪些编程语言?

IronPDF 专为与 C# 和 VB.NET 配合使用而设计,因此非常适合在 .NET 生态系统中工作的开发人员,以便为其应用程序添加 PDF 生成功能。

IronPDF 能否处理复杂的 HTML 布局和样式?

是的,IronPDF 能够处理复杂的 HTML 布局和样式,包括 CSS 和 JavaScript,确保生成的 PDF 保持原始网页的设计和功能。

在 ASP.NET 应用程序中,将 HTML 转换为 PDF 有哪些应用场景?

一些应用场景包括从网页生成发票、报告和文档,存档网页内容,以及创建可供离线使用的网页 PDF 版本。

IronPDF 与其他 HTML 转 PDF 工具相比如何?

IronPDF 以其易用性、强大的功能集以及对各种 HTML 元素和身份验证的出色支持而脱颖而出,为寻求高质量 PDF 生成的开发人员提供了一个可靠的解决方案。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。