Skip to footer content
PRODUCT COMPARISONS

iTextsharp HTML to PDF With CSS Styles C# Example vs IronPDF

Converting HTML to PDF is a crucial task in many modern software development workflows, whether it's for generating reports, invoices, or creating documentation. As a C# developer, you have several libraries at your disposal to streamline this process.

In this article, we'll compare two of the most popular libraries within the .NET ecosystem: IronPDF and iTextSharp. Both libraries offer robust functionality, but they differ in key areas such as ease of use, PDF creation tools, CSS styling support, and licensing. Whether you're a beginner or a seasoned developer, this guide will help you understand their core features and decide which one is the best fit for you based off your needs and project requirements.

Want to follow along? Download the IronPDF free trial to explore IronPDF's powerful features for yourself.

Comparing Top Libraries: iTextSharp and IronPDF

Both iTextSharp and IronPDF provide developers with the tools they need for HTML to PDF conversion in C#. However, each has its own strengths and weaknesses.

  • iTextSharp is an open-source library that has been around for a long time. It offers flexibility and extensive customization options, but it can be somewhat complex to set up and use, especially when dealing with advanced HTML and CSS rendering. However, it should be noted that iTextSharp is a legacy product and only receives security-related updates now.

  • IronPDF, on the other hand, is a commercial product developed by Iron Software. It is known for its user-friendly interface, robust CSS support, and ease of use. It integrates seamlessly with C# applications, making it an excellent choice for developers who need fast and efficient PDF generation without sacrificing quality.

Before we dive into how to convert HTML to PDF format with these two libraries, let's first look at a basic example comparison which shows the difference in how these two libraries handle converting CSS and JavaScript-heavy web page/HTML content into a PDF document.

iTextSharp vs IronPDF URL to PDF

As you can see from the resulting PDF documents, this demonstrates how iTextSharp can only process the raw HTML content from the provided URL, whereas IronPDF is capable of maintaining the original CSS layout and styling, ensuring the generated PDF document closely resembles the original web page.

Step-by-Step Installation Guide

Setting Up iTextSharp

  1. Install via NuGet Console: To begin using iTextSharp, you can install it directly from NuGet. Open your Visual Studio project, go to the NuGet Package Manager, and run the following command:
Install-Package iTextSharp

Installing iTextSharp via the NuGet Console

  1. Install via NuGet Package Manager: Alternatively, you can install it via the NuGet package manager for the Solution screen. To do this, navigate to "Tools > NuGet Package Manager > Manage NuGet Packages for Solution".

Tools dropdown menu

Then, search for the iTextSharp library and click "Install".

iTextSharp NuGet screen

  1. Add References: Once installed, add the necessary references in your project, particularly those related to HTML to PDF conversion.
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

Setting Up IronPDF

  1. Install via NuGet Console: To begin using IronPDF, you can install it directly from NuGet. Open your Visual Studio project, go to the NuGet Package Manager, and run the following command:
Install-Package IronPdf
  1. Install via NuGet Package Manager: Alternatively, you can install it via the NuGet package manager for the Solution screen just as we did in the steps above for iTextSharp. However, this time, search for IronPDF, before clicking "Install".

    IronPDF's NuGet screen

  2. Add References: Once installed, import IronPDF into your project:
using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

It is important to remember that IronPDF requires a license key for commercial use/use outside of development.

Implementing HTML to PDF Conversion

Using iTextSharp

