Saltar al pie de página
COMPARACIONES DE PRODUCTOS

iTextsharp HTML a PDF Con Estilos CSS Ejemplo C# vs IronPDF

Convertir HTML a PDF es una tarea crucial en muchos flujos de trabajo de desarrollo de software modernos, ya sea para generar informes, facturas o crear documentación. Como desarrollador de C#, tienes varias bibliotecas a tu disposición para optimizar este proceso.

In this article, we'll compare two of the most popular libraries within the .NET ecosystem: IronPDF and iTextSharp. Ambas bibliotecas ofrecen funcionalidades robustas, pero difieren en áreas clave como facilidad de uso, herramientas de creación de PDF, soporte de estilo CSS y licenciamiento. Ya seas un principiante o un desarrollador experimentado, esta guía te ayudará a comprender sus características principales y decidir cuál es la mejor opción para ti según tus necesidades y requisitos del proyecto.

¿Quieres seguir el proceso? Descarga la versión de prueba gratuita de IronPDF para explorar las potentes características de IronPDF por ti mismo.

Comparando Bibliotecas Principales: iTextSharp e IronPDF

Tanto iTextSharp como IronPDF proporcionan a los desarrolladores las herramientas necesarias para la conversión de HTML a PDF en C#. Sin embargo, cada uno tiene sus propias fortalezas y debilidades.

  • iTextSharp es una biblioteca de código abierto que ha existido durante mucho tiempo. Ofrece flexibilidad y opciones de personalización extensas, pero puede ser algo complejo de configurar y usar, especialmente cuando se trata de renderización avanzada de HTML y CSS. Sin embargo, cabe destacar que iTextSharp es un producto heredado y ahora solo recibe actualizaciones relacionadas con la seguridad.

  • IronPDF, por otro lado, es un producto comercial desarrollado por Iron Software. Es conocido por su interfaz fácil de usar, soporte robusto de CSS y facilidad de uso. Se integra perfectamente con las aplicaciones C#, lo que lo convierte en una excelente opción para los desarrolladores que necesitan una generación de PDF rápida y eficiente sin sacrificar calidad.

Antes de profundizar en cómo convertir formato HTML a PDF con estas dos bibliotecas, primero veamos un ejemplo básico de comparación que muestra la diferencia en cómo estas dos bibliotecas manejan la conversión de contenido web/HTML pesado en CSS y JavaScript a un documento PDF.

URL a PDF de iTextSharp vs IronPDF

Como se puede ver en los documentos PDF resultantes, esto demuestra cómo iTextSharp solo puede procesar el contenido HTML sin formato de la URL proporcionada, mientras que IronPDF es capaz de mantener el diseño y estilo CSS original, asegurando que el documento PDF generado se asemeje de cerca a la página web original.

Guía de Instalación Paso a Paso

Configuración de iTextSharp

  1. Instalar a través de la Consola de NuGet: Para comenzar a usar iTextSharp, puedes instalarlo directamente desde NuGet. Abre tu proyecto de Visual Studio, ve al Administrador de paquetes NuGet y ejecuta el siguiente comando:
Install-Package iTextSharp

Instalación de iTextSharp a través de la Consola de NuGet

  1. Instalar mediante el Administrador de Paquetes de NuGet: Alternativamente, puedes instalarlo a través del administrador de paquetes NuGet en la pantalla de Solución. Para hacer esto, navega a "Herramientas > Gestor de Paquetes NuGet > Administrar Paquetes NuGet para la Solución".

Menú desplegable de herramientas

Luego, busca la biblioteca iTextSharp y haz clic en 'Instalar'.

Pantalla de NuGet de iTextSharp

  1. Agregar Referencias: Una vez instalado, agrega las referencias necesarias en tu proyecto, particularmente aquellas relacionadas con la conversión de HTML a 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

