跳至页脚内容
使用IRONPDF

如何在 ASP 中将 HTML 转换为 PDF

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

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

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

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

准备好看看了吗? 让我们深入研究如何使用 IronPDF 处理 ASP.NET Core HTML 到 PDF 的任务。

Start your free trial and begin converting HTML to PDF documents today.

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

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

Install-Package IronPdf

这个 .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 Core 中将 HTML 转换为 PDF:图 1 - 简单的 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.NET Core 中将 HTML 转换为 PDF:图 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.JavascriptDelay = 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.JavascriptDelay = 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.NET Core 中将 HTML 转换为 PDF:图 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 文档。 For additional support, explore the comprehensive documentation and API reference to unlock the full potential of HTML to PDF conversion in your ASP.NET Core applications.

常见问题解答

如何使用ASP.NET Core将HTML转换为PDF?

您可以在ASP.NET Core中使用IronPDF将HTML字符串、文件,甚至认证网页轻松转换为PDF。

使用 IronPDF 进行 HTML 到 PDF 转换的好处是什么?

IronPDF提供了全面且对开发者友好的API来进行HTML到PDF的转换,提供了如HTML5和CSS3兼容性、支持JavaScript、以及将复杂网页转换为专业质量PDF的功能。

IronPDF可以处理用于PDF转换的HTML字符串吗?

是的,IronPDF可以将HTML字符串直接转换为PDF文档,使在ASP.NET Core应用程序中从动态生成的内容生成PDF变得简单。

是否可以使用IronPDF将认证网页转换为PDF?

IronPDF支持通过允许传递凭证来转换认证网页,使将安全内容转换为PDF文档成为可能。

IronPDF支持将HTML文件转换为PDF吗?

是的,IronPDF可以将HTML文件转换为PDF格式,为处理各种类型的HTML内容转换提供了灵活性。

在HTML到PDF转换期间,IronPDF可以处理什么样的格式?

IronPDF支持高级格式化功能,包括CSS样式、JavaScript执行和复杂布局的渲染,确保转换后的PDF紧密匹配原始HTML布局。

在使用IronPDF时,我可以自定义PDF输出吗?

IronPDF允许广泛的PDF输出自定义,包括设置页眉和页脚、自定义页面尺寸以及控制边距,确保PDF满足您的具体需求。

与HTML到PDF转换兼容的开发环境有哪些?

IronPDF兼容ASP.NET Core,并且可以在C#项目中无缝使用,使得它成为在.NET环境中工作的开发者的多功能工具。

IronPDF如何确保PDF转换过程的安全性?

IronPDF可以通过支持HTTPS和允许使用认证凭证安全地进行HTML到PDF的转换,从而保护转换过程中敏感信息的安全。

在ASP.NET Core项目中使用IronPDF的系统要求是什么?

IronPDF需要一个.NET环境,并设计为可以顺利集成到ASP.NET Core应用程序中,确保为开发者提供无忧的设置和操作。

Curtis Chau
技术作家

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

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