COMPARACIóN DE PRODUCTOS

iTextSharp C# HTML to PDF Alternativa para .NET Core

Actualizado 8 de noviembre, 2021
Compartir:

IronPDF y iText 7 (antes conocido como iTextSharp) ambos proporcionan la capacidad de generar, manipular y imprimir PDF en .NET y .NET Core.

Qué Biblioteca PDF en C# es el más adecuado para su proyecto .NET? El objetivo de este artículo es ayudar a los lectores a tomar una decisión adecuada e informada.


Visión general

Comparación de bibliotecas C

IronPDF es:

  • .NET Primero
  • Abiertamente comercial con precios publicados
  • Se centra en renderizar PDF a partir de HTML para que los desarrolladores no tengan que aprender cómo funcionan los PDF.
  • Una gran elección para programadores pragmáticos que intentan hacer su trabajo.

    iTexto (iTextSharp) es:

  • Java Primero
  • Muy de código abierto. Es posible que les pidamos un presupuesto para un uso distinto al de los proyectos AGLP de código abierto estricto.
  • Se centra en la representación de PDF mediante una API programática basada en el funcionamiento interno de los PDF.
  • Una gran elección para proyectos libres y académicos

    iText 7 vs. Librería .NET IronPDF

    iTextSharp existe desde hace al menos 6 años, basado en un código Java de código abierto llamado iText, y todavía tiene cierto sabor a Java. Los desarrolladores que aprendieron Java por primera vez pueden encontrar esta biblioteca familiar.

IronPDF es una biblioteca .NET con una API diseñada para facilitar su uso en Visual Studio. .NET existe desde hace casi 20 años, creciendo y expandiéndose continuamente, y abriendo muchas posibilidades, que IronPDF está diseñado para aprovechar. Nos permite crear y manipular documentos PDF en proyectos .NET framework. Puede descargar IronPDF como Alternativa a iTextSharp.

La API de renderizado de iText y IronPDF son bastante diferentes. Comparemos cada segmento de código para añadir encabezados y pies de página a un documento PDF.

Añadir encabezados y pies de página a PDF en C# con IronPDF

Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "{pdf-title}",
    DrawDividerLine = true,
    FontSize = 16
};
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    LeftText = "{date} {time}",
    RightText = "Page {page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 14
};
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "{pdf-title}",
    DrawDividerLine = true,
    FontSize = 16
};
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    LeftText = "{date} {time}",
    RightText = "Page {page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 14
};
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
	.CenterText = "{pdf-title}",
	.DrawDividerLine = True,
	.FontSize = 16
}
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
	.LeftText = "{date} {time}",
	.RightText = "Page {page} of {total-pages}",
	.DrawDividerLine = True,
	.FontSize = 14
}
VB   C#

iTextSharp Añadir Encabezados y Pies de Página PDF

Paragraph header = new Paragraph("HEADER")
    .SetTextAlignment(TextAlignment.CENTER)
    .SetFontSize(16);
document.Add(header);

for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
    Rectangle pageSize = pdf.GetPage(i).GetPageSize();
    float x = pageSize.GetWidth() / 2;
    float y = pageSize.GetTop() - 20;
    document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}

document.SetTopMargin(50);
document.SetBottomMargin(50);
Paragraph header = new Paragraph("HEADER")
    .SetTextAlignment(TextAlignment.CENTER)
    .SetFontSize(16);
document.Add(header);

for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
    Rectangle pageSize = pdf.GetPage(i).GetPageSize();
    float x = pageSize.GetWidth() / 2;
    float y = pageSize.GetTop() - 20;
    document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}

document.SetTopMargin(50);
document.SetBottomMargin(50);
Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
document.Add(header)

Dim i As Integer = 1
Do While i <= pdf.GetNumberOfPages()
	Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
	Dim x As Single = pageSize.GetWidth() / 2
	Dim y As Single = pageSize.GetTop() - 20
	document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
	i += 1
Loop

document.SetTopMargin(50)
document.SetBottomMargin(50)
VB   C#

Echando un vistazo rápido al código, se puede ver que IronPDF es pragmático, basado en los requisitos comunes de los usuarios finales.

iText es una biblioteca de nivel inferior que se centra en una API de dibujo en la que añadimos objetos, formas y texto a las páginas.

