跳至页脚内容
使用IRONPDF

如何通过IronPDF在.NET Core中生成PDF

要在 .NET Core 中生成 PDF 文件,可以使用 IronPDF 的 ChromePdfRenderer 将 HTML 字符串、网页或 Razor 视图转换为 PDF 文档,只需几行代码即可,同时保留所有 CSS 样式和 JavaScript 功能。

在 .NET Core 应用程序中创建 PDF 文档是构建需要生成发票、报告和其他业务文档的 Web 应用程序时的常见需求。 IronPDF提供了一个功能齐全的PDF 库,它通过其 Chrome 渲染引擎简化了 ASP.NET Core 中的 PDF 生成,每次都能生成像素级完美的 PDF 文件。在本指南中,您将学习如何在 .NET 10 环境中处理各种 PDF 生成任务,从简单的 HTML 转换到使用 C# 顶级语句生成复杂的报表。

.NET Core 如何生成 PDF 文件?

IronPDF 使用基于 Chrome 的渲染引擎将 HTML 内容转换为 PDF 文件。 这种方法意味着您可以利用现有的 HTML 和 CSS 知识来创建 PDF,而无需学习复杂的底层 PDF API 或应对陡峭的学习曲线。 该库可自动处理网页转换,支持 JavaScript 执行和响应式 CSS 布局。

该库的 API 允许您从 HTML 字符串、URL 或本地 HTML 文件生成 PDF 文档。 IronPDF 在将 HTML 转换为 PDF 时,能够保留复杂的布局、CSS 样式、JavaScript 执行和动态 Web 内容。 对于需要在应用程序中实现可靠PDF 转换功能的.NET 开发人员来说,这是一个实用的选择。

渲染过程采用与 Google Chrome 相同的技术,确保 HTML 到 PDF 的转换效果与用户在现代浏览器中看到的效果一致。 这包括对 CSS3 功能、Web 字体、SVG 图形以及 Flexbox 和 CSS Grid 等现代布局系统的支持。 由于渲染引擎基于 Chrome,因此在开发、测试和生产环境中,输出结果都是可预测且一致的。

如何在 .NET 10 项目中安装 IronPDF?

首先,只需通过 NuGet 包管理器进行一次安装即可开始使用。 根据您的工作流程,您有两种选择。

选项 1:Visual Studio 中的包管理器控制台

Install-Package IronPdf
Install-Package IronPdf
SHELL

选项 2:.NET CLI

dotnet add package IronPdf
dotnet add package IronPdf
SHELL

有关分步安装指南,请参阅NuGet 安装指南

对于 Docker 部署或 Linux 环境,可能需要额外的系统依赖项。 IronPDF 支持 macOS、Windows、Linux、Azure 和 AWS Lambda,使其能够适应各种托管场景。 安装完成后,添加试用许可证密钥即可在开发过程中解锁全部功能。 试用版是免费的,无需信用卡,因此您可以在购买商业许可证之前充分评估该库。

如何从 HTML 字符串生成 PDF?

创建 PDF 最直接的方法是转换 HTML 内容。 以下是一个使用 C# 顶级语句的最小示例:

using IronPdf;

// Instantiate the renderer
var renderer = new ChromePdfRenderer();

// Convert an HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>");

// Save to disk
pdf.SaveAs("hello.pdf");
using IronPdf;

// Instantiate the renderer
var renderer = new ChromePdfRenderer();

// Convert an HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>");

// Save to disk
pdf.SaveAs("hello.pdf");
Imports IronPdf

' Instantiate the renderer
Dim renderer As New ChromePdfRenderer()

' Convert an HTML string to PDF
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>")

' Save to disk
pdf.SaveAs("hello.pdf")
$vbLabelText   $csharpLabel

ChromePdfRenderer 类处理转换过程。 返回的 PdfDocument 对象允许您访问二进制数据、页面计数和输出选项,例如保存到文件或内存流。 您还可以将标题、作者和主题关键词等元数据附加到输出文件中。

