iTextsharp使用CSS样式的HTML到PDF C#示例与IronPDF
将HTML转换为PDF是许多现代软件开发工作流程中的关键任务,无论是生成报告、发票,还是创建文档。 作为C#开发人员,您可以使用多种库来简化此过程。
在本文中,我们将比较.NET生态系统中两个最受欢迎的库:IronPDF和iTextSharp。 这两个库都提供了强大的功能,但它们在易用性、PDF创建工具、CSS样式支持和许可方式等关键领域有所不同。 无论您是初学者还是经验丰富的开发人员,本指南将帮助您理解它们的核心功能,并根据您的需求和项目要求决定哪个最适合您。
*想跟随一起吗? 下载IronPDF免费试用版,亲自探索IronPDF的强大功能。
比较顶级库:iTextSharp和IronPDF
iTextSharp和IronPDF都为开发人员提供了将HTML转换为C#中的PDF的工具。 然而,每个都有其自身的优缺点。
iTextSharp是一个开源库,已经存在很长时间。它提供灵活性和广泛的自定义选项,但设置和使用起来有点复杂,尤其是在处理复杂的HTML和CSS渲染时。 然而,应该注意的是,iTextSharp是一个遗留产品,现在只接收与安全相关的更新。
- 另一方面,IronPDF是由Iron Software开发的商业产品。 它以用户友好的界面、强大的CSS支持和易用性而闻名。 它无缝集成到C#应用程序中,是需要快速高效生成PDF而不牺牲质量的开发人员的绝佳选择。
在深入研究如何使用这两个库将HTML转换为PDF格式之前,让我们先来看一个基本的示例比较,展示这两个库在处理含有大量CSS和JavaScript的网页/HTML内容时转换为PDF文档的差异。

正如您从生成的PDF文档中看到的那样,这显示了iTextSharp只能处理提供的URL中的原始HTML内容,而IronPDF能够保持原始的CSS布局和样式,确保生成的PDF文档与原始网页非常相似。
逐步安装指南
设置iTextSharp
- 通过NuGet控制台安装:要开始使用iTextSharp,您可以直接从NuGet安装。 打开您的Visual Studio项目,前往NuGet包管理器,运行以下命令:
Install-Package iTextSharp

- 通过NuGet包管理器安装:或者,您可以通过解决方案屏幕的NuGet包管理器安装。 为此,请导航到"工具 > NuGet 包管理器 > 管理解决方案的 NuGet 包"。

然后,搜索iTextSharp库并点击"安装"。

- 添加引用:安装完成后,在您的项目中添加必要的引用,特别是那些与HTML到PDF转换相关的引用。
using iTextSharp.text.pdf;
using iTextSharp.text.html.simpleparser;using iTextSharp.text.pdf;
using iTextSharp.text.html.simpleparser;设置IronPDF
- 通过NuGet控制台安装:要开始使用IronPDF,您可以直接从NuGet安装。 打开您的Visual Studio项目,前往NuGet包管理器,运行以下命令:
Install-Package IronPdf
- 通过NuGet包管理器安装:或者,您可以通过解决方案屏幕的NuGet包管理器以与上面iTextSharp设置步骤类似的方式安装。不过,此时请搜索IronPDF,然后点击"安装"。