Once iTextSharp is set up, ensure you have the itextsharp.xmlworker package installed within your project before you can start to create PDFs from HTML content. However, you'll face challenges with more complex HTML, especially when CSS styles are involved. iTextSharp tends to require additional effort to achieve perfect styling when compared to IronPDF. It's important to remember that iTextSharp handles basic HTML/CSS2 only (no flexbox, no grid, limited 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

Output PDF File

iTextSharp HTML to PDF output

Using IronPDF

IronPDF simplifies the PDF generation process, able to easily convert HTML content into new PDF documents in just a few lines of code, as demonstrated in the code sample below. It's capable of working with advanced HTML documents with CSS files used for styling, HTML strings, and CSS/JavaScript-heavy web content.

Here's a simple example that includes inline 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

Output PDF File

IronPDF HTML to PDF output

With IronPDF, you can expect a polished PDF file with accurate CSS styling, as seen with the above code example, making it a go-to for many developers working with complex HTML files, strings, and more. Beyond simple HTML to PDF document conversion tasks, IronPDF is capable of advanced PDF manipulation tasks and PDF security. This makes it an excellent all-in-one PDF library.

Key Differences and Competitor Landscape

When evaluating iTextSharp and IronPDF, it's important to consider not just their features, but also the competitive landscape. Other competitors like Apryse and Aspose.PDF offer similar HTML to PDF solutions, but with their own trade-offs in terms of pricing and functionality.

FeatureIronPDFiTextSharpApryseAspose.PDF
Ease of UseHighMediumHighMedium
CSS SupportFullPartialFullFull
LicensingCommercialOpen SourceCommercialCommercial
SupportExcellentCommunityPremiumPremium
PricingFrom $749Free/Commercial licenseQuote-basedFrom $1,679 per year

IronPDF stands out due to its comprehensive support for modern HTML5 and CSS3, which is critical for most developers today. Its extended support for manipulating PDF documents, control over PDF document creation, ease with the conversion process, and more, make IronPDF a popular PDF library.

Conclusion and Recommendations

In conclusion, both IronPDF and iTextSharp offer strong capabilities for HTML to PDF conversion in C#, but they cater to different types of developers. If you’re looking for an open-source solution with strong community support, iTextSharp may be the right choice. However, for developers who need ease of use, robust CSS support, and a commercial solution, IronPDF offers a far more streamlined and feature-rich experience. Whether you're looking for a tool that can automate generating invoices, create branded PDF documents, or convert entire web pages to PDF files, IronPDF has you covered.

Try IronPDF’s user-friendly features today – download the free trial for a firsthand experience and see how easy HTML to PDF conversion can be.

Please note
iTextSharp is a registered trademark of its respective owner. This site is not affiliated with, endorsed by, or sponsored by iTextSharp. All product names, logos, and brands are property of their respective owners. Comparisons are for informational purposes only and reflect publicly available information at the time of writing.

Frequently Asked Questions

What are the core differences between these two PDF libraries?

IronPDF is a commercial product known for its ease of use, robust CSS support, and seamless integration with C#. iTextSharp, now known as iText7, is an open-source library offering flexibility and extensive customization but can be complex to set up, especially for handling advanced HTML and CSS.

Which library is better for handling complex HTML and CSS for PDF conversion?

IronPDF is better suited for handling complex HTML and CSS due to its full support for modern HTML5 and CSS3 standards, making it ideal for developers needing accurate styling in PDF documents.

Is iTextSharp still receiving updates?

iTextSharp is a legacy product that now only receives security-related updates. Newer features and improvements are found in iText7.

Can this PDF library handle JavaScript-heavy web content?

Yes, IronPDF can handle JavaScript-heavy web content due to its advanced rendering capabilities, making it suitable for dynamic web pages.

How can I install iTextSharp in my C# project?

You can install iTextSharp via the NuGet Package Manager in Visual Studio by executing the command `Install-Package iTextSharp` or search for it in the package manager UI.

Is a license required to use this PDF library in production?

Yes, IronPDF requires a commercial license for use beyond development, which can be purchased from their website.

What are the pricing options for this PDF library?

IronPDF's pricing starts from $749, offering various plans based on the level of support and features required.

How does this library compare to other competitors like Aspose.PDF and Apryse?

IronPDF offers excellent ease of use and full CSS support, similar to Apryse and Aspose.PDF. However, its pricing and feature set make it a competitive choice for developers seeking robust HTML to PDF conversion.

Can I use iTextSharp for free?

Yes, iTextSharp is open-source and can be used for free. However, commercial use may require a license depending on the specific usage and distribution.

What should I consider when choosing between iTextSharp and another PDF library?

Consider the complexity of your HTML/CSS, need for JavaScript support, licensing preferences, and ease of use. IronPDF is better for seamless integration and handling complex modern web content, while iTextSharp is suitable for those preferring an open-source solution.

Chipego
Software Engineer
Chipego has a natural skill for listening that helps him to comprehend customer issues, and offer intelligent solutions. He joined the Iron Software team in 2023, after studying a Bachelor of Science in Information Technology. IronPDF and IronOCR are the two products Chipego has been focusing on, but his knowledge of all products is growing daily, as he finds new ways to support customers. He enjoys how collaborative life is at Iron Software, with team members from across the company bringing their varied experience to contribute to effective, innovative solutions. When Chipego is away from his desk, he can often be found enjoying a good book or playing football.