IRONSOFTWAREHOME

HTML 转 PDF 在 C# .NET 中

Jacob Mellor,Team Iron 的首席技术官
Jacob Mellor
Updated: 2026年9月17日

作为 IronPDF 的开发者,我们深知 HTML 到 PDF 转换的重要性,它需要产生准确、高质量的结果以满足客户的期望。本 C# 教程将指导您为您的应用程序、项目和网站构建一个 HTML 到 PDF 转换器。我们将开发一个 C# HTML 到 PDF 转换器,IronPDF 输出的 PDF 文档将与 Google Chrome 浏览器生成的 PDF 完全一致。

  1. 1Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. 2复制并运行这段代码。

    IronPdf.ChromePdfRenderer
           .StaticRenderHtmlAsPdf("<p>Hello World</p>")
           .SaveAs("pixelperfect.pdf");
  3. 3部署到您的生产环境中进行测试

    通过免费试用立即在您的项目中开始使用IronPDF
    arrow pointer

概述


C# 和 VB.NET 的 HTML 到 PDF 转换器

在 .NET 中以编程方式创建 PDF 文件可能是一项令人沮丧的任务。PDF 文档文件格式更适合打印机而不是开发人员。而且 C# 没有许多适合的库或内置的 PDF 生成功能,许多库需要额外的设置,并且在需要多行代码来完成简单任务时会导致进一步的挫折。

我们将在本教程中使用的 C# HTML 到 PDF 转换工具是 Iron Software 的 IronPDF,这是一个非常受欢迎的 C# PDF 生成和编辑库。该库具有完整的 PDF 编辑和生成功能,开箱即用,能够以最少的代码行数完成您需要的操作,并且具有 其 50 多个功能的出色文档。IronPDF 的突出之处在于它支持 .NET 10, .NET 9, .NET 8, .NET 7, .NET 6, 和 .NET 5,.NET Core, .NET Standard, 和 .NET Framework 在 Windows, macOS, Linux, Docker, Azure, 和 AWS 上。

使用 C# 和 IronPDF,“生成 PDF 文档”或“HTML 到 PDF 转换”的逻辑非常简单。由于 IronPDF 的高级 Chrome 渲染器,大部分或所有的 PDF 文档设计和布局将使用现有的 HTML 资产。

这种使用 HTML5 在 .NET 中动态生成 PDF 的方法在控制台应用程序、Windows 窗体应用程序、WPF 以及网站和 MVC 中同样有效。

IronPDF 还支持使用 Chrome 调试您的 HTML 以获得像素完美的 PDF。有关设置此功能的教程可以在 这里 找到。

IronPDF 在 .NET 生态系统内外提供多种语言版本。

IronPDF 对于开发是免费的;部署到生产环境并去除试用水印需要许可证密钥。您可以在 这里购买许可证 或注册 免费的 30 天试用密钥


步骤 1

下载并安装 HTML 到 PDF C# 库

Visual Studio - NuGet 包管理器

在 Visual Studio 中,右键单击您的项目解决方案资源管理器并选择 Manage NuGet Packages...,然后只需搜索 IronPDF 并将最新版本安装到您的解决方案中... 点击任何弹出的对话框中的 OK。这在 VB.NET 项目中同样有效。

PM > Install-Package IronPdf

NuGet 网站上的 IronPDF

有关 IronPDF 的功能、兼容性和下载的完整概述,请查看 NuGet 官方网站上的 IronPDF:https://www.nuget.org/packages/IronPdf

通过 DLL 安装

另一种选择是直接安装 IronPDF DLL。可以从 https://ironpdf.com/packages/IronPdf.zip 下载并手动安装到项目或 GAC 中。


如何教程

在 C# .NET 中使用 HTML 字符串创建 PDF

如何:将 HTML 字符串转换为 PDF? 在 C# 中创建一个新的 PDF 文件是一项非常高效且有益的技能。

我们可以简单地使用 ChromePdfRenderer.RenderHtmlAsPdf 方法将任何 HTML (HTML5) 字符串转换为 PDF。C# HTML 到 PDF 渲染是由 IronPDF NuGet 包附带的 Google Chromium 引擎的完整功能版本进行的。