Configuración de IronPDF

  1. Instalar a través de la Consola de NuGet: Para comenzar a usar IronPDF, puedes instalarlo directamente desde NuGet. Abre tu proyecto de Visual Studio, ve al Administrador de paquetes NuGet y ejecuta el siguiente comando:
Install-Package IronPdf
  1. Instalar mediante el Administrador de Paquetes de NuGet: Alternativamente, puedes instalarlo a través del administrador de paquetes NuGet en la pantalla de Solución, al igual que lo hicimos en los pasos anteriores para iTextSharp. Sin embargo, esta vez, busca IronPDF antes de hacer clic en 'Instalar'.

    Pantalla de NuGet de IronPDF

  2. Agregar Referencias: Una vez instalado, importa IronPDF en tu proyecto:
using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Es importante recordar que IronPDF requiere una clave de licencia para uso comercial/uso fuera de desarrollo.

Implementación de la Conversión de HTML a PDF

Uso de iTextSharp

Una vez configurado iTextSharp, asegúrate de tener el paquete itextsharp.xmlworker instalado en tu proyecto antes de empezar a crear PDFs a partir de contenido HTML. Sin embargo, te enfrentarás a desafíos con HTML más complejo, especialmente cuando se involucran estilos CSS. iTextSharp tiende a requerir un esfuerzo adicional para lograr un estilo perfecto en comparación con IronPDF. Es importante recordar que iTextSharp maneja solo HTML/CSS2 básico (sin flexbox, sin grid, CSS limitado).

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

Archivo PDF de salida

Salida HTML a PDF de iTextSharp

Usando IronPDF

IronPDF simplifica el proceso de generación de PDF, capaz de convertir fácilmente contenido HTML en nuevos documentos PDF con solo unas pocas líneas de código, como se demuestra en el ejemplo de código a continuación. Es capaz de trabajar con documentos HTML avanzados con archivos CSS utilizados para el estilo, cadenas HTML y contenido web pesado en CSS/JavaScript.

Aquí hay un ejemplo simple que incluye CSS inline:

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

Archivo PDF de salida

Salida HTML a PDF de IronPDF

Con IronPDF, puedes esperar un archivo PDF pulido con un estilo CSS preciso, como se muestra en el ejemplo de código anterior, lo que lo convierte en una opción popular para muchos desarrolladores que trabajan con archivos HTML complejos, cadenas y más. Más allá de las tareas simples de conversión de documentos HTML a PDF, IronPDF es capaz de realizar tareas avanzadas de manipulación de PDF y seguridad en PDF. Esto lo convierte en una excelente biblioteca de PDF todo en uno.

Diferencias Clave y Panorama Competitivo

Al evaluar iTextSharp e IronPDF, es importante considerar no solo sus características, sino también el panorama competitivo. Otros competidores como Apryse y Aspose.PDF ofrecen soluciones similares de HTML a PDF, pero con sus propios compromisos en términos de precios y funcionalidad.

Característica IronPDF iTextSharp Apryse Aspose.PDF
Facilidad de uso Alta Media Alta Media
Soporte CSS Completo Parcial Completo Completo
Licenciamiento Comercial Código Abierto Comercial Comercial
Soporte Excelente Comunidad Premium Premium
Precios Desde $799 Licencia gratuita/comercial Bajo cotización Desde $1,679 al año

IronPDF destaca por su soporte integral para HTML5 moderno y CSS3, lo cual es crítico para la mayoría de los desarrolladores hoy en día. Su soporte ampliado para manipular documentos PDF, control sobre la creación de documentos PDF, facilidad con el proceso de conversión y más, hacen de IronPDF una biblioteca de PDF popular.

Conclusión y Recomendaciones