- 添加引用:安装完成后,将IronPDF导入到您的项目中:
using IronPdf;using IronPdf;需要记住的是,IronPDF在商业使用/开发环境之外使用时需要许可证密钥。
实现HTML到PDF转换
使用iTextSharp
iTextSharp设置完成后,请确保您的项目中安装了itextsharp.xmlworker包,然后才能开始从HTML内容创建PDF。 不过,面对更复杂的HTML时,尤其是涉及CSS样式时,您将面临挑战。 iTextSharp相较于IronPDF往往需要额外的努力来实现完美的样式。 重要的是要记住,iTextSharp仅支持基本的HTML/CSS2(没有flexbox,没有grid,CSS支持有限)。
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;
// Register provider for specific code pages
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
// Define HTML content with CSS styling
string html = @"
<html>
<head>
<style>
body { font-family: Arial; color: #333; }
h1 { background: #3498db; color: #fff; padding: 10px; }
table { width: 100%; border-collapse: collapse; margin-top: 15px; }
th, td { border: 1px solid #ccc; padding: 6px; }
th { background: #2980b9; color: #fff; }
.footer { margin-top: 20px; font-size: 12px; color: #777; text-align: center; }
</style>
</head>
<body>
<h1>April Report</h1>
<p>Here’s a quick overview of this month’s performance metrics.</p>
<table>
<tr><th>Metric</th><th>Value</th></tr>
<tr><td>Features</td><td>12</td></tr>
<tr><td>Bugs Fixed</td><td>89</td></tr>
</table>
<p class='footer'>Generated by iTextSharp</p>
</body>
</html>";
// Create PDF from HTML content
using (FileStream stream = new FileStream("report.pdf", FileMode.Create))
{
Document pdfDoc = new Document(PageSize.A4, 25, 25, 30, 30);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
pdfDoc.Open();
using (StringReader sr = new StringReader(html))
{
// Use XMLWorkerHelper to parse and add HTML content to the PDF document
XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
}
pdfDoc.Close();
writer.Close();
}
Console.WriteLine("PDF generation completed successfully.");using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;
// Register provider for specific code pages
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
// Define HTML content with CSS styling
string html = @"
<html>
<head>
<style>
body { font-family: Arial; color: #333; }
h1 { background: #3498db; color: #fff; padding: 10px; }
table { width: 100%; border-collapse: collapse; margin-top: 15px; }
th, td { border: 1px solid #ccc; padding: 6px; }
th { background: #2980b9; color: #fff; }
.footer { margin-top: 20px; font-size: 12px; color: #777; text-align: center; }
</style>
</head>
<body>
<h1>April Report</h1>
<p>Here’s a quick overview of this month’s performance metrics.</p>
<table>
<tr><th>Metric</th><th>Value</th></tr>
<tr><td>Features</td><td>12</td></tr>
<tr><td>Bugs Fixed</td><td>89</td></tr>
</table>
<p class='footer'>Generated by iTextSharp</p>
</body>
</html>";
// Create PDF from HTML content
using (FileStream stream = new FileStream("report.pdf", FileMode.Create))
{
Document pdfDoc = new Document(PageSize.A4, 25, 25, 30, 30);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
pdfDoc.Open();
using (StringReader sr = new StringReader(html))
{
// Use XMLWorkerHelper to parse and add HTML content to the PDF document
XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
}
pdfDoc.Close();
writer.Close();
}
Console.WriteLine("PDF generation completed successfully.");输出PDF文件

使用 IronPDF.
IronPDF使PDF生成过程简化,只需几行代码即可轻松将HTML内容转换为新的PDF文档,如下面的代码示例所示。 它能够处理使用CSS文件进行样式化的高级HTML文档、HTML字符串以及CSS/JavaScript密集的网页内容。
这是一个简单的包含内联CSS的示例:
using IronPdf;
class Program
{
static void Main()
{
// Define HTML content with inline CSS styling
var content = @"
<html>
<head>
<style>
body {
font-family: 'Segoe UI', sans-serif;
margin: 40px;
background-color: #f8f9fa;
}
h1 {
color: #2c3e50;
border-bottom: 2px solid #2980b9;
padding-bottom: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
table, th, td {
border: 1px solid #ccc;
}
th {
background-color: #2980b9;
color: white;
padding: 10px;
}
td {
padding: 10px;
background-color: #ecf0f1;
}
.footer {
margin-top: 40px;
text-align: center;
font-size: 0.9em;
color: #7f8c8d;
}
img {
width: 120px;
float: right;
}
</style>
</head>
<body>
<img src='https://ironpdf.com/img/svgs/iron-pdf-logo.svg' alt='Company Logo' />
<h1>Monthly Report - April 2025</h1>
<p>This report outlines performance statistics and key updates for the development team.</p>
<table>
<tr>
<th>Metric</th>
<th>Value</th>
<th>Change</th>
</tr>
<tr>
<td>Feature Releases</td>
<td>12</td>
<td style='color: green;'>+20%</td>
</tr>
<tr>
<td>Bugs Resolved</td>
<td>89</td>
<td style='color: green;'>+45%</td>
</tr>
<tr>
<td>Downtime</td>
<td>2 hrs</td>
<td style='color: red;'>+15%</td>
</tr>
</table>
<div class='footer'>
Generated with IronPDF | © 2025 DevCorp
</div>
</body>
</html>";
// Use ChromePdfRenderer to render the HTML content as a PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(content);
pdf.SaveAs("AdvancedStyledReport.pdf");
}
}using IronPdf;
class Program
{
static void Main()
{
// Define HTML content with inline CSS styling
var content = @"
<html>
<head>
<style>
body {
font-family: 'Segoe UI', sans-serif;
margin: 40px;
background-color: #f8f9fa;
}
h1 {
color: #2c3e50;
border-bottom: 2px solid #2980b9;
padding-bottom: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
table, th, td {
border: 1px solid #ccc;
}
th {
background-color: #2980b9;
color: white;
padding: 10px;
}
td {
padding: 10px;
background-color: #ecf0f1;
}
.footer {
margin-top: 40px;
text-align: center;
font-size: 0.9em;
color: #7f8c8d;
}
img {
width: 120px;
float: right;
}
</style>
</head>
<body>
<img src='https://ironpdf.com/img/svgs/iron-pdf-logo.svg' alt='Company Logo' />
<h1>Monthly Report - April 2025</h1>
<p>This report outlines performance statistics and key updates for the development team.</p>
<table>
<tr>
<th>Metric</th>
<th>Value</th>
<th>Change</th>
</tr>
<tr>
<td>Feature Releases</td>
<td>12</td>
<td style='color: green;'>+20%</td>
</tr>
<tr>
<td>Bugs Resolved</td>
<td>89</td>
<td style='color: green;'>+45%</td>
</tr>
<tr>
<td>Downtime</td>
<td>2 hrs</td>
<td style='color: red;'>+15%</td>
</tr>
</table>
<div class='footer'>
Generated with IronPDF | © 2025 DevCorp
</div>
</body>
</html>";
// Use ChromePdfRenderer to render the HTML content as a PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(content);
pdf.SaveAs("AdvancedStyledReport.pdf");
}
}输出PDF文件

通过IronPDF,您可以期待拥有精美的PDF文档,并具有准确的CSS样式,如上面的代码示例所示,这使其成为许多开发人员处理复杂HTML文件、字符串等的首选工具。 除了简单的HTML到PDF文档转换任务之外,IronPDF还能够处理高级PDF操作任务和PDF安全。 这使其成为一个优秀的一体化PDF库。
关键差异和竞争格局
在评估iTextSharp和IronPDF时,重要的是不仅要考虑它们的功能,还要考虑竞争格局。 其他竞争对手如Apryse和Aspose.PDF也提供类似的HTML到PDF解决方案,但在定价和功能上都有各自的权衡。
| Feature | IronPDF | iTextSharp | Apryse | Aspose.PDF |
|---|---|---|---|---|
| 易用性 | 高 | 中等 | 高 | 中等 |
| CSS支持 | 全面 | 部分 | 全面 | 全面 |
| Licensing | 商业 | 开源 | 商业 | 商业 |
| Support | 优秀 | 社区 | 高级 | 高级 |
| Pricing | 从$799开始 | 免费/商业许可 | 基于报价 | 每年起价$1,679 |
IronPDF因其对现代HTML5和CSS3的全面支持而脱颖而出,这对今天大多数开发人员来说至关重要。 它对PDF文档的操作扩展支持、对PDF文档创建的控制、转换过程的便捷性等,使IronPDF成为受欢迎的PDF库。
结论和建议
总之,IronPDF和iTextSharp都提供了强大的HTML到PDF转换能力,但它们面向不同类型的开发人员。 如果您正在寻找一个有强大社区支持的开源解决方案,iTextSharp可能是正确的选择。然而,对于需要易用性、强大的CSS支持和商业解决方案的开发人员,IronPDF提供了更为流畅且功能丰富的体验。 无论您是在寻找一个可以自动生成发票、创建品牌PDF文档,还是将整个网页转换为PDF文件的工具,IronPDF都能为您提供支持。
立即尝试IronPDF的用户友好功能——下载免费试用版,亲身体验HTML到PDF转换有多么简单。
常见问题解答
如何在C#中将HTML转换为PDF?
您可以使用 IronPDF 通过其 RenderHtmlAsPdf 方法将 HTML 字符串或 RenderHtmlFileAsPdf 方法将 HTML 文件转换为 PDF。该库支持现代的 HTML5 和 CSS3,确保精确的样式和渲染。
使用 IronPDF 将 HTML 转换为 PDF 的主要优势是什么?
IronPDF 提供了对现代 HTML5 和 CSS3 的强力支持,使其非常适合处理复杂的网页内容。其用户友好的 API 允许与 C# 无缝集成,并且它还支持 JavaScript 密集的内容,确保动态网页被准确转换。
为什么开发者可能选择 iTextSharp 而不是 IronPDF?
如果开发者更喜欢一个具有灵活定制选项的开源解决方案,他们可能会选择 iTextSharp。iTextSharp,现在称为 iText7,适合那些有能力处理其复杂性的人,特别是当涉及到高级 HTML 和 CSS 时。
IronPDF 可以处理 HTML 内容中的 JavaScript 吗?
是的,由于其先进的渲染功能,IronPDF 可以处理 HTML 内容中的 JavaScript,使其成为将动态和交互性网页转换为 PDF 的合适选择。
如何在 C# 项目中安装 IronPDF?
您可以通过 Visual Studio 中的 NuGet 包管理器安装 IronPDF。在包管理器控制台中使用命令 Install-Package IronPdf,或在 NuGet 包管理器 UI 中搜索 IronPDF。
选择 IronPDF 和 iTextSharp 时需要考虑什么?
在两者之间进行选择时,请考虑您对易用性、CSS 和 JavaScript 支持、许可要求以及 HTML 内容复杂性的需求。IronPDF 在现代 Web 技术和无缝集成方面表现出色,而 iTextSharp 对于那些更喜欢开源解决方案的人来说是个不错的选择。
IronPDF 是否有许可要求?
是的,IronPDF 在开发环境之外的使用需要商业许可。许可证的购买取决于所需的支持和功能级别。
使用iTextSharp将HTML转换为PDF时的一些常见问题是什么?
iTextSharp 的常见问题包括处理复杂的 HTML 和 CSS,因为这可能需要额外的配置和定制。开发人员通常需要调整他们的代码以确保高级网页内容的适当样式和渲染。
IronPDF 如何与其他类似Aspose.PDF的PDF库进行比较?
IronPDF 提供了与 Aspose.PDF 类似的易用性和对现代 Web 标准的全面支持。它具有竞争力的定价和功能集,使其成为开发人员在保持质量和性能的同时需要可靠的 HTML 到 PDF 转换的强大选择。