using IronPdf;

// ChromePdfRenderer turns HTML into a PDF using IronPDF's embedded Chrome engine
var renderer = new ChromePdfRenderer();

// Render an HTML string. The result is a PdfDocument held in memory
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");

// Write the PDF to disk
pdf.SaveAs("pixel-perfect.pdf");

RenderHtmlAsPdf 完全支持 HTML5、CSS3、JavaScript 和图像。如果这些资产在硬盘上,我们可能需要将 RenderHtmlAsPdf 的第二个参数设置为包含这些资产的目录。此方法返回一个 PdfDocument 对象,这是一个用于保存 PDF 信息的类。

IronPDF 将按 Chrome 中的显示方式渲染您的 HTML

我们有一个完整的教程,专门用于让您设置 Chrome 进行完整的 HTML 调试,以确保在编辑 HTML、CSS 和 JavaScript 时看到的更改与选择渲染时 IronPDF 的输出 PDF 完全一致。请在此处找到教程:如何在 Chrome 中调试 HTML 以创建像素完美的 PDF

基本 URL 路径 (BaseUrlOrPath 参数):

using IronPdf;

var renderer = new ChromePdfRenderer();

// The second argument is the base path. Relative URLs in the HTML (the image
// below, but also stylesheets, scripts and fonts) are resolved against it.
var pdf = renderer.RenderHtmlAsPdf("<img src='image1.png'/>", @"C:\MyProject\Assets\");

pdf.SaveAs(@"C:\MyProject\Assets\output.pdf");

所有引用的 CSS 样式表、图像和 JavaScript 文件都将相对于该基本路径,并可以保持在一个整洁且逻辑的结构中。当然,您也可以选择在线引用图像、样式表和资产,包括 Google Fonts 等网络字体,甚至 jQuery。


使用现有 URL 导出 PDF | URL 到 PDF

使用 C# 将现有 URL 渲染为 PDF 非常高效且直观。这也允许团队将 PDF 设计和后端 PDF 渲染工作分配给多个团队。

让我们在以下示例中渲染 Wikipedia.com 的一个页面:

using IronPdf;

var renderer = new ChromePdfRenderer();

// Render a live web page straight from its URL
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");

// The PDF is written next to the executable
pdf.SaveAs("wikipedia.pdf");

您会注意到,我们的 C# 代码生成的 PDF 中保留了超链接甚至 HTML 表单。

在渲染现有网页时,我们可能希望应用一些技巧:

打印和屏幕 CSS

CSS 媒体类型允许页面携带用于打印和屏幕的单独样式。我们可以指示 IronPDF 渲染“打印”CSS,这通常更简单。默认情况下,将渲染“屏幕”CSS 样式,这与您在浏览器中看到的内容相匹配。

using IronPdf;
using IronPdf.Rendering;

var renderer = new ChromePdfRenderer();

// Choose which CSS media type the page is rendered with.
// Screen (the default) renders the page as a browser displays it;
// Print applies the page's @media print rules instead.

// renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

主文章:像素完美 HTML 到 PDF 比较

JavaScript

IronPDF 支持 JavaScript、jQuery 甚至 AJAX。我们可能需要指示 IronPDF 等待 JS 或 ajax 完成运行,然后再渲染我们网页的快照。

using IronPdf;

var renderer = new ChromePdfRenderer();

// Let the page's JavaScript run before the snapshot is taken
renderer.RenderingOptions.EnableJavaScript = true;

// Give scripts and AJAX calls 500 milliseconds to finish before rendering.
// For event-driven pages, WaitFor.NetworkIdle() or WaitFor.JavaScript() wait
// for a signal instead of a fixed delay.
renderer.RenderingOptions.WaitFor.RenderDelay(500);

我们可以通过渲染 d3.js 弦图文档页面 来演示 JavaScript 支持,该页面的图表在页面加载时由 JavaScript 绘制:

using IronPdf;

var renderer = new ChromePdfRenderer();

// The chart is drawn by JavaScript, so let it run and give it a moment to finish
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500);