iTextSharp.dll utiliza un modelo principalmente programático para renderizar PDFs. Cuando se utiliza la biblioteca iTextSharp PDF, cada fragmento de texto, gráfico, tabla o línea del PDF se "traza" o dibuja en un PDF. La API parece de bajo nivel y se centra en el estándar de documentos PDF. Este modelo permite precisión, pero puede requerir que los desarrolladores aprendan un poco sobre cómo funcionan los PDF. Ajustarse a los estilos de diseño existentes o a los activos web puede requerir un poco de iteración y lectura de la información. Documentación de iTextSharp. En consonancia con su herencia, la metodología y la interfaz programática tienen un marcado sabor a Java.

En cambio, IronPDF utiliza un renderizador de navegador web totalmente integrado para convertir HTML a PDF. Después de (1 y 2 líneas) Ejemplos de código C Los desarrolladores pueden generar PDF a partir de HTML, imágenes y CSS existentes o nuevos. Esto permite a los desarrolladores trabajar en estrecha colaboración con los activos web existentes y también trabajar en paralelo con los diseñadores durante un proyecto. iText incluye la funcionalidad HTML a PDF para C# .NET, aunque no es, aparentemente, la característica dominante de la biblioteca.

Siga leyendo para obtener más detalles comparativos sobre las diferentes formas en que IronPDF e iTextSharp pueden ayudar a los desarrolladores a alcanzar los siguientes objetivos:

1. Licencias

Las opciones de licencia también son un factor importante para los proyectos de los desarrolladores. iTextSharp es de código abierto bajo el acuerdo de licencia AGPL. Cuando la licencia se conceda bajo AGLP, cualquier persona que utilice cualquier parte de una aplicación que contenga iTextSharp (incluso a través de la red de la empresa o de Internet) puede tener derecho a una copia completa del código fuente de la aplicación. Es excelente para el trabajo académico. Si deseamos utilizar iTextSharp en aplicaciones comerciales, lo mejor es ponerse en contacto con iText y pídales un presupuesto sobre los precios del uso comercial de iText.

IronPDF es libre para el desarrollo y puede ser con licencia para uso comercial a precios razonables publicados públicamente, a partir de $749.

IronPDF e iTextSharp

Así es como se comparan las dos bibliotecas:

IronPDFiTextSharp
Convierte HTML a PDF mediante un completo navegador web integradoHTML básico a PDF mediante un complemento pdfHTML
Foco de renderización: Navegador web integradoEnfoque de renderizado: Modelo de dibujo programático
IronPDF dispone de licencias explícitas con precios publicadosAGPL Precios de uso comercial no publicados.
Fácil de codificar con .NET First DesignBasado en una API Java
No es adecuado para tareas académicas y trabajos de curso Excelente para trabajos académicos e investigación

Principales diferencias

Generar PDF a partir de HTML con IronPDF

IronPDF permite a los desarrolladores de .NET y .NET Core generar, fusionar, dividir, editar y extraer contenido PDF fácilmente en C#, F# y VB.NET para .NET Core y .NET Framework, así como en crear PDF a partir de archivos HTML, ASPX, CSS, JS e imágenes.

Utiliza un navegador web totalmente integrado para convertir HTML a PDF. Esto permite a los desarrolladores generar PDF a partir de HTML, imágenes y CSS, y trabajar en estrecha colaboración con los activos web existentes y también en paralelo con los diseñadores durante un proyecto.

2. Características de IronPDF

IronPDF se centra realmente en la productividad de los desarrolladores. La biblioteca simplifica muchas tareas complejas habituales del código PDF en cómodos métodos de C# para extraer texto e imágenes, firmar PDFS, editar PDFS con nuevo HTML y mucho más, sin que el desarrollador necesite estudiar el estándar del documento PDF para comprender cómo conseguir su mejor resultado.

  • Generación de documentos PDF a partir de archivos HTML, imágenes y ASPX
  • Lectura de texto PDF
  • Extraer datos e imágenes de PDF
  • Fusión de documentos PDF
  • Dividir PDF
  • Manipulación de PDF

2. Características de la documentación de iTextSharp

En iTextSharp.dll utiliza un modelo principalmente programático para renderizar los PDF, y cuenta con API avanzadas de manipulación de PDF que son potentes y siguen al pie de la letra el estándar PDF.

  • Licencias de código abierto estrictas de la AGLP
  • Modelo de dibujo programático
  • Editar y leer PDF
  • Funcionalidad sólida para la manipulación de PDF
  • Basado en una biblioteca Java

    Comparemos creando un proyecto de ejemplo que utilice ambas bibliotecas:


    Ejemplo de proyecto

    Crear un proyecto ASP.NET

    Siga los siguientes pasos para crear un sitio web ASP.NET:

  1. Abrir Visual Studio
  2. Haga clic en Archivo > Nuevo proyecto
  3. Seleccione Web en Visual C# en el cuadro de lista Tipo de proyecto
  4. Seleccione Aplicación Web ASP.NET

