跳至页脚内容
产品比较

iTextsharp HTML到PDF附带CSS样式C#示例对比IronPDF

将HTML转换为PDF是许多现代软件开发工作流程中的关键任务,无论是生成报告、发票,还是创建文档。 作为C#开发人员,您可以使用多种库来简化此过程。

In this article, we'll compare two of the most popular libraries within the .NET ecosystem: IronPDF and iTextSharp. 这两个库都提供了强大的功能,但它们在易用性、PDF创建工具、CSS样式支持和许可方式等关键领域有所不同。 无论您是初学者还是经验丰富的开发人员,本指南将帮助您理解它们的核心功能,并根据您的需求和项目要求决定哪个最适合您。

*想跟随一起吗? 下载IronPDF免费试用版,亲自探索IronPDF的强大功能。

比较顶级库:iTextSharp和IronPDF

iTextSharpIronPDF都为开发人员提供了将HTML转换为C#中的PDF的工具。 然而,每个都有其自身的优缺点。

  • iTextSharp是一个开源库,已经存在很长时间。它提供灵活性和广泛的自定义选项,但设置和使用起来有点复杂,尤其是在处理复杂的HTML和CSS渲染时。 然而,应该注意的是,iTextSharp是一个遗留产品,现在只接收与安全相关的更新。

  • 另一方面,IronPDF是由Iron Software开发的商业产品。 它以用户友好的界面、强大的CSS支持和易用性而闻名。 它无缝集成到C#应用程序中,是需要快速高效生成PDF而不牺牲质量的开发人员的绝佳选择。

在深入研究如何使用这两个库将HTML转换为PDF格式之前,让我们先来看一个基本的示例比较,展示这两个库在处理含有大量CSS和JavaScript的网页/HTML内容时转换为PDF文档的差异。

iTextSharp与IronPDF从URL到PDF

正如您从生成的PDF文档中看到的那样,这显示了iTextSharp只能处理提供的URL中的原始HTML内容,而IronPDF能够保持原始的CSS布局和样式,确保生成的PDF文档与原始网页非常相似。

逐步安装指南

设置iTextSharp

  1. 通过NuGet控制台安装:要开始使用iTextSharp,您可以直接从NuGet安装。 打开您的Visual Studio项目,前往NuGet包管理器,运行以下命令:
Install-Package iTextSharp

通过NuGet控制台安装iTextSharp

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

工具下拉菜单

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

iTextSharp NuGet屏幕

  1. 添加引用:安装完成后,在您的项目中添加必要的引用,特别是那些与HTML到PDF转换相关的引用。
using iTextSharp.text.pdf;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text.pdf;
using iTextSharp.text.html.simpleparser;
Imports iTextSharp.text.pdf
Imports iTextSharp.text.html.simpleparser
$vbLabelText   $csharpLabel

设置IronPDF

  1. 通过NuGet控制台安装:要开始使用IronPDF,您可以直接从NuGet安装。 打开您的Visual Studio项目,前往NuGet包管理器,运行以下命令:
Install-Package IronPdf
  1. 通过NuGet包管理器安装:或者,您可以通过解决方案屏幕的NuGet包管理器以与上面iTextSharp设置步骤类似的方式安装。不过,此时请搜索IronPDF,然后点击“安装”。

    IronPDF的NuGet屏幕

  2. 添加引用:安装完成后,将IronPDF导入到您的项目中:
using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

需要记住的是,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.");
Imports System
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.tool.xml

' Register provider for specific code pages
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)

' Define HTML content with CSS styling
Dim html As String = "
<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 stream As New FileStream("report.pdf", FileMode.Create)
	Dim pdfDoc As New Document(PageSize.A4, 25, 25, 30, 30)
	Dim writer As PdfWriter = PdfWriter.GetInstance(pdfDoc, stream)
	pdfDoc.Open()
	Using sr As New StringReader(html)
		' Use XMLWorkerHelper to parse and add HTML content to the PDF document
		XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr)
	End Using
	pdfDoc.Close()
	writer.Close()
End Using
Console.WriteLine("PDF generation completed successfully.")
$vbLabelText   $csharpLabel

输出PDF文件

iTextSharp HTML到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");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		' Define HTML content with inline CSS styling
		Dim 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
		Dim renderer = New ChromePdfRenderer()
		Dim pdf = renderer.RenderHtmlAsPdf(content)
		pdf.SaveAs("AdvancedStyledReport.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

输出PDF文件

IronPDF HTML到PDF输出

通过IronPDF,您可以期待拥有精美的PDF文档,并具有准确的CSS样式,如上面的代码示例所示,这使其成为许多开发人员处理复杂HTML文件、字符串等的首选工具。 除了简单的HTML到PDF文档转换任务之外,IronPDF还能够处理高级PDF操作任务和PDF安全。 这使其成为一个优秀的一体化PDF库。

关键差异和竞争格局

在评估iTextSharp和IronPDF时,重要的是不仅要考虑它们的功能,还要考虑竞争格局。 其他竞争对手如Apryse和Aspose.PDF也提供类似的HTML到PDF解决方案,但在定价和功能上都有各自的权衡。

功能 IronPDF iTextSharp Apryse Aspose.PDF
易用性 中等 中等
CSS支持 全面 部分 全面 全面
许可 商业 开源 商业 商业
支持 优秀 社区 高级 高级
定价 从$799开始 免费/商业许可 基于报价 每年起价$1,679

IronPDF因其对现代HTML5和CSS3的全面支持而脱颖而出,这对今天大多数开发人员来说至关重要。 它对PDF文档的操作扩展支持、对PDF文档创建的控制、转换过程的便捷性等,使IronPDF成为受欢迎的PDF库。

结论和建议

In conclusion, both IronPDF and iTextSharp offer strong capabilities for HTML to PDF conversion in C#, but they cater to different types of developers. 如果您正在寻找一个有强大社区支持的开源解决方案,iTextSharp可能是正确的选择。然而,对于需要易用性、强大的CSS支持和商业解决方案的开发人员,IronPDF提供了更为流畅且功能丰富的体验。 无论您是在寻找一个可以自动生成发票、创建品牌PDF文档,还是将整个网页转换为PDF文件的工具,IronPDF都能为您提供支持。

立即尝试IronPDF的用户友好功能——下载免费试用版,亲身体验HTML到PDF转换有多么简单。

{i:(iTextSharp 是其各自所有者的注册商标。 本网站与 iTextSharp 无关,也未得到 iTextSharp 的支持或赞助。所有产品名称、徽标和品牌均为其各自所有者的财产。 比较仅供参考,反映的是撰写时的公开信息。]

常见问题解答

如何在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 转换的强大选择。

Curtis Chau
技术作家

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

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