// Render the d3.js chord-diagram documentation page, whose charts are drawn by JavaScript
var pdf = renderer.RenderUrlAsPdf("https://d3js.org/d3-chord");

pdf.SaveAs("chart.pdf");

响应式 CSS

在 .NET 中使用响应式 CSS 将 HTML 转换为 PDF!响应式网页 设计用于在浏览器中查看。IronPDF 不会在服务器的操作系统中打开真实的浏览器窗口。没有浏览器视口,响应式布局可能会回退到其最窄的断点。

我们建议使用 打印 CSS 媒体类型来解决此问题。打印 CSS 通常不应是响应式的。

using IronPdf;
using IronPdf.Rendering;

var renderer = new ChromePdfRenderer();

// Responsive layouts are designed for a browser viewport, so render the page's
// print stylesheet instead of its screen stylesheet
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

从 HTML 页面生成 PDF

我们还可以将硬盘上的任何 HTML 页面渲染为 PDF。所有相对资产(如 CSS、图像和 js)将被渲染,就像文件是使用 file:// 协议打开的一样。

using IronPdf;

var renderer = new ChromePdfRenderer();

// Render an HTML file from disk. Relative CSS, image and script paths
// resolve against the file's own folder, as if opened with file://
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");

pdf.SaveAs("Invoice.pdf");

这种方法的优点是允许开发人员在开发过程中在浏览器中测试 HTML 内容。我们推荐使用 Chrome,因为它是 IronPDF 的渲染引擎所基于的网络浏览器。

要将 XML 转换为 PDF,您可以使用 XSLT 模板将 XML 内容打印为 PDF


添加自定义页眉和页脚

在渲染时或使用 IronPDF 对现有 PDF 文件添加页眉和页脚。

使用 IronPDF,页眉和页脚可以使用 TextHeaderFooter 类包含简单的基于文本的内容,或者使用 HtmlHeaderFooter 类包含图像和丰富的 HTML 内容。

using IronPdf;
using IronPdf.Rendering;

// Create a PDF from an existing HTML file with rendering options set up front
var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        // Margins are in millimeters
        MarginTop = 50,
        MarginBottom = 50,

        // Render the page's print stylesheet
        CssMediaType = PdfCssMediaType.Print,

        // Plain-text header: the document title, centered, above a divider line
        TextHeader = new TextHeaderFooter
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },

        // Plain-text footer: date and time on the left, page numbers on the right
        TextFooter = new TextHeaderFooter
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        }
    }
};

var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");

pdf.SaveAs("Invoice.pdf");

// Open the result in the default PDF viewer
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
    FileName = "Invoice.pdf",
    UseShellExecute = true
});

在以下操作指南中探索所有渲染选项:如何使用渲染选项

HTML 页眉和页脚

HtmlHeaderFooter 类允许使用 HTML5 内容生成丰富的页眉和页脚,这些内容甚至可以包括图像和样式表。

using IronPdf;

var renderer = new ChromePdfRenderer();

// An HTML footer can carry markup, styles and images.
// {page} and {total-pages} are filled in for every page.
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};

PDF 页眉和页脚中的动态数据

我们可以使用占位符将内容“邮件合并”到页眉和页脚的文本甚至 HTML 中,例如:

  • {page} 表示当前页码
  • {total-pages} 表示 PDF 的总页数
  • {url} 表示从网页渲染的 PDF 的 URL
  • {date} 表示今天的日期
  • {time} 表示当前时间
  • {html-title} 表示渲染的 HTML 文档的 <title>
  • {pdf-title} 表示文档标题,可以通过 ChromePdfRenderOptions 设置

C# HTML 到 PDF 转换设置

我们的用户和客户可能期望 PDF 内容呈现的方式有很多细微差别。
ChromePdfRenderer 类包含一个 RenderingOptions 属性,可用于设置这些选项。

例如,我们可能希望选择仅接受“print”样式的 CSS3 指令:

using IronPdf;
using IronPdf.Rendering;

var renderer = new ChromePdfRenderer();