Figura 1 - Nuevo proyecto

  • Haga clic en OK
  • En la siguiente pantalla, seleccione Formularios Web, como se muestra en la Figura 2, por debajo

Figura 2 - Formularios web

  • Haga clic en OK

    Ahora tenemos algo con lo que trabajar. Vamos a instalar IronPDF.


    Comenzar

3. Instalación de la biblioteca IronPDF

Para poder utilizar IronPDF, primero hay que instalarlo (gratis). Hay dos opciones:

  • NuGet
  • Descargar la biblioteca

    Veámoslo más de cerca.

    Biblioteca NuGet C# para PDF

    Instalar con NuGet

    Install-Package IronPdf
    o
    Java PDF JAR

    Descargar DLL

    Descargar DLL

    Instalar manualmente en su proyecto

3.1. Instalar usando NuGet

Hay tres formas de instalar el paquete NuGet de IronPDF:

  1. Visual Studio
  2. Símbolo del sistema para desarrolladores
  3. Descargue directamente el paquete NuGet

    Hagámoslos uno por uno.

3.2. Visual Studio

Visual Studio proporciona el gestor de paquetes NuGet para que puedas instalar paquetes NuGet en tus proyectos. Puede acceder a él a través del menú Proyecto o haciendo clic con el botón derecho del ratón en el Explorador de soluciones. Ambas opciones se muestran a continuación en las figuras 3 y 4

Figura 3 - Menú de proyectos

Figura 4 - Haga clic con el botón derecho en Explorador de soluciones

Después de hacer clic en Manage NuGet Packages desde cualquiera de las opciones, busque el paquete IronPDF e instálelo como se muestra en la Figura 5.

Gráfico 5 - Instalar el paquete NuGet IronPDF

3.3. Símbolo del sistema para desarrolladores

Los siguientes pasos abren el símbolo del sistema para desarrolladores e instalan el paquete IronPDF NuGet.

  1. Busque su Instrucción de comandos para desarrolladores; normalmente se encuentra en la carpeta Visual Studio.
  2. Escriba el siguiente comando: PM > Install-Package IronPdf
  3. Pulse Intro
  4. El paquete se instalará
  5. Vuelva a cargar el proyecto de Visual Studio

3.4. Descargue directamente el paquete NuGet

Para descargar el paquete NuGet:

  1. Vaya a https://www.nuget.org/packages/IronPdf/
  2. Haga clic en Descargar paquete
  3. Una vez descargado el paquete, haga doble clic en él
  4. Vuelva a cargar el proyecto de Visual Studio

3.5. Descargar la biblioteca .DLL

La segunda forma de instalar IronPDF es mediante descarga directa.

Figura 6 - Descargar la biblioteca IronPDF

Haga referencia a la Biblioteca en su proyecto siguiendo los pasos siguientes:

  1. Haga clic con el botón derecho en la solución en el Explorador de soluciones
  2. Seleccionar referencias
  3. Buscar la biblioteca IronPDF.dll
  4. Haga clic en OK

Ahora que está configurado, podemos empezar a jugar con las impresionantes características de la biblioteca IronPDF después de la configuración para iTextSharp.

Instalar iTextSharp mediante NuGet

Hay tres formas de instalar iTextSharp NuGet paquete, lo son:

  • Visual Studio
  • Símbolo del sistema para desarrolladores
  • Descargue directamente el paquete NuGet

    Hagámoslos uno por uno.

    Para Visual Studio, busque iText e instale los paquetes correspondientes, como se muestra a continuación.

    Gráfico 7 - iText

    O, en el símbolo del sistema para desarrolladores (como se ha mostrado anteriormente, introduzca el siguiente comando)

  • PM > Install-Package itext7

    O descargue iText 7 directamente desde su sitio web.

    Ahora que ya has creado los proyectos necesarios, vamos a comparar estas dos bibliotecas en código.


    Comparar el Código

4. Crear un PDF a partir de una URL existente

El siguiente código descarga una página web y la convierte en un documento PDF.

4.1. IronPDF Website to PDF

El siguiente código utiliza IronPDF para crear un documento PDF directamente desde una dirección web. También se incluyen encabezados y pies de página personalizados.

