IRONSOFTWAREHOME
HERRAMIENTAS PDF

Una Comparación entre IronPDF e iText7

Curtis Chau
Curtis Chau
Updated: 19 de julio de 2026

Para los desarrolladores C# de ISVs españoles, iText 7 representa un caso de riesgo que en 2026 tiene una dimensión adicional respecto a otros mercados europeos. La licencia AGPL de iText 7 ya supone, en cualquier mercado, la obligación de publicar el código fuente si se distribuye el software o se presta como servicio en red. En España, ese riesgo se intersecta con el régimen VeriFactu: la penalización de hasta €150.000/año a los proveedores de software de facturación no conforme afecta al ISV, y el componente que gestiona los PDF de facturación - iText o cualquier alternativa - está en el centro de esa exposición.

Este artículo analiza las alternativas a iText 7 AGPL para C# desde la perspectiva del ISV español bajo el marco VeriFactu, TicketBAI y Facturae.

La especificidad española del riesgo iText 7 AGPL

La AGPL (GNU Affero General Public License) impone que cualquier software que use iText 7 en modalidad AGPL - ya sea distribuido como instalable o accesible como servicio de red - libere su código fuente completo. En el ecosistema .NET, iText 7 es la biblioteca de generación de PDF con mayor penetración histórica, por lo que muchos ISVs tienen proyectos que la incorporan sin haber revisado la compatibilidad de licencia con su modelo de distribución.

Para el ISV español que desarrolla software de facturación, la intersección VeriFactu × AGPL crea tres capas de riesgo simultáneas:

Capa 1 - Riesgo copyleft clásico: La distribución del software de facturación usando iText 7 AGPL sin licencia comercial exige publicar el código fuente. Los algoritmos de generación de huella (hash encadenado VeriFactu), las rutinas de integración con la AEAT y la lógica de cálculo de IVA quedan expuestos bajo AGPL.

Capa 2 - Riesgo regulatorio VeriFactu: La AEAT puede sancionar con hasta €150.000/año al proveedor cuyo software de facturación no cumple los requisitos técnicos de VeriFactu. El ISV es el sancionado, no el usuario final.

Capa 3 - Riesgo de auditoría de licencias: Las grandes empresas clientes del ISV (con obligación de SII o Crea y Crece) realizan auditorías de terceros en sus proveedores de software. Un componente AGPL en un producto de facturación comercial es un hallazgo de auditoría que puede bloquear contratos.

Alternativas a iText 7 AGPL para C# en el contexto español

IronPDF: licencia comercial predecible, motor Chromium para plantillas HTML

IronPDF es una biblioteca PDF nativa .NET con licencia comercial perpetua. Para el ISV español que construye software de facturación bajo VeriFactu, las ventajas sobre iText 7 son concretas:

  • Sin riesgo AGPL: La licencia comercial de IronPDF es propietaria; no impone obligaciones de código abierto sobre el software que lo incorpora.
  • Motor Chromium para HTML a PDF: Las plantillas de factura diseñadas en HTML/CSS se convierten pixel-perfect sin las limitaciones CSS de iText 7 / pdfHTML.
  • Firma PAdES nativa: Soporte directo de firmas digitales bajo eIDAS con certificados FNMT, necesario para TicketBAI y documentos legales bajo LOPDGDD.
  • PDF/A-3 con adjuntos XML: Permite generar el formato híbrido Facturae XML + PDF/A-3 para envíos a FACe y cumplimiento de Crea y Crece.

Ejemplo: factura VeriFactu con VERI*FACTU y QR AEAT

using IronPdf;