// Render the page's @media print CSS rather than its screen styles
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

renderer.RenderHtmlAsPdf("<html><body><h1>Hello, World!</h1></body></html>").SaveAs("Output.pdf");

我们还可能希望更改打印边距的大小,以在页面上创建更多空白,以便为大型页眉或页脚腾出空间,甚至为商业印刷宣传册或海报设置零边距:

using IronPdf;

var renderer = new ChromePdfRenderer();

// Page margins in millimeters. Larger margins leave room for headers and
// footers; set them to 0 for edge-to-edge brochures and posters.
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

我们可能希望打开或关闭 HTML 元素的背景图像:

using IronPdf;

var renderer = new ChromePdfRenderer();

// Include CSS background colors and images in the PDF (set false to drop them)
renderer.RenderingOptions.PrintHtmlBackgrounds = true;

var pdf = renderer.RenderHtmlAsPdf("<h1 style='background:#eee'>Hello, PDF!</h1>");

pdf.SaveAs("output.pdf");

还可以将输出 PDF 设置为在任何虚拟纸张尺寸上渲染,包括纵向和横向尺寸,甚至可以设置为以毫米或英寸为单位的自定义尺寸。

using IronPdf;
using IronPdf.Rendering;

var renderer = new ChromePdfRenderer();

// Standard paper sizes and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;

// Or a custom size, in millimeters or inches
// renderer.RenderingOptions.SetCustomPaperSizeinMilimeters(210, 297);
// renderer.RenderingOptions.SetCustomPaperSizeInInches(8.5, 11);

在以下操作指南中探索所有渲染选项:“如何使用渲染选项。”


我最喜欢的这种库是 IronPDF。它允许快速高效地操作 PDF 文件。它还具有许多有价值的功能,比如导出为 PDF/A 格式和数字签名 PDF 文档。

Milan Jovanovic

微软MVP

查看案例研究

IronOCR 意味着我们每年可以节省 $40,000 的人工处理成本,同时提高生产力,并释放资源用于高影响任务。我强烈推荐它。

Brent Matzelle

首席技术官,OPYN

查看案例研究

Iron Suite 在我们的运营中起着至关重要的作用。这些工具提高了业务各方面的效率,包括创建平面图和改善库存管理。

David Jones

首席软件工程师,Agorus Build

查看案例研究

应用 HTML 模板

模板化或“批量创建”PDF 是互联网和网站开发人员的常见需求。

与其模板化 PDF 文档本身,不如使用 IronPDF 我们可以使用现有的、经过验证的技术来模板化我们的 HTML。当 HTML 模板与查询字符串或数据库中的数据结合时,我们最终得到一个动态生成的 PDF 文档。

在最简单的情况下,使用 C# String.Format 方法对于基本示例是有效的。

using IronPdf;

var renderer = new ChromePdfRenderer();

// Insert a value into an HTML template with string.Format
string html = string.Format("<h1>Hello {0}!</h1>", "World");

var pdf = renderer.RenderHtmlAsPdf(html);

pdf.SaveAs("Hello.pdf");

如果 HTML 文件较长,通常我们可以使用任意占位符,例如 [[NAME]],并在稍后用真实数据替换它们。

以下示例将创建 3 个 PDF,每个 PDF 都个性化为一个用户。

using IronPdf;

var renderer = new ChromePdfRenderer();

// A template with a placeholder to replace
var htmlTemplate = "<p>[[NAME]]</p>";

var names = new[] { "John", "James", "Jenny" };

// One personalized PDF per name
foreach (var name in names)
{
    var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);

    var pdf = renderer.RenderHtmlAsPdf(htmlInstance);

    pdf.SaveAs(name + ".pdf");
}

使用 Handlebars.NET 进行高级模板化

将 C# 数据与 HTML 合并以生成 PDF 的一种复杂方法是使用 Handlebars 模板语言。

Handlebars 使得可以从 C# 对象和类实例(包括数据库记录)创建动态 HTML。Handlebars 特别有效的场景是查询可能返回未知数量的行,例如生成发票。