/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
    //  Crear un PDF a partir de cualquier página web existente
    var Renderer = new IronPdf.ChromePdfRenderer();

    //  Crear un PDF a partir de un HTML existente
    Renderer.RenderingOptions.MarginTop = 50;  //milímetros
    Renderer.RenderingOptions.MarginBottom = 50;
    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    };
    Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    };

    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

    Renderer.RenderingOptions.EnableJavaScript = true;
    Renderer.RenderingOptions.RenderDelay = 500; //milisegundos

    using var PDF = Renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/Formato_de_documento_portable");

    PDF.SaveAs("wikipedia.pdf");
}
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
    //  Crear un PDF a partir de cualquier página web existente
    var Renderer = new IronPdf.ChromePdfRenderer();

    //  Crear un PDF a partir de un HTML existente
    Renderer.RenderingOptions.MarginTop = 50;  //milímetros
    Renderer.RenderingOptions.MarginBottom = 50;
    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    };
    Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    };

    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

    Renderer.RenderingOptions.EnableJavaScript = true;
    Renderer.RenderingOptions.RenderDelay = 500; //milisegundos

    using var PDF = Renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/Formato_de_documento_portable");

    PDF.SaveAs("wikipedia.pdf");
}
'''
'''IronPDF URL to PDF
'''anchor-ironpdf-website-to-pdf
'''*
Private Sub ExistingWebURL()
	'  Crear un PDF a partir de cualquier página web existente
	Dim Renderer = New IronPdf.ChromePdfRenderer()

	'  Crear un PDF a partir de un HTML existente
	Renderer.RenderingOptions.MarginTop = 50 'milímetros
	Renderer.RenderingOptions.MarginBottom = 50
	Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
	Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
		.CenterText = "{pdf-title}",
		.DrawDividerLine = True,
		.FontSize = 16
	}
	Renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
		.LeftText = "{date} {time}",
		.RightText = "Page {page} of {total-pages}",
		.DrawDividerLine = True,
		.FontSize = 14
	}

	Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print

	Renderer.RenderingOptions.EnableJavaScript = True
	Renderer.RenderingOptions.RenderDelay = 500 'milisegundos

	Dim PDF = Renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/Formato_de_documento_portable")

	PDF.SaveAs("wikipedia.pdf")
End Sub
VB   C#

4.2. iText7 URL a PDF

El siguiente código utiliza iText7 para crear un documento PDF directamente desde una dirección web y añadir encabezados y pies de página.

/**
iText URL to PDF
anchor-itext-url-to-pdf
**/
private void ExistingWebURL()
{
    //Inicializar PDF writer
    PdfWriter writer = new PdfWriter("wikipedia.pdf");
    //Inicializar documento PDF
    using PdfDocument pdf = new PdfDocument(writer);

    ConverterProperties properties = new ConverterProperties();
    properties.SetBaseUri("https://es.wikipedia.org/wiki/Formato_de_documento_portable");

    Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);

    Paragraph header = new Paragraph("HEADER")
        .SetTextAlignment(TextAlignment.CENTER)
        .SetFontSize(16);
    document.Add(header);

    for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
    {
        Rectangle pageSize = pdf.GetPage(i).GetPageSize();
        float x = pageSize.GetWidth() / 2;
        float y = pageSize.GetTop() - 20;
        document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
    }

    document.SetTopMargin(50);
    document.SetBottomMargin(50);

    document.Close();
}
/**
iText URL to PDF
anchor-itext-url-to-pdf
**/
private void ExistingWebURL()
{
    //Inicializar PDF writer
    PdfWriter writer = new PdfWriter("wikipedia.pdf");
    //Inicializar documento PDF
    using PdfDocument pdf = new PdfDocument(writer);

    ConverterProperties properties = new ConverterProperties();
    properties.SetBaseUri("https://es.wikipedia.org/wiki/Formato_de_documento_portable");

    Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);

    Paragraph header = new Paragraph("HEADER")
        .SetTextAlignment(TextAlignment.CENTER)
        .SetFontSize(16);
    document.Add(header);

    for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
    {
        Rectangle pageSize = pdf.GetPage(i).GetPageSize();
        float x = pageSize.GetWidth() / 2;
        float y = pageSize.GetTop() - 20;
        document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
    }

    document.SetTopMargin(50);
    document.SetBottomMargin(50);

    document.Close();
}
'''
'''iText URL to PDF
'''anchor-itext-url-to-pdf
'''*
Private Sub ExistingWebURL()
	'Inicializar PDF writer
	Dim writer As New PdfWriter("wikipedia.pdf")
	'Inicializar documento PDF
	Using pdf As New PdfDocument(writer)
	
		Dim properties As New ConverterProperties()
		properties.SetBaseUri("https://es.wikipedia.org/wiki/Formato_de_documento_portable")
	
		Dim document As Document = HtmlConverter.ConvertToDocument(New FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties)
	
		Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
		document.Add(header)
	
		Dim i As Integer = 1
		Do While i <= pdf.GetNumberOfPages()
			Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
			Dim x As Single = pageSize.GetWidth() / 2
			Dim y As Single = pageSize.GetTop() - 20
			document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
			i += 1
		Loop
	
		document.SetTopMargin(50)
		document.SetBottomMargin(50)
	
		document.Close()
	End Using