// IronPDF: HTML a PDF con motor Chromium
// La plantilla HTML incluye literales VeriFactu obligatorios
string htmlFacturaVeriFactu = @"
<!DOCTYPE html>
<html lang='es'>
<head>
    <style>
        body { font-family: Arial, sans-serif; font-size: 11px; margin: 30px; }
        .encabezado { background:#1a3a5c; color:#fff; padding:15px; margin-bottom:15px; }
        table { width:100%; border-collapse:collapse; margin:15px 0; }
        th { background:#2c3e50; color:#fff; padding:6px; text-align:left; }
        td { padding:6px; border:1px solid #ddd; }
        .totales td { font-weight:bold; background:#ecf0f1; }
        .leyenda-verifactu {
            border:2px solid #1a3a5c; padding:10px;
            text-align:center; font-weight:bold;
            margin-top:20px; font-size:10px;
        }
        .qr-verificacion { float:right; margin-left:15px; }
    </style>
</head>
<body>
    <div class='encabezado'>
        <h2>FACTURA NÚM. {{NumeroFactura}}</h2>
        <p>{{NombreEmisor}} — NIF: {{NifEmisor}}</p>
        <p>Fecha: {{FechaFactura}}</p>
    </div>

    <table>
        <thead><tr><th>Descripción</th><th>Cant.</th><th>P. unit.</th><th>IVA</th><th>Total</th></tr></thead>
        <tbody>{{FilasFactura}}</tbody>
        <tfoot class='totales'>
            <tr><td colspan='4'>Base imponible</td><td>{{BaseImponible}} €</td></tr>
            <tr><td colspan='4'>IVA ({{TipoIva}} %)</td><td>{{CuotaIva}} €</td></tr>
            <tr><td colspan='4'><strong>TOTAL</strong></td><td><strong>{{TotalFactura}} €</strong></td></tr>
        </tfoot>
    </table>

    <!-- QR AEAT — apunta al endpoint de verificación de la AEAT -->
    <img class='qr-verificacion' src='data:image/png;base64,{{QrAeatBase64}}'
         width='90' height='90' alt='QR verificación AEAT' />

    <div class='leyenda-verifactu'>
        VERI*FACTU<br/>
        Factura verificable en la sede electrónica de la AEAT
    </div>
</body>
</html>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.EnableJavaScript = false;

string html = htmlFacturaVeriFactu
    .Replace("{{NumeroFactura}}", factura.Numero)
    .Replace("{{NombreEmisor}}", factura.Emisor.Nombre)
    .Replace("{{NifEmisor}}", factura.Emisor.Nif)
    .Replace("{{FechaFactura}}", factura.Fecha.ToString("dd/MM/yyyy"))
    .Replace("{{QrAeatBase64}}", qrAeatBase64);
// ... resto de sustituciones

using var pdfResult = renderer.RenderHtmlAsPdf(html);
pdfResult.SaveAs($"factura_{factura.Numero}.pdf");
C#

A diferencia de iText 7 + pdfHTML, no se requiere ningún complemento separado para la conversión HTML a PDF - el motor Chromium está integrado en el paquete NuGet.

Comparativa de API: iText 7 vs IronPDF para facturación española

// iText 7 AGPL: construcción programática, requiere pdfHTML para HTML-to-PDF
using iText.Html2pdf;

// Para HTML a PDF se necesita el complemento pdfHTML (licencia separada)
using (FileStream htmlSource = File.Open("factura.html", FileMode.Open))
using (FileStream pdfDest = File.Open("factura.pdf", FileMode.Create))
{
    ConverterProperties props = new ConverterProperties();
    // pdfHTML tiene soporte CSS limitado — no renderiza flexbox/grid correctamente
    HtmlConverter.ConvertToPdf(htmlSource, pdfDest, props);
}

// IronPDF: sin complemento adicional, motor Chromium completo
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(File.ReadAllText("factura.html"));
pdf.SaveAs("factura.pdf");

Firma PAdES con certificado FNMT para TicketBAI

Las facturas electrónicas en el País Vasco deben ir firmadas bajo TicketBAI, con XAdES para el registro XML y PAdES para el PDF de acompañamiento. La firma debe hacerse con certificado emitido por una CA acreditada bajo eIDAS - habitualmente la FNMT (Fábrica Nacional de Moneda y Timbre) para empresas españolas, o certificados de entidades como ACCV o ANF AC:

using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;

// Certificado FNMT — almacenado de forma segura (Azure Key Vault en producción)
X509Certificate2 certFNMT = new X509Certificate2(
    certBytes, certPassword, X509KeyStorageFlags.Exportable);

// Firma PAdES conforme con eIDAS
var firma = new PdfSignature(certFNMT)
{
    SigningContact  = "facturacion@empresa.es",
    SigningLocation = "Bilbao, Bizkaia — TicketBAI",
    SigningReason   = "Factura electrónica TicketBAI"
};

var pdf = PdfDocument.FromFile("factura_verifactu.pdf");
pdf.Sign(firma);
pdf.SaveAs("factura_firmada_ticketbai.pdf");

Bizkaia (con BATUZ), Gipuzkoa y Araba tienen implementaciones TicketBAI con diferencias de detalle. La fragmentación foral real requiere que el ISV mantenga lógica específica por provincia; el componente PDF (IronPDF) proporciona la firma PAdES válida para los tres territorios bajo el estándar eIDAS común.

Archivado conforme a Crea y Crece: PDF/A-3 con XML Facturae

La ley Crea y Crece establece la obligatoriedad de facturación electrónica B2B: para empresas con facturación > 8 M€ desde 2027, y para el resto desde 2028. El formato conforme con EN 16931 y CIUS-ES combina el XML Facturae 3.2.2 con un contenedor PDF/A-3:

using IronPdf;

var pdf = PdfDocument.FromFile("factura_base.pdf");

// Adjuntar XML Facturae 3.2.2 firmado con XAdES
byte[] xmlFacturae = File.ReadAllBytes("factura_XML_Facturae_3_2_2.xml");
pdf.EmbedFile(xmlFacturae, "factura.xml", "application/xml");

// PDF/A-3B para archivo — permite adjuntos XML (requerido por Crea y Crece / FACe)
pdf.SaveAsPdfA("factura_pdfa3b_face.pdf", PdfAVersions.PdfA3B);

La plataforma FACe del sector público B2G ya acepta este formato. Para el SII (Suministro Inmediato de Información) de grandes empresas, el pipeline de generación PDF debe ser capaz de procesar miles de facturas en el plazo de 4 días hábiles desde la emisión - el motor Chromium de IronPDF es adecuado para este volumen cuando se reutiliza la instancia del renderer.

Otras alternativas a iText 7 AGPL para C#

Aspose.PDF: Licencia propietaria, sin riesgo AGPL. API programática con modelo de objetos completo. Motor HTML Flying Saucer con soporte CSS limitado (sin flexbox). Suscripción anual (>1.199 €/desarrollador/año). Adecuado para equipos con inversión previa en el ecosistema Aspose.

Syncfusion PDF: Licencia propietaria, sin riesgo AGPL. Motor HTML WebKit con soporte CSS parcial. Edición comunitaria disponible para ISVs pequeños bajo cierto umbral de facturación. Coherente con la suite de componentes UI de Syncfusion.

QuestPDF: MIT para ingresos bajos; licencia comercial por encima de un umbral. Sin motor HTML - construcción programática con un DSL fluente. Adecuado para layouts bien definidos y previsibles; no recomendado para plantillas HTML mantenidas por equipos no técnicos.

PDFsharp/MigraDoc: MIT, sin restricciones de distribución. Sin motor HTML nativo. Adecuado para facturas sencillas con layouts programáticos básicos. Sin soporte nativo de firma digital, lo que obliga a soluciones externas para PAdES/TicketBAI.

Tabla comparativa de alternativas a iText 7 para ISVs españoles

CriterioIronPDFAspose.PDFSyncfusionQuestPDFPDFsharp
LicenciaComercial perpetuaSuscripción anualComercial / ComunidadMIT / Comercial por umbralMIT
Riesgo AGPLNingunoNingunoNingunoNingunoNinguno
HTML a PDFChromium (CSS3/JS/flexbox)Flying Saucer (limitado)WebKit (parcial)No nativoNo nativo
Firma PAdES / eIDASSíSíSíNo integradoNo integrado
PDF/A-3 + adjuntosSí (XML Facturae)SíParcialNoNo
VERI*FACTU en plantilla HTMLDirecto en templateProgramáticoProgramáticoProgramáticoProgramático
QR AEAT embebidoImagen en HTMLProgramáticoProgramáticoProgramáticoProgramático
API .NETTipada, IntelliSenseTipada, verbosaTipada, moderadaDSL fluenteBásica
Async/awaitNativoLimitadoLimitadoNativoNo
Thread-safetyPor diseñoPor procesoVariablePor diseñoLimitado
Precio entrada749 $ (pago único)>1.199 €/dev/añoPor cotizaciónGratuita (umbral)Gratuita

Migración práctica de iText 7 a IronPDF en un proyecto de facturación

Para un ISV que ya tiene lógica de facturación sobre iText 7 y necesita migrar, las operaciones más comunes tienen equivalentes directos:

Fusión de PDFs

// iText 7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;

PdfDocument resultado = new PdfDocument(new PdfWriter("fusionado.pdf"));
PdfMerger merger = new PdfMerger(resultado);
foreach (string archivo in archivos)
{
    PdfDocument src = new PdfDocument(new PdfReader(archivo));
    merger.Merge(src, 1, src.GetNumberOfPages());
    src.Close();
}
resultado.Close();

// IronPDF
var pdfs = archivos.Select(f => PdfDocument.FromFile(f)).ToList();
var fusionado = PdfDocument.Merge(pdfs);
fusionado.SaveAs("fusionado.pdf");
pdfs.ForEach(p => p.Dispose());

Extracción de texto (para validación de contenido de facturas)

// iText 7
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;

using (PdfDocument pdfDoc = new PdfDocument(new PdfReader("factura.pdf")))
{
    for (int i = 1; i <= pdfDoc.GetNumberOfPages(); i++)
    {
        string texto = PdfTextExtractor.GetTextFromPage(pdfDoc.GetPage(i));
        Console.WriteLine(texto);
    }
}

// IronPDF
var pdf = PdfDocument.FromFile("factura.pdf");
foreach (var pagina in pdf.Pages)
{
    Console.WriteLine(pagina.Text);
}

Cifrado para protección de datos bajo LOPDGDD

Las facturas contienen datos personales del destinatario (nombre, NIF, dirección) sujetos a la LOPDGDD y a la supervisión de la AEPD. El cifrado del PDF en tránsito y en reposo es una práctica recomendada bajo el marco de protección de datos:

// IronPDF: cifrado con contraseñas diferenciadas para propietario y usuario
var pdf = PdfDocument.FromFile("factura_datos_personales.pdf");

pdf.SecuritySettings.OwnerPassword = "password-administrador";
pdf.SecuritySettings.UserPassword  = "password-receptor";
pdf.SecuritySettings.AllowUserPrinting    = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;

pdf.SaveAs("factura_protegida_lopdgdd.pdf");

Recursos para el mercado español

Inicia la evaluación técnica con prueba completa de 30 días para verificar la compatibilidad de IronPDF con tu arquitectura de facturación VeriFactu.

Por favor nota: iText es una marca registrada de sus respectivos propietarios. Este sitio no está afiliado, patrocinado ni respaldado por iText Group. Todos los nombres de producto, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son a título informativo y reflejan información públicamente disponible en la fecha de publicación. IronPDF es un componente de software que se integra dentro de sistemas de facturación; no es en sí mismo un sistema de facturación certificado bajo VeriFactu.
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 estructurados y visualmente atractivos.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

OR
bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta
iText Logo

¿Cansado de renovaciones caras y actualizaciones de producto obsoletas?

Haga el cambio fácil desde iText con nuestro soporte de migración de ingeniería y un mejor trato.

Biblioteca C# NuGet para PDF
Instalar con NuGet

Versión: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. En el Explorador de Soluciones, haga clic derecho en Referencias, Administrar Paquetes NuGet
  2. Seleccione Examinar y busque "IronPDF"
  3. Seleccione el paquete e instale
C# PDF DLL
Descargar DLL

Versión: 2026.9

o descargue el Instalador de Windows aquí.

  1. Descargue y descomprima IronPDF en una ubicación como ~/Libs dentro del directorio de su solución
  2. En el Explorador de Soluciones de Visual Studio, haga clic derecho en Referencias. Seleccione Examinar, "IronPDF.dll"

Licencias desde $999