我们必须首先向项目添加一个额外的 NuGet 包:https://www.nuget.org/packages/Handlebars.NET/

using HandlebarsDotNet;

// A Handlebars template with two placeholders
var source =
    @"<div class=""entry"">
        <h1>{{title}}</h1>
        <div class=""body"">
            {{body}}
        </div>
    </div>";

// Compile it once, then fill it with any object that has matching properties
var template = Handlebars.Compile(source);

var data = new { title = "My new post", body = "This is my first post!" };

string html = template(data);

// html now contains:
//
// <div class="entry">
//   <h1>My new post</h1>
//   <div class="body">
//     This is my first post!
//   </div>
// </div>

要渲染此 HTML,我们可以简单地使用 RenderHtmlAsPdf 方法。

using HandlebarsDotNet;
using IronPdf;

// Fill the Handlebars template, then render the resulting HTML
var template = Handlebars.Compile("<h1>{{title}}</h1><p>{{body}}</p>");
string html = template(new { title = "My new post", body = "This is my first post!" });

var renderer = new ChromePdfRenderer();

var pdf = renderer.RenderHtmlAsPdf(html);

pdf.SaveAs("Handlebars.pdf");

您可以从 GitHub 了解有关 Handlebars 模板语言及其 C# 实现的更多信息。

使用 HTML5 添加分页符

在 PDF 文档中,分页是一个常见的需求。开发人员需要控制 PDF 页面的开始和结束位置,以获得干净、可读的布局。

最简单的方法是使用一个鲜为人知的 CSS 技巧,它将在任何打印的 HTML 文档中渲染一个分页符。

<div style='page-break-after: always;'>&nbsp;</div>
HTML

提供的 HTML 可以工作,但并不是最佳实践。我们建议像以下示例一样调整媒体属性。这是一种整洁的方式来布局多页 HTML 内容。因为 IronPDF 默认使用 screen 媒体类型渲染,所以只有在 RenderingOptions.CssMediaType 设置为 PdfCssMediaType.Print 时,才会应用 media="print" 样式表(请参见上面的 转换设置)。

<!DOCTYPE html>
<html>
  <head>
    <style type="text/css" media="print">
      .page {
        page-break-after: always;
        page-break-inside: avoid;
      }
    </style>
  </head>
  <body>
    <div class="page">
      <h1>This is Page 1</h1>
    </div>
    <div class="page">
      <h1>This is Page 2</h1>
    </div>
    <div class="page">
      <h1>This is Page 3</h1>
    </div>
  </body>
</html>
HTML

操作指南中概述了更多 分页符的提示和技巧


为 PDF 附加封面

IronPDF 使合并 PDF 文档变得简单。此技术最常见的用法是为现有渲染的 PDF 文档添加封面或封底。

为此,我们首先渲染一个封面,然后使用 PdfDocument.Merge() 静态方法将两个文档合并。

using IronPdf;

var renderer = new ChromePdfRenderer();

// The document body, rendered from a web page
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");

// Prepend an existing PDF as the cover page. Merge returns a new document.
var cover = PdfDocument.FromFile("CoverPage.pdf");
var pdfMerged = PdfDocument.Merge(cover, pdf);

pdfMerged.SaveAs("Combined.pdf");

完整的代码示例可以在这里找到:PDF 封面代码示例


添加水印

IronPDF 支持的最后一个 C# PDF 功能是为文档添加水印。这可以用于在每页上添加“机密”或“样本”的通知。

using IronPdf;
using IronPdf.Editing;

var renderer = new ChromePdfRenderer();

var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

// Stamp every page with a red "SAMPLE" in the middle, rotated 30 degrees at 50% opacity.
// The watermark is HTML, so any markup, styling or image can be used.
pdf.ApplyWatermark(
    "<h2 style='color:red; font-size:50px'>SAMPLE</h2>",
    rotation: 30,
    opacity: 50,
    verticalAlignment: VerticalAlignment.Middle,
    horizontalAlignment: HorizontalAlignment.Center);

pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");

完整的代码示例可以在这里找到:PDF 水印代码示例