End Sub
VB   C#

4.3. Comparación de códigos

Con iText 7, el autor tardaba más en desarrollar el código para convertir a PDF el documento de la URL indicada. Se necesitan dos líneas de código:

MemoryStream wiki = GetStreamFromUrl("https://es.wikipedia.org/wiki/Tiger");

HtmlConverter.ConvertToPdf(wiki, new FileStream("wikipedia.pdf",FileMode.OpenOrCreate));
MemoryStream wiki = GetStreamFromUrl("https://es.wikipedia.org/wiki/Tiger");

HtmlConverter.ConvertToPdf(wiki, new FileStream("wikipedia.pdf",FileMode.OpenOrCreate));
Dim wiki As MemoryStream = GetStreamFromUrl("https://es.wikipedia.org/wiki/Tiger")

HtmlConverter.ConvertToPdf(wiki, New FileStream("wikipedia.pdf",FileMode.OpenOrCreate))
VB   C#

Un objeto MemoryStream así como un objeto FileStream tienen que ser creados con propiedades establecidas.

Echemos un vistazo a IronPDF.

IronPDF necesitaba tres líneas de código (si incluye también el método SaveAs al final del segmento de código)pero, por lo demás, sólo se necesitaban dos líneas:

var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/Formato_de_documento_portable");
PDF.SaveAs("wikipedia.pdf")
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/Formato_de_documento_portable");
PDF.SaveAs("wikipedia.pdf")
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim PDF = Renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/Formato_de_documento_portable")
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'PDF.SaveAs("wikipedia.pdf")
VB   C#

No es necesario un FileStream o un objeto .NET adicional, ya que toda la funcionalidad parece estar incorporada en el método RenderUrlAsPdf de IronPdf.

4.4. Comparación de salidas

Incluyo ahora una comparación de la salida, ya que esto debería aplicarse a todos los ejercicios siguientes que haremos durante este tutorial.

Con este segmento de código hemos transformado el tigre Wikipedia página web a PDF con ambas bibliotecas.

4.5. Salida de archivos iTextSharp 7

El archivo que se generó utilizando la biblioteca de iText tiene 49 páginas. No renderizaba JavaScript ni CSS. El resultado se muestra a continuación:

Figura 8 - Página Wiki de iText Tiger

4.6. Salida de archivos IronPDF

El archivo que se generó utilizando la biblioteca de IronPDF tiene 12 páginas. Renderizaba JavaScript y CSS bastante bien. El resultado se muestra a continuación:

Figura 9 - Página Wiki de IronPDF Tiger

Una imagen vale más que mil palabras.... IronPDF brilla en la conversión de HTML a PDF.


5. Generar PDF a partir de cadena de entrada HTML

El siguiente código crea un documento PDF e imprime una cadena HTML en su interior.

5.1. Documento IronPDF a partir de HTML

El siguiente código hace uso de IronPDF para generar un PDF con entrada HTML.

/**
IronPDF HTML to PDF
anchor-ironpdf-document-from-html
**/
private void HTMLString()
{
    //  Convierte cualquier fragmento o documento HTML en HTML
    var Renderer = new IronPdf.ChromePdfRenderer();
    using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");

    Renderer.RenderingOptions.TextFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>" };

    var OutputPath = "ChromePdfRenderer.pdf";
    PDF.SaveAs(OutputPath);
    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
}
/**
IronPDF HTML to PDF
anchor-ironpdf-document-from-html
**/
private void HTMLString()
{
    //  Convierte cualquier fragmento o documento HTML en HTML
    var Renderer = new IronPdf.ChromePdfRenderer();
    using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");

    Renderer.RenderingOptions.TextFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>" };

    var OutputPath = "ChromePdfRenderer.pdf";
    PDF.SaveAs(OutputPath);
    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
}
'''
'''IronPDF HTML to PDF
'''anchor-ironpdf-document-from-html
'''*
Private Sub HTMLString()
	'  Convierte cualquier fragmento o documento HTML en HTML
	Dim Renderer = New IronPdf.ChromePdfRenderer()
	Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")

	Renderer.RenderingOptions.TextFooter = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"}

	Dim OutputPath = "ChromePdfRenderer.pdf"
	PDF.SaveAs(OutputPath)
	Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
