iText frente a IronPDF: Guía de comparación técnica
iTextvs IronPDF: Licencias, paradigmas de API y generación moderna de PDF en .NET
Cuando los desarrolladores .NET evalúan las bibliotecas PDF, iText(incluido iText7 y el antiguo iTextSharp) aparece como una opción completa con amplias capacidades de manipulación de PDF. Sin embargo, iTextpresenta importantes problemas de licencia: la licencia AGPL exige que cualquier aplicación web que utilice iTextabra todo su código fuente o pague una costosa suscripción comercial.IronPDFofrece un enfoque diferente: una biblioteca comercial con opciones de licencia perpetua, conversión integrada de HTML a PDF y un moderno motor de renderizado Chromium.
Esta comparación examina ambas bibliotecas en dimensiones técnicamente relevantes para ayudar a los desarrolladores profesionales y arquitectos a tomar decisiones informadas para sus requisitos de .NET PDF.
Entender iText/ iTextSharp
iText es una biblioteca PDF con doble licencia que permite generar archivos PDF desde cero, modificar documentos existentes y realizar operaciones como añadir texto, imágenes y funciones de seguridad. La biblioteca utiliza un enfoque API programático en el que los desarrolladores construyen contenido PDF utilizando clases como PdfWriter, PdfDocument, Document, Paragraph, <código>Tabla</códigoy Cell.
iText 7 utiliza espacios de nombres como iText.Kernel.Pdf, iText.Layout, iText.Layout.Element y iText.Html2pdf. La creación de PDF sigue un patrón que consiste en crear un PdfWriter, envolverlo en un Documento PDFy, a continuación, crear un Documentopara el diseño del contenido. El texto se añade mediante objetos Paragraph, las tablas mediante objetos <código>Tabla</códigoy Cell, y las imágenes mediante la clase Imagencon ImageDataFactory.
Para la conversión de HTML a PDF, iTextrequiere el complemento independiente pdfHTML, disponible a través del espacio de nombres iText.Html2pdf con el método HtmlConverter.ConvertToPdf(). Este complemento se vende por separado con un coste adicional.
iText está disponible bajo la licencia AGPL, que tiene características virales: cualquier software que incorpore código AGPL en una aplicación web debe publicarse también como código abierto, o el desarrollador debe adquirir una licencia comercial. iTextha eliminado las licencias perpetuas y exige renovaciones anuales de la suscripción para uso comercial.
Entendiendo IronPDF
IronPDF es una biblioteca comercial de PDF diseñada para desarrolladores .NET que prefieren trabajar con HTML y CSS en lugar de la construcción programática de PDF. La biblioteca utiliza un moderno motor de renderizado Chromium, que proporciona una renderización precisa de HTML5, CSS3, JavaScript y sistemas de diseño modernos como Flexbox y Grid.
IronPDF utiliza la clase <código>ChromePdfRenderer</códigocomo mecanismo principal de generación de PDF con métodos como RenderHtmlAsPdf(), RenderUrlAsPdf() y RenderHtmlFileAsPdf(). La biblioteca devuelve objetos Documento PDFque se pueden guardar con SaveAs() o a los que se puede acceder como BinaryData. La configuración utiliza las propiedades RenderingOptions para el tamaño del papel, los márgenes, los encabezados y los pies de página.
IronPDF ofrece opciones de licencia perpetua y de suscripción, sin requisitos de licencia viral. La conversión de HTML a PDF está integrada en el producto base, sin necesidad de complementos adicionales.
Comparación de licencias y modelos de negocio
La diferencia más significativa entre estas bibliotecas tiene que ver con las licencias y las implicaciones comerciales.
| Característica | iText7 / iTextSharp | IronPDF |
|---|---|---|
| Licencia | AGPL (viral) o suscripción cara | Opción comercial perpetua |
| HTML a PDF | Complemento pdfHTML independiente (coste adicional) | Renderizador Chromium integrado |
| Riesgo del código abierto | Deben ser aplicaciones web de código abierto bajo licencia AGPL | Sin requisitos virales |
| Modelo de precios | Sólo por suscripción | Perpetua o por suscripción |
| Opción perpetua | Eliminado | Disponible en |
La trampa de la licencia AGPL es especialmente problemática para las aplicaciones web comerciales. Si utiliza iTexten una aplicación web sin adquirir una licencia comercial, la AGPL le exige que abra toda su aplicación, no solo el código PDF, sino toda su base de código.
Comparación de paradigmas de API
La filosofía fundamental de diseño de las API difiere significativamente entre las bibliotecas.
| Aspecto | iText | IronPDF |
|---|---|---|
| Paradigma API | Programática (párrafo, tabla, celda) | HTML primero con CSS |
| Soporte CSS | CSS básico (mediante el complemento pdfHTML) | CSS3 completo, Flexbox, Grid |
| JavaScript | Ninguno | Ejecución completa |
| Curva de aprendizaje | Steep (sistema de coordenadas PDF) | Para desarrolladores web |
| Construcción de contenido | Objetos manuales de bajo nivel | Plantillas HTML |
iText crea PDF mediante programación con construcción explícita de objetos.IronPDFutiliza HTML/CSS, lo que permite a los desarrolladores web aplicar directamente sus conocimientos.
Comparación de códigos: Operaciones comunes en PDF
Conversión de HTML a PDF
La operación más fundamental demuestra los diferentes enfoques y requisitos complementarios.
iText (requiere el complemento pdfHTML):
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;
class Program
{
static void Main()
{
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
string outputPath = "output.pdf";
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
HtmlConverter.ConvertToPdf(html, fs);
}
}
}// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;
class Program
{
static void Main()
{
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
string outputPath = "output.pdf";
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
HtmlConverter.ConvertToPdf(html, fs);
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comiText requiere el espacio de nombres independiente iText.Html2pdf (del complemento pdfHTML), crea un FileStream manualmente y llama a HtmlConverter.ConvertToPdf()para escribir directamente en el flujo.
IronPDF crea un ChromePdfRenderer, llama a RenderHtmlAsPdf() con la cadena HTML y guarda con SaveAs(). El motor Chromium ofrece compatibilidad total con CSS3 y JavaScript sin necesidad de complementos adicionales.
Para conocer las opciones avanzadas de conversión de HTML, consulte la Guía de conversión de HTML a PDF.
Creación de PDF con texto e imágenes
La construcción programática de PDF muestra la diferencia de paradigma más claramente.
iText:
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
static void Main()
{
string outputPath = "document.pdf";
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdf = new PdfDocument(writer))
using (Document document = new Document(pdf))
{
document.Add(new Paragraph("Sample PDF Document"));
document.Add(new Paragraph("This document contains text and an image."));
Image img = new Image(ImageDataFactory.Create("image.jpg"));
img.SetWidth(200);
document.Add(img);
}
}
}// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
static void Main()
{
string outputPath = "document.pdf";
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdf = new PdfDocument(writer))
using (Document document = new Document(pdf))
{
document.Add(new Paragraph("Sample PDF Document"));
document.Add(new Paragraph("This document contains text and an image."));
Image img = new Image(ImageDataFactory.Create("image.jpg"));
img.SetWidth(200);
document.Add(img);
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comiText requiere crear un PdfWriter, envolverlo en un PdfDocument, crear un Documentopara la maquetación y, a continuación, añadir objetos Párrafoy objetos Imagencreados mediante ImageDataFactory. Cada elemento requiere una construcción y configuración explícitas.
IronPDF utiliza HTML estándar -encabezados, párrafos y etiquetas <img>-, todo ello estilizado con atributos HTML o CSS conocidos. El motor Chromium se encarga de la renderización, produciendo el mismo resultado con mucho menos código.
Fusión de varios PDF
La fusión de documentos demuestra las diferencias de complejidad de las API.
iText:
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;
class Program
{
static void Main()
{
string outputPath = "merged.pdf";
string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
PdfMerger merger = new PdfMerger(pdfDoc);
foreach (string file in inputFiles)
{
using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
{
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
}
}
}
}
}// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;
class Program
{
static void Main()
{
string outputPath = "merged.pdf";
string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
PdfMerger merger = new PdfMerger(pdfDoc);
foreach (string file in inputFiles)
{
using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
{
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
}
}
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfDocuments = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
};
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfDocuments = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
};
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comiText requiere crear un <código>PdfWriter</códigopara la salida, crear un Documento PDFde destino, crear un PdfMerger, luego iterar a través de los archivos de origen para crear instancias de <código>PdfReader</códigoy PdfDocument, llamar a merger.Merge() con rangos de páginas y gestionar la eliminación de todos los objetos.
IronPDF carga documentos con PdfDocument.FromFile(), crea una lista y llama al método estático PdfDocument.Merge(). La operación es significativamente más concisa.
Obtenga más información sobre la manipulación de PDF en Tutoriales de IronPDF.
Referencia de mapeo de API
Para los desarrolladores que estén evaluando la migración a iTexto comparando capacidades, este mapeo muestra operaciones equivalentes:
Mapeo de clases
| clase iText7 | clase iTextSharp | Equivalente de IronPDF |
|---|---|---|
| <código>PdfWriter</código | <código>PdfWriter</código | <código>ChromePdfRenderer</código |
Documento PDF | Documento | Documento PDF |
Documento | Documento | <código>ChromePdfRenderer.RenderHtmlAsPdf()</código |
Párrafo | Párrafo | HTML <p>, <h1>, etc. |
| <código>Tabla</código | Tabla PDF | HTML <código> |
Célula | PdfPCell | HTML <td>, <th> |
Imagen | Imagen | HTML <código> |
Lista | Lista | HTML <ul>, <ol> |
| <código>ListItem</código | <código>ListItem</código | HTML <li> |
| <código>PdfReader</código | <código>PdfReader</código | <código>PdfDocument.FromFile()</código |
| <código>PdfMerger</código | N/A | PdfDocument.Merge() |
Extractor de texto pdf | Extractor de texto pdf | <código>pdf.ExtractAllText()</código |
Métodos
| Tarea | iText7 | IronPDF |
|---|---|---|
| Crear PDF a partir de HTML | HtmlConverter.ConvertToPdf() | renderer.RenderHtmlAsPdf() |
| Crear PDF a partir de URL | Descargar HTML + convertir | renderer.RenderUrlAsPdf() |
| Crear PDF a partir de un archivo | <código>HtmlConverter.ConvertToPdf(File.ReadAllText())</código | renderer.RenderHtmlFileAsPdf() |
| Guardar en archivo | document.Close() (vía stream) | <código>pdf.SaveAs()</código |
| Guardar en bytes | <código>memoryStream.ToArray()</código | <código>pdf.BinaryData</código |
| Abrir PDF existente | nuevo PdfDocument(nuevo PdfReader(ruta)) | <código>PdfDocument.FromFile()</código |
| Fusionar PDF | <código>PdfMerger.Merge()</código | PdfDocument.Merge() |
| Extraer texto | <código>PdfTextExtractor.GetTextFromPage()</código | <código>pdf.ExtractAllText()</código |
Mapeo de estilos
| método iText7 | Equivalente de IronPDF |
|---|---|
| <código>SetTextAlignment(TextAlignment.CENTER)</código | CSS alineación de texto: centro |
| <código>SetFontSize(12)</código | CSS tamaño de fuente: 12px |
| <código>SetBold()</código> | CSS font-weight: negrita |
| <código>SetBackgroundColor()</código | CSS color de fondo |
| <código>SetBorder()</código> | CSS borde |
Resumen comparativo de características
| Característica | iText | IronPDF |
|---|---|---|
| Construcción programática de PDF | ✅(Enfoque principal) | ⚠️ (en HTML) |
| HTML a PDF | ⚠️ (Requiere el complemento pdfHTML) | ✅(Integrado) |
| Compatibilidad con CSS3 | ⚠️ (Básico vía pdfHTML) | ✅(Completo) |
| Flexbox/Grid | ❌ | ✅ |
| Ejecución de JavaScript | ❌ | ✅ |
| Fusión de PDF | ✅(PdfMerger) | ✅(PdfDocument.Merge()) |
| Extracción de Texto | ✅(PdfTextExtractor) | ✅(ExtractAllText()) |
| Licencia perpetua | ❌(Eliminado) | ✅ |
| Sin riesgo AGPL | ❌(AGPL o suscripción) | ✅ |
| Apoyo a la comunidad | ✅(Extenso) | ✅ |
Cuándo los equipos consideran cambiar de iTexta IronPDF
Los equipos de desarrollo evalúan la transición de iTextaIronPDFpor varias razones:
Trampa de la licencia AGPL: La licencia AGPL es muy restrictiva para las aplicaciones web comerciales. Si utiliza iTexten una aplicación web sin adquirir una licencia comercial, la AGPL le exige que abra toda su aplicación, no solo el código PDF, sino toda su base de código. Los equipos que desarrollan software propietario a menudo no pueden aceptar este requisito de licencia viral.
Licencias comerciales por suscripción: iTextha eliminado las licencias perpetuas, requiriendo renovaciones anuales de suscripción para uso comercial. Los equipos que prefieren las compras únicas encuentran que la opción de licencia perpetua deIronPDFes más adecuada para el presupuesto.
Coste del complemento pdfHTML: Para convertir HTML a PDF con iText, los desarrolladores deben invertir en el complemento pdfHTML por separado, lo que aumenta los costes y la complejidad.IronPDFincluye la conversión de HTML a PDF en el producto base con un moderno motor de renderizado Chromium.
Complejidad programática de la API: iTextrequiere la construcción manual de PDF de bajo nivel con Párrafo, Tabla, Celda y otros objetos. Los equipos con experiencia en desarrollo web encuentran el enfoque HTML/CSS deIronPDFmás intuitivo y productivo.
Estándares web modernos: Incluso con pdfHTML, iTexttiene un soporte limitado para CSS y JavaScript complejos. El motor Chromium deIronPDFproporciona una ejecución completa de CSS3, Flexbox, Grid y JavaScript para contenidos web modernos.
Código base simplificado: La conversión del enfoque programático de iTextal paradigma HTML-first deIronPDFa menudo resulta en un código significativamente menor. Las tablas de informes que requieren docenas de líneas con objetos Table, Célulay Párrafose convierten en simples tablas HTML con estilo CSS.
Fuerzas y consideraciones
Puntos fuertes de iText
- Completo conjunto de funciones: Amplias capacidades de manipulación de PDF
- Amplia adopción: Amplia comunidad y extensa documentación
- Cross-Platform: Funciona en varias plataformas .NET
- Control detallado: Manipulación directa de objetos PDF para necesidades especializadas
Consideraciones sobre iText
- Licencia AGPL: La licencia viral requiere aplicaciones web de código abierto o suscripción comercial
- Sólo suscripción: Se elimina la licencia perpetua
- Complemento pdfHTML: HTML a PDF requiere compra por separado
- Complejidad programática: curva de aprendizaje pronunciada con el sistema de coordenadas PDF
- CSS Moderno Limitado: Soporte CSS básico incluso con pdfHTML
- Sin JavaScript: No se puede ejecutar JavaScript en el contenido HTML
Puntos fuertes de IronPDF
- Licencia perpetua: Opción de compra única
- Sin riesgo AGPL: Mantenga el código propietario cerrado
- Incorporación de HTML a PDF: no es necesario ningún complemento aparte
- Motor Chromium: Compatibilidad total con CSS3, Flexbox, Grid y JavaScript
- Amigable para desarrolladores web: Utiliza conocimientos conocidos de HTML/CSS
- API más sencilla: Métodos concisos para operaciones comunes
- Recursos completos: tutoriales y documentación exhaustivos
Consideraciones sobre IronPDF
- Licencia comercial: Necesaria para uso en producción
- Paradigma HTML-First: Enfoque diferente de la construcción programática
Conclusión
iText yIronPDFrepresentan enfoques fundamentalmente diferentes para la generación de PDF en aplicaciones .NET. iTextofrece una completa construcción programática de PDF mediante clases como Párrafo, Tabla y Celda, pero conlleva importantes problemas de licencia: la licencia AGPL requiere aplicaciones web de código abierto, se ha eliminado la licencia perpetua y la conversión de HTML a PDF requiere la compra de un complemento pdfHTML por separado.
IronPDF ofrece una alternativa moderna con conversión integrada de HTML a PDF mediante un motor Chromium, opciones de licencia perpetua y sin requisitos de licencia viral. El enfoque HTML-first permite a los desarrolladores web aplicar directamente sus conocimientos, lo que a menudo se traduce en un código más sencillo y fácil de mantener.
A medida que las organizaciones planifican .NET 10, C# 14 y el desarrollo de aplicaciones hasta 2026, la elección entre la construcción programática de PDF con licencia AGPL y el renderizado basado en HTML con licencia comercial afecta significativamente tanto al cumplimiento legal como a la productividad del desarrollo. Los equipos que buscan eliminar el riesgo de AGPL, reducir la complejidad de las licencias o aprovechar las habilidades de desarrollo web para la generación de PDF encontrarán queIronPDFaborda estos requisitos de manera eficaz.
Comience a evaluarIronPDFcon una prueba gratuita y explore la documentación exhaustiva para evaluar si se adapta a sus requisitos específicos.