下载 C# 源代码

本教程的完整 免费 HTML 到 PDF 转换器 C# 源代码 可作为压缩的 Visual Studio 2022 项目文件下载。它将使用其渲染引擎在 C# 中生成 PDF 文档对象。

下载本教程作为 Visual Studio 项目

免费下载包含创建 PDF 所需的一切,包括工作中的 C# PDF 代码示例代码:

  1. 使用 C# 将 HTML 字符串转换为 PDF
  2. C# 中的 HTML 文件到 PDF(支持 CSS、JavaScript 和图像)
  3. 使用 URL 的 C# HTML 到 PDF(“URL 到 PDF”)
  4. C# PDF 编辑和设置示例
  5. 将 JavaScript 画布图表(如 d3.js)渲染为 PDF
  6. PDF 库用于 C#

类参考

开发人员可能还对 IronPdf.PdfDocument 类参考感兴趣:

https://ironpdf.com/object-reference/api/IronPdf.PdfDocument.html

此对象模型显示了 PDF 文档如何可以:

  • 加密和密码保护
  • 编辑或“盖章”新的 HTML 内容
  • 使用前景和背景图像增强
  • 在页面或文档级别合并、连接、截断和拼接
  • 解析以提取纯文本和图像,或使用 IronOCR 包进行 OCR 处理

Blazor HTML 到 PDF

将 HTML 到 PDF 功能添加到您的 Blazor 服务器很简单,只需:

  1. 创建一个新的 Blazor 服务器项目或使用现有项目
  2. 使用 NuGet 将 IronPDF 库添加到您的项目中
  3. 添加一个新的 Razor 组件或使用现有组件
  4. 添加一个 InputTextArea 并将其链接到 IronPDF
  5. 让 IronPDF 处理其余部分并部署

有关进一步阅读,请继续阅读 完整的分步指南在 Blazor 应用程序中转换 HTML 为 PDF

从 Blazor 服务器页面生成的 PDF,使用 IronPDF

与其他 PDF 库比较

IronPDF 是一个功能强大且功能齐全的 PDF 库,专为现代 .NET 开发人员量身定制。凭借由先进的 Chromium 引擎驱动的本地 HTML 到 PDF 转换、直观的 API 和定期更新,它简化了开发,同时确保高质量的结果。让我们仔细看看它与其他工具的比较:

PDFSharp

  • 核心功能:PDFsharp 是一个用于在托管代码中创建和编辑 PDF 文档的开源(MIT)库。它没有 HTML 渲染引擎,因此将 Web 内容转换为 PDF 需要单独的第三方渲染器。
  • 现代标准:IronPDF 利用现代 Web 技术,包括 HTML、CSS 和 JavaScript,通过其基于 Chromium 的引擎,确保 PDF 保持现代外观和感觉。
  • 支持与更新:PDFsharp 是开源的,每隔几个月发布一个版本,其维护者单独出售商业支持。IronPDF 每月发布更新和安全补丁,每个许可证都包括专业工程支持,这对企业应用程序很重要。

wkhtmltopdf

  • 集成的简易性:wkhtmltopdf 是一个命令行工具,带有 C 库;没有官方的 .NET 包,因此从 .NET 使用它意味着启动本机二进制文件(或通过第三方包装器如 DinkToPdf 调用它)并为您部署到的每个平台提供该二进制文件。
  • 渲染技术:wkhtmltopdf 使用 QtWebKit 渲染,这是 Qt 在 2015 年弃用并在 Qt 5.6 中删除的 WebKit 分支,因此现代 JavaScript 和 CSS 功能不受支持,尤其是在动态、内容丰富的网站上。IronPDF 的 Chromium 引擎渲染当前的 Web 标准。
  • 持续开发:wkhtmltopdf 的最后一个版本是 2020 年 6 月的 0.12.6,其 GitHub 存储库在 2023 年 1 月被存档,因此没有供应商支持。IronPDF 继续发展,每月更新并提供专门的客户服务。