End Sub
VB   C#

5.2. iText 7 HTML a PDF

El siguiente código utiliza iText7 para crear un PDF que contiene texto HTML.

/**
iText HTML to PDF
anchor-itext-html-to-pdf
**/
private void HTMLString()
{
    HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", new FileStream("ChromePdfRenderer.pdf", FileMode.Create));
}
/**
iText HTML to PDF
anchor-itext-html-to-pdf
**/
private void HTMLString()
{
    HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", new FileStream("ChromePdfRenderer.pdf", FileMode.Create));
}
'''
'''iText HTML to PDF
'''anchor-itext-html-to-pdf
'''*
Private Sub HTMLString()
	HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", New FileStream("ChromePdfRenderer.pdf", FileMode.Create))
End Sub
VB   C#

5.3. Comparación de códigos

iText vuelve a hacer uso de la llamada HtmlConverter.ConvertToPdf para enviar una cadena HTML para que salga como PDF.

IronPDF hace uso de su método RenderHtmlAsPdf que está específicamente diseñado para trabajar con HTML y PDF.

Ambas opciones son bastante rápidas y directas, pero IronPDF permite controlar mucho el proceso de renderizado e incluso utilizar HTML para añadir encabezados y pies de página a las páginas PDF.


6. Convertir páginas ASPX a PDF

El siguiente código crea un documento PDF a partir de una página ASPX.

6.1. IronPDF Render PDF desde ASPX

El siguiente código hace uso de IronPDF para crear un PDF que contiene de un archivo ASPX. El formulario Web se convierte en un PDF dinámico añadiendo 1 línea de código al evento Page_Load. IronPdf.AspxToPdf.RenderThisPageAsPdf();