In conclusion, both IronPDF and iTextSharp offer strong capabilities for HTML to PDF conversion in C#, but they cater to different types of developers. Si buscas una solución de código abierto con un fuerte soporte comunitario, iTextSharp puede ser la elección correcta. Sin embargo, para los desarrolladores que necesitan facilidad de uso, soporte robusto de CSS y una solución comercial, IronPDF ofrece una experiencia mucho más simplificada y rica en funciones. Ya sea que estés buscando una herramienta que pueda automatizar la generación de facturas, crear documentos PDF con marca o convertir páginas web enteras en archivos PDF, IronPDF te cubre.

Prueba las funciones fáciles de usar de IronPDF hoy – descarga la versión de prueba gratuita para una experiencia de primera mano y descubre qué tan fácil puede ser la conversión de HTML a PDF.

Por favor notaiTextSharp es una marca registrada de su respectivo propietario. Este sitio no está afiliado, respaldado o patrocinado por iTextSharp. Todos los nombres de productos, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son solo para fines informativos y reflejan información públicamente disponible en el momento de la redacción.

Preguntas Frecuentes

¿Cómo puedo convertir HTML a PDF en C#?

Puede usar IronPDF para convertir HTML a PDF utilizando su método RenderHtmlAsPdf para cadenas HTML o RenderHtmlFileAsPdf para archivos HTML. Esta biblioteca soporta HTML5 y CSS3 modernos, asegurando un estilo y renderizado precisos.

¿Cuáles son las principales ventajas de usar IronPDF para la conversión de HTML a PDF?

IronPDF ofrece un soporte robusto para HTML5 y CSS3 modernos, lo que lo hace ideal para manejar contenido web complejo. Su API amigable permite una integración fluida con C#, y también soporta contenido pesado en JavaScript, asegurando la conversión precisa de páginas web dinámicas.

¿Por qué un desarrollador podría elegir iTextSharp sobre IronPDF?

Un desarrollador podría elegir iTextSharp si prefiere una solución de código abierto con opciones flexibles para personalización. iTextSharp, ahora conocido como iText7, es adecuado para quienes tienen la experiencia para manejar su complejidad, especialmente cuando hay HTML y CSS avanzados involucrados.

¿Puede IronPDF manejar JavaScript en contenido HTML?

Sí, IronPDF puede procesar JavaScript dentro de contenido HTML gracias a sus capacidades de renderizado avanzadas, lo que lo hace una opción adecuada para convertir páginas web dinámicas e interactivas en PDFs.

¿Cómo puedo instalar IronPDF en un proyecto C#?

Puede instalar IronPDF a través del Gestor de Paquetes NuGet en Visual Studio. Utilice el comando Install-Package IronPdf en la Consola del Gestor de Paquetes o busque IronPDF en la interfaz de usuario del Gestor de Paquetes NuGet.

¿Qué se debe considerar al elegir entre IronPDF e iTextSharp?

Al elegir entre los dos, considere su necesidad de facilidad de uso, soporte para CSS y JavaScript, requisitos de licencia y la complejidad del contenido HTML. IronPDF sobresale en tecnologías web modernas e integración fluida, mientras iTextSharp es una buena opción para quienes prefieren una solución de código abierto.

¿Hay un requisito de licencia para IronPDF?

Sí, IronPDF requiere una licencia comercial para su uso fuera de entornos de desarrollo. Las licencias se pueden adquirir según el nivel de soporte y características necesarias.

¿Cuáles son algunos problemas comunes al convertir HTML a PDF con iTextSharp?

Los problemas comunes con iTextSharp incluyen el manejo de HTML y CSS complejos, ya que podría requerir configuraciones adicionales y personalizaciones. Los desarrolladores a menudo necesitan ajustar su código para asegurar un estilo y renderizado adecuados del contenido web avanzado.

¿Cómo se compara IronPDF con otras bibliotecas PDF como Aspose.PDF?

IronPDF ofrece facilidad de uso y soporte integral para estándares web modernos, similar a Aspose.PDF. Su precio competitivo y conjunto de características lo convierten en una opción fuerte para los desarrolladores que necesitan una conversión de HTML a PDF confiable manteniendo la calidad y el rendimiento.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más