iTextSharp

  • HTML-to-PDF 渲染:iText 通过其独立的 pdfHTML 插件转换 HTML,这是一个 CSS 布局引擎而不是浏览器,并且旧版 iTextSharp 5 现在仅接收安全修复。IronPDF 在核心包中使用嵌入的 Chromium 引擎渲染 HTML,无需插件。
  • 开发者体验:iText 的 API 在 PDF 对象和布局元素的层面上工作,这很强大,但意味着日常任务需要更多代码。IronPDF 提供了一个简洁直观的 C# API,简化了编码并加速了项目交付。
  • 维护与支持:iText 的免费使用受 AGPL 约束,供应商支持仅限于商业许可证,iTextSharp 5.x 除了安全修复外已停止更新。IronPDF 包含专业支持和每月更新的每个许可证。

Aspose.PDF

  • 转换质量:Aspose.PDF 使用其自己的布局引擎而不是浏览器转换 HTML。其文档通过首先使用 HttpClient 将 HTML 获取到流中,然后通过 HtmlLoadOptions 将其传递给 Document,而不是直接从 URL 渲染。在我们下面的 r/nfl 测试中,输出几乎是空的:社区标志、一个标题和几个空框。IronPDF 的 Chromium 引擎直接渲染 URL,包括 JavaScript。
  • API 可用性:Aspose.PDF 的 API 可能比较冗长,而 IronPDF 专注于开发者友好的体验,最大限度地减少设置时间并提高生产力。
  • 输出保真度:由于 IronPDF 使用 Chromium 渲染,PDF 与 Chrome 显示的相同 HTML 匹配,这使得高容量 PDF 生成的设计和调试变得可预测。

Syncfusion PDF

  • API 复杂性:Syncfusion PDF 是一个功能强大的库,具有更大的 API 表面需要学习。相比之下,IronPDF 提供了一个简单的 API 以实现快速集成。
  • 渲染引擎:Syncfusion 的 HTML 转换器现在使用 Chromium Blink 引擎;其旧的 WebKit 和 Internet Explorer 引擎在 Essential Studio 2022 Volume 3 中被标记为过时。在我们下面的 r/nfl 测试中,Syncfusion 的输出保留了主提要,但丢失了导航和社区面板,而 IronPDF 的 Chromium 引擎渲染了整个页面。
  • 超越转换:IronPDF 的包还涵盖数字签名、注释、表单填写和条形码盖章,因此同一个库处理文档工作流的其余部分。

渲染比较

为了比较这些库的 HTML 到 PDF 转换质量,我们使用了一个 Reddit 社区页面 r/nfl,其中包含动态内容、实时更新、现代 CSS 和基于 JavaScript 的元素:

https://www.reddit.com/r/nfl/

Chrome 中显示的 r/nfl Reddit 页面截图

以下是每个库默认设置单次运行的结果。Syncfusion 和 Aspose.PDF 作为评估版本运行,这就是为什么它们的输出带有评估水印(点击每个图像查看放大版):

IronPDF

IronPDF 将 r/nfl Reddit 页面从 HTML 转换为 PDF 的输出格式良好且视觉上准确的 PDF,保留了动态内容和现代样式。

SyncFusion

Syncfusion 将 r/nfl Reddit 页面从 HTML 转换为 PDF 的输出使用试用版本转换。主提要、帖子内容和样式以窄单列布局显示,但左侧导航和右侧社区面板被丢弃。

Aspose.PDF

Aspose.PDF 将 r/nfl Reddit 页面从 HTML 转换为 PDF 的输出评估版本;需要先下载 HTML(Aspose.PDF 从流而不是 URL 加载 HTML)。输出几乎是空的:社区标志、一个标题和几个空框。

Wkhtmltopdf

wkhtmltopdf 将 r/nfl Reddit 页面从 HTML 转换为 PDF 的输出wkhtmltopdf 完成了转换,但结果是页面的文本和图像,没有其布局、样式、动态元素或交互性。这使得 wkhtmltopdf 不适合现代动态网页。
请注意: PDFsharp 没有 HTML 渲染引擎,而 iText 仅通过其独立的 pdfHTML 插件转换 HTML,因此两者均未包含在此浏览器渲染测试中。