/**
IronPDF ASPX to PDF
anchor-ironpdf-render-pdf-from-aspx
**/
protected void Page_Load(object sender, EventArgs e)
{
    IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
/**
IronPDF ASPX to PDF
anchor-ironpdf-render-pdf-from-aspx
**/
protected void Page_Load(object sender, EventArgs e)
{
    IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
'''
'''IronPDF ASPX to PDF
'''anchor-ironpdf-render-pdf-from-aspx
'''*
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
	IronPdf.AspxToPdf.RenderThisPageAsPdf()
End Sub
VB   C#

6.2. iTextSharp ASPX a PDF

Parece como si la librería pdfHTML de iText7 no soportara la creación de PDFs desde páginas web ASPX. Esta funcionalidad tendría que codificarse proyecto por proyecto.

El desarrollador debe obtener el HTML del framework, entonces el complemento pdfHTML aceptará ese HTML para convertirlo a PDF.


7. Convertir XML a PDF

El siguiente código toma XML y lo convierte a PDF

7.1. IronPDF Crea PDF a partir de XML

/**
IronPDF XML to PDF
anchor-ironpdf-creates-pdf-from-xml
**/
private void XMLtoPDF(string XSLT, string XML)
{
    XslCompiledTransform transform = new XslCompiledTransform();
    using(XmlReader reader = XmlReader.Create(new StringReader(XSLT)))  
    {
        transform.Load(reader);
    }

    StringWriter results = new StringWriter();
    using(XmlReader reader = XmlReader.Create(new StringReader(XML))) 
    {
        transform.Transform(reader, null, results);
    }

    IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
    //  las opciones, cabeceras y pies de página pueden configurarse allí
    //  Convertir nuestro XML en PDF mediante XSLT
    Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf");
}
/**
IronPDF XML to PDF
anchor-ironpdf-creates-pdf-from-xml
**/
private void XMLtoPDF(string XSLT, string XML)
{
    XslCompiledTransform transform = new XslCompiledTransform();
    using(XmlReader reader = XmlReader.Create(new StringReader(XSLT)))  
    {
        transform.Load(reader);
    }

    StringWriter results = new StringWriter();
    using(XmlReader reader = XmlReader.Create(new StringReader(XML))) 
    {
        transform.Transform(reader, null, results);
    }

    IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
    //  las opciones, cabeceras y pies de página pueden configurarse allí
    //  Convertir nuestro XML en PDF mediante XSLT
    Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf");
}
'''
'''IronPDF XML to PDF
'''anchor-ironpdf-creates-pdf-from-xml
'''*
Private Sub XMLtoPDF(ByVal XSLT As String, ByVal XML As String)
	Dim transform As New XslCompiledTransform()
	Using reader As XmlReader = XmlReader.Create(New StringReader(XSLT))
		transform.Load(reader)
	End Using

	Dim results As New StringWriter()
	Using reader As XmlReader = XmlReader.Create(New StringReader(XML))
		transform.Transform(reader, Nothing, results)
	End Using

	Dim Renderer As New IronPdf.ChromePdfRenderer()
	'  las opciones, cabeceras y pies de página pueden configurarse allí
	'  Convertir nuestro XML en PDF mediante XSLT
	Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf")
End Sub
VB   C#

La estructura del archivo XSLT es la siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <p>Titles:
    <xsl:for-each select="catalog/cd">
      <xsl:value-of select="title"/>
      <xsl:if test="position() < last()-1">
        <xsl:text>, </xsl:text>
      </xsl:if>
      <xsl:if test="position()=last()-1">
        <xsl:text>, and </xsl:text>
      </xsl:if>
      <xsl:if test="position()=last()">
        <xsl:text>!</xsl:text>
      </xsl:if>
    </xsl:for-each>
    </p>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <p>Titles:
    <xsl:for-each select="catalog/cd">
      <xsl:value-of select="title"/>
      <xsl:if test="position() < last()-1">
        <xsl:text>, </xsl:text>
      </xsl:if>
      <xsl:if test="position()=last()-1">
        <xsl:text>, and </xsl:text>
      </xsl:if>
      <xsl:if test="position()=last()">
        <xsl:text>!</xsl:text>
      </xsl:if>
    </xsl:for-each>
    </p>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
HTML

7.2. iTextSharp XML a PDF

La compatibilidad de iText con el procesamiento de XML a PDF puede requerir un trabajo de desarrollo personalizado.


8. Crear un gráfico en vivo basado en una entrada externa

El siguiente código obtiene los datos de una fuente externa y crea un gráfico en consecuencia.

8.1. Creación de gráficos IronPDF

El siguiente código utiliza IronPDF para crear rápidamente un gráfico y establecer las propiedades de la página utilizando HTML a PDF.

/**
IronPDF Create Chart
anchor-ironpdf-chart-creation
**/
private void Chart()
{
    var Renderer = new ChromePdfRenderer();
    using var PDF = Renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");

    Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
    Renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
    PDF.SaveAs("chart.pdf");
}
/**
IronPDF Create Chart
anchor-ironpdf-chart-creation
**/
private void Chart()
{
    var Renderer = new ChromePdfRenderer();
    using var PDF = Renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");

    Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
    Renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
    PDF.SaveAs("chart.pdf");
}
'''
'''IronPDF Create Chart
'''anchor-ironpdf-chart-creation
'''*
Private Sub Chart()
	Dim Renderer = New ChromePdfRenderer()
	Dim PDF = Renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006")

	Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
	Renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape
	PDF.SaveAs("chart.pdf")
End Sub
VB   C#

8.2. iText C# Gráficos

El siguiente código utiliza iText7 para crear un gráfico y establecer propiedades. Podemos ver un estilo de dibujo-api programático.

/**
iText Create Chart
anchor-itext-c-charts
**/
private void Chart()
{
    //Inicializar PDF writer
    PdfWriter writer = new PdfWriter("chart.pdf");
    //Inicializar documento PDF
  using PdfDocument pdf = new PdfDocument(writer);

    ConverterProperties properties = new ConverterProperties();
    properties.SetBaseUri("https://bl.ocks.org/mbostock/4062006");

    Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);

    Paragraph header = new Paragraph("HEADER")
        .SetTextAlignment(TextAlignment.CENTER)
        .SetFontSize(16);
    document.Add(header);

    for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
    {
        Rectangle pageSize = pdf.GetPage(i).GetPageSize();
        float x = pageSize.GetWidth() / 2;
        float y = pageSize.GetTop() - 20;
        document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
    }

    document.Close();
}
/**
iText Create Chart
anchor-itext-c-charts
**/
private void Chart()
{
    //Inicializar PDF writer
    PdfWriter writer = new PdfWriter("chart.pdf");
    //Inicializar documento PDF
  using PdfDocument pdf = new PdfDocument(writer);

    ConverterProperties properties = new ConverterProperties();
    properties.SetBaseUri("https://bl.ocks.org/mbostock/4062006");

    Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);

    Paragraph header = new Paragraph("HEADER")
        .SetTextAlignment(TextAlignment.CENTER)
        .SetFontSize(16);
    document.Add(header);

    for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
    {
        Rectangle pageSize = pdf.GetPage(i).GetPageSize();
        float x = pageSize.GetWidth() / 2;
        float y = pageSize.GetTop() - 20;
        document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
    }

    document.Close();
}
'''
'''iText Create Chart
'''anchor-itext-c-charts
'''*
Private Sub Chart()
	'Inicializar PDF writer
	Dim writer As New PdfWriter("chart.pdf")
	'Inicializar documento PDF
  Using pdf As New PdfDocument(writer)
	
		Dim properties As New ConverterProperties()
		properties.SetBaseUri("https://bl.ocks.org/mbostock/4062006")
	
		Dim document As Document = HtmlConverter.ConvertToDocument(New FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties)
	
		Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
		document.Add(header)
	
		Dim i As Integer = 1
		Do While i <= pdf.GetNumberOfPages()
			Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
			Dim x As Single = pageSize.GetWidth() / 2
			Dim y As Single = pageSize.GetTop() - 20
			document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
			i += 1
		Loop
	
		document.Close()
  End Using