渲染器支持多种渲染选项。 您可以配置自定义边距、设置纸张尺寸、控制页面方向和调整视口尺寸。 这些选项可确保 PDF 输出符合专业文档的特定格式要求。

如何使用 CSS 样式创建 PDF 发票?

举个更实际的例子,下面是如何使用 HTML 标记和 CSS 生成样式化的发票文档:

using IronPdf;

var html = @"
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; font-size: 14px; }
        .invoice-header {
            background-color: #2c3e50;
            color: white;
            padding: 20px;
        }
        .invoice-details { margin: 20px 0; }
        table { width: 100%; border-collapse: collapse; }
        th, td {
            padding: 12px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .total {
            font-size: 1.2em;
            font-weight: bold;
            text-align: right;
        }
    </style>
</head>
<body>
    <div class='invoice-header'>
        <h1>Invoice #2026-001</h1>
        <p>Date: February 28, 2026</p>
    </div>
    <div class='invoice-details'>
        <h3>Bill To: Jane Smith</h3>
        <table>
            <tr>
                <th>Item</th>
                <th>Quantity</th>
                <th>Price</th>
            </tr>
            <tr>
                <td>Professional License</td>
                <td>1</td>
                <td>$749.00</td>
            </tr>
        </table>
        <p class='total'>Total: $749.00</p>
    </div>
</body>
</html>";

var renderer = new ChromePdfRenderer();

// Apply custom margins
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
using IronPdf;

var html = @"
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; font-size: 14px; }
        .invoice-header {
            background-color: #2c3e50;
            color: white;
            padding: 20px;
        }
        .invoice-details { margin: 20px 0; }
        table { width: 100%; border-collapse: collapse; }
        th, td {
            padding: 12px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .total {
            font-size: 1.2em;
            font-weight: bold;
            text-align: right;
        }
    </style>
</head>
<body>
    <div class='invoice-header'>
        <h1>Invoice #2026-001</h1>
        <p>Date: February 28, 2026</p>
    </div>
    <div class='invoice-details'>
        <h3>Bill To: Jane Smith</h3>
        <table>
            <tr>
                <th>Item</th>
                <th>Quantity</th>
                <th>Price</th>
            </tr>
            <tr>
                <td>Professional License</td>
                <td>1</td>
                <td>$749.00</td>
            </tr>
        </table>
        <p class='total'>Total: $749.00</p>
    </div>
</body>
</html>";

var renderer = new ChromePdfRenderer();

// Apply custom margins
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
Imports IronPdf

Dim html As String = "
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; font-size: 14px; }
        .invoice-header {
            background-color: #2c3e50;
            color: white;
            padding: 20px;
        }
        .invoice-details { margin: 20px 0; }
        table { width: 100%; border-collapse: collapse; }
        th, td {
            padding: 12px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .total {
            font-size: 1.2em;
            font-weight: bold;
            text-align: right;
        }
    </style>
</head>
<body>
    <div class='invoice-header'>
        <h1>Invoice #2026-001</h1>
        <p>Date: February 28, 2026</p>
    </div>
    <div class='invoice-details'>
        <h3>Bill To: Jane Smith</h3>
        <table>
            <tr>
                <th>Item</th>
                <th>Quantity</th>
                <th>Price</th>
            </tr>
            <tr>
                <td>Professional License</td>
                <td>1</td>
                <td>$749.00</td>
            </tr>
        </table>
        <p class='total'>Total: $749.00</p>
    </div>
</body>
</html>"

Dim renderer As New ChromePdfRenderer()

' Apply custom margins
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10

Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")
$vbLabelText   $csharpLabel

此示例展示了 IronPDF 处理复杂布局和 CSS 样式的能力,包括字体系列设置、背景颜色和表格格式。 该库处理 HTML 标记并生成与源文档视觉外观相匹配的 PDF。

为了改善排版效果,IronPDF 支持 Google Fonts 和网页图标字体,让您能够创建视觉效果精美的 PDF 文件。 该库还支持分层文档设计。 您可以为现有 PDF 文件添加自定义水印或图章内容。

生成的PDF发票是什么样子的?

![PDF 发票显示发票 #2026-001,日期为 2026 年 2 月 28 日,显示购买专业许可证的价格为 749.00 美元,标题部分为深蓝色。 该发票展示了从 HTML 到 PDF 转换过程中保留的 CSS 样式,包括自定义字体、颜色和表格格式。

如何将网页 URL 转换为 PDF?

IronPDF 可以通过向渲染器传递 URL 来从实时网页生成 PDF。 当您需要动态捕获网页内容或存档公共页面时,这非常有用:

using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure viewport and JavaScript settings
renderer.RenderingOptions.ViewPortWidth = 1920;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
renderer.RenderingOptions.WaitFor.RenderDelay(1500); // Allow dynamic content to load

// Render the URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://example.com");

// Save to disk
pdf.SaveAs("webpage.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure viewport and JavaScript settings
renderer.RenderingOptions.ViewPortWidth = 1920;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
renderer.RenderingOptions.WaitFor.RenderDelay(1500); // Allow dynamic content to load

// Render the URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://example.com");

// Save to disk
pdf.SaveAs("webpage.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' Configure viewport and JavaScript settings
renderer.RenderingOptions.ViewPortWidth = 1920
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
renderer.RenderingOptions.WaitFor.RenderDelay(1500) ' Allow dynamic content to load

' Render the URL to PDF
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")

' Save to disk
pdf.SaveAs("webpage.pdf")
$vbLabelText   $csharpLabel

RenderDelay 设置确保 JavaScript 驱动的内容(图表、延迟加载的图像、动态表格)在捕获 PDF 之前完成渲染。 您还可以配置 WaitFor 条件,以等待特定的 DOM 元素或网络请求完成。 对于需要身份验证的页面,该库支持 HTTP 请求标头和自定义 cookie。

对于使用 Angular 或 React 构建的复杂单页应用程序,额外的等待条件有助于确保在拍摄 PDF 快照之前完成所有客户端渲染。

![分屏比较,左侧显示浏览器中渲染的网页,右侧显示使用 .NET Core 中的 IronPDF 将其转换为 PDF 的结果。 PDF 版本保留了所有格式、图像和布局结构,展现了高保真 HTML 到 PDF 的转换效果。

如何将 PDF 生成功能集成到 ASP.NET Core 控制器中?

在 ASP.NET Core Web API 中生成 PDF 文件非常简单。 以下示例展示了一个控制器操作,该操作会生成一个 HTML 报告并将其作为文件下载返回:

using Microsoft.AspNetCore.Mvc;
using IronPdf;

[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
    [HttpGet("generate-report")]
    public IActionResult GenerateReport()
    {
        var html = @"
            <h1>Monthly Sales Report</h1>
            <p>Generated on: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
            <table>
                <tr><th>Product</th><th>Sales</th></tr>
                <tr><td>Product A</td><td>$5,000</td></tr>
                <tr><td>Product B</td><td>$3,500</td></tr>
            </table>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);

        // Return the PDF bytes as a downloadable file
        return File(pdf.BinaryData, "application/pdf", "monthly-report.pdf");
    }
}
using Microsoft.AspNetCore.Mvc;
using IronPdf;

[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
    [HttpGet("generate-report")]
    public IActionResult GenerateReport()
    {
        var html = @"
            <h1>Monthly Sales Report</h1>
            <p>Generated on: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
            <table>
                <tr><th>Product</th><th>Sales</th></tr>
                <tr><td>Product A</td><td>$5,000</td></tr>
                <tr><td>Product B</td><td>$3,500</td></tr>
            </table>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);

        // Return the PDF bytes as a downloadable file
        return File(pdf.BinaryData, "application/pdf", "monthly-report.pdf");
    }
}
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf

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

    <HttpGet("generate-report")>
    Public Function GenerateReport() As IActionResult
        Dim html As String = "
            <h1>Monthly Sales Report</h1>
            <p>Generated on: " & DateTime.Now.ToString("MMMM dd, yyyy") & "</p>
            <table>
                <tr><th>Product</th><th>Sales</th></tr>
                <tr><td>Product A</td><td>$5,000</td></tr>
                <tr><td>Product B</td><td>$3,500</td></tr>
            </table>"

        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(html)

        ' Return the PDF bytes as a downloadable file
        Return File(pdf.BinaryData, "application/pdf", "monthly-report.pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

返回类型 File() 告诉 ASP.NET Core 将原始 PDF 字节流式传输到客户端浏览器,并带有正确的 MIME 类型。 客户将收到一个可下载的PDF文件,磁盘上没有任何中间文件。 您可以为每页添加页眉和页脚,或者为草稿或机密文档添加水印

对于生产应用,请考虑使用异步 PDF 生成来保持请求管道不阻塞,尤其是在生成大型或复杂文档时。

如何在MVC中将Razor视图渲染成PDF?

对于 MVC 应用程序,您可以将 Razor 视图渲染为 HTML 字符串,然后将其转换为 PDF。 此模式将您的文档模板保存在标准的 .cshtml 文件中:

[HttpGet]
public async Task<IActionResult> DownloadInvoice(int id)
{
    // Fetch invoice data from the database
    var model = await GetInvoiceData(id);

    // Render the Razor view to an HTML string
    var html = await RenderViewToString("Invoice", model);

    // Convert the rendered HTML到PDF
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Return the file to the browser
    return File(pdf.BinaryData, "application/pdf", $"invoice-{id}.pdf");
}
[HttpGet]
public async Task<IActionResult> DownloadInvoice(int id)
{
    // Fetch invoice data from the database
    var model = await GetInvoiceData(id);

    // Render the Razor view to an HTML string
    var html = await RenderViewToString("Invoice", model);

    // Convert the rendered HTML到PDF
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Return the file to the browser
    return File(pdf.BinaryData, "application/pdf", $"invoice-{id}.pdf");
}
<AttributeUsage(AttributeTargets.Method)>
Public Class HttpGetAttribute
    Inherits Attribute
End Class

<HttpGet>
Public Async Function DownloadInvoice(id As Integer) As Task(Of IActionResult)
    ' Fetch invoice data from the database
    Dim model = Await GetInvoiceData(id)

    ' Render the Razor view to an HTML string
    Dim html = Await RenderViewToString("Invoice", model)

    ' Convert the rendered HTML to PDF
    Dim renderer = New ChromePdfRenderer()
    Dim pdf = renderer.RenderHtmlAsPdf(html)

    ' Return the file to the browser
    Return File(pdf.BinaryData, "application/pdf", $"invoice-{id}.pdf")
End Function
$vbLabelText   $csharpLabel

这种方法允许您使用模型绑定和部分视图,将发票或报表模板维护为普通的 Razor 视图。 RenderViewToString 辅助方法(MVC 项目中的常用工具)将视图转换为 IronPDF 随后处理的纯 HTML 字符串。 对于 Razor Pages 或 Blazor Server 项目,也适用类似的模式。

PDF 查看器显示月度销售报告,其中包含产品 A(5,000 美元)和产品 B(3,500 美元)的销售数据。 该报告展示了由 ASP.NET Core 控制器操作生成的清晰的表格格式和专业的布局。

IronPDF 支持哪些高级 PDF 功能?

除了基本的 HTML 转 PDF 功能外,IronPDF 还提供一系列广泛的文档处理功能:

-合并和拆分:使用合并和拆分 API合并多个 PDF 或提取特定页面。 -数字签名:应用基于证书的数字签名进行文档认证 -文本提取从 PDF 文档中提取文本,用于搜索索引或数据处理。

对于性能要求极高的工作负载,IronPDF 提供异步方法和多线程支持。 该库还支持图像到 PDF 的转换、PDF 压缩和线性化,以加快网页浏览速度。

IronPDF核心功能概述
特征 说明 典型用例
HTML到PDF 将 HTML 字符串、文件或 URL 转换为 PDF 发票、报告、网页存档
Razor 到 PDF 将 Razor 视图 (.cshtml) 渲染为 PDF MVC 和 Razor Pages 应用程序
合并/拆分 合并或拆分 PDF 文档 文档打包、页面提取
数字签名 应用 X.509 证书签名 法律文件、合同工作流程
文本提取 读取现有PDF中的文本内容。 搜索索引、数据迁移
PDF 表单 创建并填写交互式表单字段 自动化数据采集
页眉和页脚 添加页码、日期和自定义文本 专业文档格式

如何在 .NET 10 中开始使用 IronPDF?

IronPDF 让在 .NET Core 中生成 PDF 文件变得简单。 其 Chrome 渲染引擎可确保从 HTML 内容创建 PDF 时的精确保真度,而 API 设计则消除了与 PDF 操作相关的典型复杂性。 该库提供所有功能的完整文档,并支持在 Windows、Linux、macOS、Azure Functions、AWS Lambda 和 Docker 容器上部署。

无论您是创建发票、报告还是文档管理工具,IronPDF 都能提供专业 PDF 创建所需的工具。 查看完整的功能列表,了解该库的全部功能,或查看适合个人开发者和企业团队的许可选项

立即开始免费试用,在您自己的 .NET 10 项目中测试 IronPDF。 试用许可证涵盖所有功能,因此您可以在购买许可证之前评估 PDF 生成、合并、签名、表单填写和文本提取等功能。

如需更多背景信息,请浏览IronPDF 文档主页,其中包含 API 参考、平台指南和涵盖常见 .NET PDF 场景的代码示例


外部参考文献:

常见问题解答

如何在 .NET Core 中生成 PDF 文档?

您可以使用 IronPDF 在 .NET Core 中生成 PDF 文档,该工具允许您使用其先进的 Chrome 渲染引擎从 HTML、URL 和 Razor 视图创建 PDF。

使用 IronPDF 进行 PDF 生成的优势是什么?

IronPDF 提供了若干优势,包括易于集成、支持像素完美渲染和从多种来源如 HTML 和 URL 创建 PDF 的能力,非常适合需要 PDF 生成的 Web 应用程序。

IronPDF可以处理复杂的PDF生成任务吗?

是的,IronPDF 专为处理 .NET 环境中复杂的 PDF 生成任务而设计,为开发人员提供创建详细和准确 PDF 文档所需的工具。

Chrome 渲染引擎在 IronPDF 中的作用是什么?

html 转 pdf asp.net core

IronPDF 适合用于生成发票和报告等业务文档吗?

绝对适合,IronPDF 非常适合用于生成发票和报告等业务文档,提供精确的渲染和对多种文档格式的支持。

IronPDF 可以将哪些类型的输入转换为 PDF?

IronPDF 可以将 HTML、URL 和 Razor 视图等输入转换为 PDF 文档,提供内容创建的灵活性。

IronPDF 支持 ASP.NET Core 应用程序吗?

是的,IronPDF 与 ASP.NET Core 应用程序完全兼容,使开发人员能够无缝集成 PDF 生成功能到他们的 Web 项目中。

IronPDF 在 Web 应用程序中的一些常见用例是什么?

IronPDF 的常见用例包括为 Web 应用程序生成发票、报告及任何其他业务文档所需的 PDF。

Curtis Chau
技术作家

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

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

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我