结论

对于寻求现代可靠 PDF 解决方案的 .NET 开发人员,IronPDF 是一个强有力的选择。其基于 Chromium 的 HTML 到 PDF 转换、易用性、定期更新和广泛的功能集使其成为首选。无论您是在进行小型项目还是大型企业应用程序,IronPDF 都能提高生产力,同时避免使用过时或不受支持库的风险。IronPDF 专为商业应用设计,确保您的项目使用维护和支持的库。

在我们对真实世界动态网页的测试中,IronPDF 产生了最完整和准确的渲染。Syncfusion 丢失了导航和社区面板。Aspose.PDF 需要先下载 HTML,但几乎没有渲染页面。wkhtmltopdf 生成了文本和图像,但没有页面的样式,不适合现代网站。

对于现代 HTML 到 PDF 的工作流程,渲染准确性和小而可读的 API 的结合是 IronPDF 的独特之处。

体验 IronPDF 的全功能套件,轻松将动态、重 CSS 的 HTML 转换为 PDF。立即通过我们的免费试用进行测试。


观看 C# 中的 HTML 到 PDF 教程视频

通过 PDF 文档,您可以访问以下链接以了解如何设置 Chrome 在浏览器中打开 PDF 而不是下载它们

第一步:
arrow pointer

常见问题解答

如何在 C# 中使用 IronPDF 将 HTML 转换为 PDF?

要使用 IronPDF 将 HTML 转换为 PDF,您需要初始化 ChromePdfRenderer,使用 RenderHtmlAsPdf 方法将 HTML 内容渲染为 PDF,然后将 PDF 保存到文件。

IronPDF 的系统要求是什么?

IronPDF 支持 .NET 10、.NET 9、.NET 8、.NET 7、.NET 6、.NET 5、.NET Core、.NET Standard 和 .NET Framework,适用于 Windows、macOS、Linux、Docker、Azure 和 AWS。

我可以将 IronPDF 与其他编程语言一起使用吗?

是的,IronPDF 可以与 .NET 生态系统内外的多种语言一起使用,包括 F#、VB.NET、Python、Java 和 Node.js。

如何使用 IronPDF 向 PDF 添加自定义页眉和页脚?

使用 IronPDF,您可以使用 TextHeaderFooter 类为基于文本的内容或 HtmlHeaderFooter 类为丰富的 HTML 内容添加页眉和页脚。

是否可以使用 IronPDF 从现有 URL 渲染 PDF?

是的,您可以使用 IronPDF 中的 RenderUrlAsPdf 方法从现有 URL 渲染 PDF。

IronPDF 是否支持高级 CSS 和 JavaScript 渲染?

是的,IronPDF 支持高级 CSS3 和 JavaScript,包括 jQuery 和 AJAX,提供现代网页设计的准确渲染。

我可以在 IronPDF 中应用 HTML 模板进行批量 PDF 创建吗?

是的,您可以使用 C# 模板技术,包括 String.Format 和 Handlebars.NET,动态生成 PDF。

IronPDF 与其他 PDF 库相比如何?

IronPDF 使用嵌入式 Chromium 引擎渲染 HTML,每月发布更新,并具有紧凑的 C# API。教程将其与 PdfSharp、wkhtmltopdf、iTextSharp、Aspose.PDF 和 Syncfusion PDF 进行比较,包括动态网页的并排渲染测试。

我可以使用 IronPDF 向 PDF 添加水印吗?

是的,IronPDF 允许您向 PDF 文档添加文本或图像水印。

IronPDF 是否提供试用版?

是的,您可以注册一个免费的 30 天试用密钥,在购买许可证之前测试 IronPDF 的功能。

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

准备开始了吗?

Nuget Downloads 21,062,892版本:2026.9刚刚发布

免费获取

30天试用密钥 即刻获取。

bullet_checked无需信用卡或创建账户
bullet_test在生产环境中测试
且无水印
bullet_calendar30天完全
功能性产品
bullet_support试用期间提供
24/5技术支持
立即获取您的免费30 天试用密钥
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999