End Sub
VB   C#

9. ¿Existe una licencia gratuita de iTextSharp para uso comercial?

La mayor diferencia entre las opciones de licencia de IronPDF e iText es el hecho de que iTextSharp es de código abierto bajo el acuerdo de licencia AGPL. En resumen (como se cita, "La licencia AGPL difiere de las otras licencias GNU en que fue construida para software de red. Puedes distribuir versiones modificadas si llevas un registro de los cambios y la fecha en que los hiciste. Como es habitual con las licencias GNU, debe licenciar los derivados bajo AGPL. Ofrece las mismas restricciones y libertades que la GPLv3, pero con una cláusula adicional que obliga a distribuir el código fuente junto con la publicación web. Since websites and services are never distributed in the traditional sense, the AGPL is the GPL of the web."

Esto significa que si la aplicación utiliza iTextSharp de cualquier forma -incluso a través de una red local O de Internet-, el código fuente completo de la aplicación debe estar a libre disposición de todos los usuarios. Eso no siempre redunda en beneficio del proyecto.

Esta licencia se utiliza a menudo para trabajos altamente académicos que pretenden seguir siendo académicos, y también para proyectos de código abierto que pretenden un uso de pago para el software desplegado fuera de entornos académicos. La naturaleza del acuerdo de licencia AGPL hace que el código abierto iTextSharp difícil para muchos casos de uso comercial, a menos que se pueda acordar y negociar legalmente una licencia privada con los desarrolladores.

IronPDF, por su parte, es una herramienta comercial abierta. Biblioteca PDF en C#. Es gratuito para el desarrollo y siempre se puede obtener una licencia para su implantación comercial. Este claro modelo de licencia no requiere que los desarrolladores aprendan los entresijos de los modelos de licencia GNU / AGPL y, en su lugar, pueden centrarse en sus proyectos. Licencias disponibles para uso en un solo proyecto, desarrolladores individuales, agencias y corporaciones globales, y redistribución SaaS y OEM. No se han negociado honorarios legales, sólo una licencia directa.

10. Resumen

IronPdf es:

  • .NET First con una API intuitiva para desarrolladores de C# y VB
  • Abiertamente comercial con precios publicados
  • Se centra en renderizar PDF a partir de HTML para que los desarrolladores no tengan que aprender cómo funcionan los PDF.
  • Una gran elección para los programadores pragmáticos que intentan hacer un trabajo de forma eficiente.

    iTexto (iTextSharp) es:

  • Java Primero
  • Muy de código abierto. Podemos pedirles un presupuesto para un uso distinto al de los proyectos AGLP de código abierto estricto.
  • Se centra en la representación de PDF mediante una API programática basada en el funcionamiento interno de los PDF.
  • Una gran elección para proyectos gratuitos y académicos, y también para aplicaciones PDF comerciales muy técnicas en proyectos de alto presupuesto.

Acceso rápido a tutoriales

Descargar este proyecto en GitHub

Puedes acceder y compartir todo el código fuente de este tutorial de comparación en C# en GitHub.

Comparación de códigos entre IronPDF e iTextSharp

Obtenga el Manual de inicio rápido de C# PDF

Hemos creado una guía de recursos PDF gratuita para facilitar el desarrollo de archivos PDF en .NET, con guías de funciones y ejemplos comunes para manipular, editar, generar y guardar archivos PDF en C# y VB.NET para su proyecto.

Descargar la Guía

Explorar la referencia API de IronPDF

Explore la Referencia de la API para la Biblioteca IronPDF C#, incluyendo detalles de todas las características, clases, campos de métodos, espacios de nombres y enums de IronPDF.

Ver la referencia de la API
< ANTERIOR
Comparación entre IronPDF y EVOPDF
SIGUIENTE >
Comparación de Syncfusion PDF Viewer para HTML a PDF

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123