IRONSOFTWAREHOME

PDF/A-3 para Facturae, TicketBAI y LOPDGDD: Archivo Fiscal con IronPDF en C#

Curtis Chau
Curtis Chau
Updated: 4 de junio de 2026

En el mercado español, PDF/A no es simplemente un formato de archivo genérico: es el contenedor técnico que hace posible la factura electrónica híbrida. La Ley Crea y Crece exige que las facturas B2B y los documentos enviados a FACe (Punto General de Entrada de Facturas de la Administración) conserven tanto la representación visual como los datos estructurados dentro de un único fichero. El estándar que lo resuelve es PDF/A-3b con XML embebido.

IronPDF soporta la exportación a PDF/A-3b y PDF/A-4, los dos estándares activos de la serie ISO 19005, y proporciona la clase EmbedFileConfiguration para configurar los metadatos XMP de los archivos embebidos según las especificaciones de Facturae, TicketBAI y el reglamento LOPDGDD auditado por la AEPD.

Inicio rápido: Generar un PDF/A-3b con IronPDF en C#
  1. 1Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. 2Copie y ejecute este fragmento de código.

    // Load existing PDF or render from HTML
    var document = IronPdf.PdfDocument.FromFile("invoice.pdf");
    
    // Save as PDF/A-3b compliant archival document
    document.SaveAsPdfA3B("invoice-pdfa3b.pdf");
    C#
  3. 3Despliegue para probar en su entorno real

    Comienza a usar IronPDF en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer

Tres escenarios normativos donde PDF/A-3 es obligatorio en España

1. Facturae 3.2.2 embebido en PDF/A-3b para FACe (B2G)

La Administración española acepta facturas electrónicas a través del portal FACe bajo el estándar Facturae 3.2.2. La especificación técnica de FACe permite el envío como factura híbrida: el XML Facturae se embebe dentro de un PDF/A-3b, de modo que el fichero contiene simultáneamente la representación visual y los datos estructurados para procesamiento automático. Este patrón es el mismo que usan Factur-X (Francia) y ZUGFeRD (Alemania).

La norma europea EN 16931 y su implementación española CIUS-ES, promovidas por la ley Crea y Crece, definen el modelo de datos semántico del XML embebido.

var config = new EmbedFileConfiguration
{
    EmbedFileName = "factura-2026-001.xml",
    AFDesc = "Facturae 3.2.2 XML embebido",
    ConformanceLevel = ConformanceLevel.EN16931,
    SchemaNamespace = SchemaNamespace.facturX,
    SchemaPrefix = SchemaPrefix.fx,
    PropertyVersion = PropertyVersion.v1,
    AFRelationship = AFRelationship.Alternative
};

var document = PdfDocument.FromFile("factura-visual.pdf");
document.EmbedFileFromFilePath("factura-2026-001.xml", config);
document.SaveAsPdfA3B("factura-face-hibrida.pdf");

Los campos de EmbedFileConfiguration relevantes para Facturae/FACe:

  • ConformanceLevel.EN16931 — identifica el perfil semántico del XML ante los validadores de la Administración
  • SchemaNamespace.facturX — URI del espacio de nombres compatible con los portales B2G españoles
  • AFRelationship.Alternative — declara el XML como representación alternativa del documento (requerido por FACe)
Por favor nota: IronPDF aún no soporta la conversión de un PDF que ya contiene un archivo adjunto a PDF/A-3B.

2. TicketBAI XML embebido en PDF/A-3b (País Vasco)

Las tres haciendas forales del País Vasco tienen implementaciones distintas de TicketBAI con requisitos de archivo específicos:

  • Bizkaia (programa BATUZ, portal bizkaia.eus): los PDFs que acompañan a los registros TicketBAI deben conservarse durante el período de prescripción fiscal. PDF/A-3b garantiza la integridad del documento para inspecciones de la Diputación.
  • Gipuzkoa (gipuzkoa.eus): exige archivado de los documentos asociados al registro TicketBAI firmado con XAdES.
  • Araba (araba.eus): misma arquitectura base, con su propio endpoint de validación y requisitos de retención.

Para estos casos, el XML TicketBAI firmado se embebe en el PDF/A-3b usando la misma clase EmbedFileConfiguration con AFRelationship.Source para indicar que el XML es el documento fuente de la representación visual.

3. Retención LOPDGDD: 5–7 años con integridad garantizada

La LOPDGDD (Ley Orgánica de Protección de Datos y Garantía de Derechos Digitales), auditada por la AEPD, exige que los documentos con datos personales se conserven en formatos que garanticen su reproducibilidad exacta durante el período de retención aplicable:

  • 4 años para facturas (IVA)
  • 6 años para documentos del Impuesto de Sociedades
  • El período específico que establezca la normativa sectorial

PDF/A cumple este requisito porque incrusta fuentes, perfiles de color y metadatos completos en el propio fichero, eliminando cualquier dependencia de software externo para la reproducción fiel del documento en el futuro.

Verificar la conformidad PDF/A con veraPDF

La herramienta de referencia para validar documentos PDF/A es veraPDF, el validador de código abierto recomendado por la ISO. Tras generar el PDF/A con IronPDF, valide el fichero para confirmar su conformidad antes de enviar a FACe o archivar bajo LOPDGDD.

veraPDF Conformance Checker mostrando validación exitosa de PDF/A-3B con mensaje de conformidad verde

using IronPdf;

// Create a PdfDocument object or open any PDF File
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");

// Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b);

El fichero de entrada antes de la conversión:

El fichero de salida validado como PDF/A-3b:

Generar PDF/A-3b desde plantillas HTML de factura

Para sistemas de facturación que generan facturas a partir de plantillas HTML, IronPDF permite convertir directamente el HTML renderizado a PDF/A-3b sin pasos intermedios. Este es el flujo habitual en ISVs que construyen software de facturación para el mercado español:

using IronPdf;

// Use the Chrome Renderer to make beautiful HTML designs
var chromeRenderer = new ChromePdfRenderer();

// Render an HTML design as a PdfDocument object using Chrome
PdfDocument pdf = chromeRenderer.RenderHtmlAsPdf("design.html");

// Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("design-accessible.pdf", PdfAVersions.PdfA3b);

Verificación de conformidad del fichero generado desde HTML:

veraPDF Conformance Checker mostrando validación exitosa de PDF con mensaje de conformidad verde

Mi biblioteca favorita de este tipo es IronPDF. Permite una manipulación rápida y eficiente de archivos PDF. También tiene muchas funciones valiosas, como exportar al formato PDF/A y firmar documentos PDF digitalmente.

Milan Jovanovic

Microsoft MVP

Ver estudio de caso

IronOCR significa que podemos ahorrar $40,000 anualmente en el procesamiento manual, mientras mejoramos la productividad y liberamos recursos para tareas de alto impacto. Lo recomendaría encarecidamente.

Brent Matzelle

Director de Tecnología, OPYN

Ver estudio de caso

El Iron Suite juega un papel crucial en nuestras operaciones. Estas son herramientas que aumentan la eficiencia en toda la empresa, incluyendo la creación de planos y la mejora en la gestión de inventario.

David Jones

Ingeniero de Software Principal, Agorus Build

Ver estudio de caso

¿Qué versiones de PDF/A soporta IronPDF?

IronPDF es compatible con los niveles de conformidad A y B de PDF/A-1, PDF/A-2, PDF/A-3 y PDF/A-4. La salida predeterminada es PDF/A-3B (ISO 19005-3).

EstándarArchivos adjuntosFirmas digitalesCaso de uso principal en España
PDF/A-1NoLimitadoArchivo histórico sin XML embebido
PDF/A-2NoSoportadoDocumentos firmados sin XML embebido
PDF/A-3Sí (XML, CSV…)SoportadoFacturae para FACe, XML TicketBAI, LOPDGDD
PDF/A-4NoSoporte mejoradoExpedientes técnicos, documentación de ingeniería

Incrustar archivos adicionales en PDF/A-3b

IronPDF ofrece tres métodos para incrustar archivos durante la conversión a PDF/A-3b: por ruta de archivo, por matriz de bytes o mediante stream. Los tres métodos son equivalentes funcionalmente; el más adecuado depende de cómo el sistema de facturación gestiona el XML de Facturae o TicketBAI en memoria.

Método 1: incrustar por ruta de archivo

using IronPdf;
using System.Collections.Generic;

PdfDocument pdf = new PdfDocument("Google.pdf");

// Initialize collection of embed file as string of path
IEnumerable<string> embedPaths = new[] { "File1.xml", "File2.png" };

// Convert to Pdf/A-3B with embeded files
pdf.ConvertToPdfA(embedPaths);

Método 2: incrustar por matriz de bytes

Útil cuando el XML está ya en memoria (generado por la biblioteca de facturación):

using IronPdf;
using System.Collections.Generic;
using System.IO;


PdfDocument pdf = new PdfDocument("Google.pdf");

// Initialize collection of embed file as Bytes and their file type
byte[] fileData1 = File.ReadAllBytes("File1.png");
byte[] fileData2 = File.ReadAllBytes("File2.xml");

var embedFileConfig1 = new EmbedFileConfiguration(EmbedFileType.png);
embedFileConfig1.EmbedFileName = "logo.png";

var embedFileConfig2 = new EmbedFileConfiguration(EmbedFileType.xml)
{
    EmbedFileName = "supportSystem.xml",
    AFDesc = "Internal system",
    ConformanceLevel = ConformanceLevel.XRECHNUNG,
    SchemaNamespace = SchemaNamespace.Zugferd1,
    SchemaPrefix = SchemaPrefix.rsm,
    PropertyVersion = PropertyVersion.v1p0,
    AFRelationship = AFRelationship.Supplement,
};

IEnumerable<EmbedFileByte> embedBytes = new[]
{
    new EmbedFileByte(fileData1, embedFileConfig1),
    new EmbedFileByte(fileData2, embedFileConfig2)
};

// Convert to Pdf/A-3B with embeded files
pdf.ConvertToPdfA(embedBytes).SaveAs("PdfACompliance.pdf");

Método 3: incrustar mediante stream

Ideal para pipelines de procesamiento de facturas en tiempo real:

using IronPdf;
using System.Collections.Generic;
using System.IO;

PdfDocument pdf = new PdfDocument("Google.pdf");

// Initialize collection of embed file as Stream and their file type
Stream stream1 = new MemoryStream(File.ReadAllBytes("File1.png"));
Stream stream2 = new MemoryStream(File.ReadAllBytes("File2.xml"));

var embedFileConfig1 = new EmbedFileConfiguration(EmbedFileType.png);
embedFileConfig1.EmbedFileName = "logo.png";

var embedFileConfig2 = new EmbedFileConfiguration(EmbedFileType.xml)
{
    EmbedFileName = "supportSystem.xml",
    AFDesc = "Internal system",
    ConformanceLevel = ConformanceLevel.XRECHNUNG,
    SchemaNamespace = SchemaNamespace.Zugferd1,
    SchemaPrefix = SchemaPrefix.rsm,
    PropertyVersion = PropertyVersion.v1p0,
    AFRelationship = AFRelationship.Supplement,
};

IEnumerable<EmbedFileStream> embedStreams = new[]
{
    new EmbedFileStream(stream1, embedFileConfig1),
    new EmbedFileStream(stream2, embedFileConfig2)
};

// Convert to Pdf/A-3B with embeded files
pdf.ConvertToPdfA(embedStreams).SaveAs("PdfACompliance.pdf");

PDF/A-4 y la leyenda VERI*FACTU en documentos VeriFactu

PDF/A-4 es el estándar más reciente (basado en PDF 2.0), con soporte mejorado para firmas digitales cualificadas. Su uso en España se orienta a documentos que requieren firma eIDAS de nivel alto o a expedientes técnicos de larga duración.

Para los ISVs que desarrollan software de facturación certificado bajo VeriFactu (Real Decreto-Ley 15/2025, con entrada en vigor escalonada en 2027), el PDF de la factura que acompaña al registro VeriFactu debe incluir la leyenda obligatoria VERI*FACTU —preservando el asterisco— y la referencia Factura verificable en la sede electrónica de la AEAT. IronPDF no es por sí mismo un sistema de facturación certificado VeriFactu: actúa como componente de generación de PDFs dentro del software de facturación certificado del ISV.

using IronPdf;

// Load the environmental impact assessment document
PdfDocument pdf = PdfDocument.FromFile("ENV-2026-1847-Assessment-Report.pdf");

// Save as PDF/A-4 compliant document for long-term archival
pdf.SaveAsPdfA("ENV-2026-1847-Report-PDFA4Compliant.pdf", PdfAVersions.PdfA4);

Verificación del documento PDF/A-4:

veraPDF Conformance Checker mostrando validación exitosa de PDF/A-4 para informe de evaluación ambiental

Problemas de visualización de caracteres en documentos PDF/A en español

PDF/A exige que todos los caracteres del documento se correspondan con una fuente visual y semánticamente correcta. Para documentos fiscales en español con el juego de caracteres Latin-1 extendido (á, é, í, ó, ú, ü, ñ, ¿, ¡, €), es imprescindible que la fuente utilizada incluya soporte completo para estos glifos. En servidores Linux o Docker, donde la codificación del sistema operativo puede diferir de Windows, asegúrese de instalar fuentes con soporte Latin-1 completo para evitar caracteres rotos en los PDFs generados.

Comparación de codificación de caracteres mostrando corrupción de fuente en la conversión a PDF/A desde DejaVuSans y Times New Roman

¿Listo para profundizar? Consulte nuestra guía completa: Crear PDFs en C#

Preguntas Frecuentes

¿Cómo convierto un PDF estándar al formato PDF/A-3b en C#?

Con IronPDF, puede convertir cualquier PDF estándar al formato PDF/A-3b utilizando sólo dos líneas de código. Simplemente cargue su PDF utilizando PdfDocument.FromFile() y luego llame a SaveAsPdfA() para exportarlo como un documento PDF/A-3b compatible para archivarlo a largo plazo.

¿Qué es PDF/A-3b y por qué es importante para el archivo de documentos?

PDF/A-3b es un subconjunto estricto de la especificación ISO PDF diseñado para la conservación de documentos a largo plazo. IronPDF admite la exportación de PDF/A-3b para garantizar que sus documentos siempre se muestren exactamente como se guardaron, lo que lo hace ideal para fines legales, gubernamentales y de archivo en los que la integridad de los documentos es fundamental.

¿Es compatible la conversión a PDF/A con el cumplimiento de la Sección 508 de accesibilidad?

Sí, IronPDF garantiza el cumplimiento de la Sección 508 utilizando el motor de renderizado de Google Chromium, que hereda las funciones de accesibilidad de Google. Esto significa que sus documentos PDF/A serán accesibles para usuarios con discapacidades que utilicen tecnologías de asistencia como lectores de pantalla.

¿Puedo convertir contenidos HTML directamente al formato PDF/A?

Por supuesto IronPDF permite convertir contenidos HTML o URL directamente al formato PDF/A-3b. El motor de renderizado Google Chromium conserva todas las características de accesibilidad durante la conversión de HTML a PDF, lo que garantiza que los documentos PDF/A resultantes cumplen todos los requisitos.

¿Cuáles son las principales ventajas de utilizar PDF/A-3b en lugar del formato PDF estándar?

La exportación a PDF/A-3b de IronPDF garantiza la conservación a largo plazo, la representación coherente en todos los visores, el cumplimiento de la Sección 508 de accesibilidad y la adhesión a las normas ISO de archivado. Esto lo hace perfecto para documentos legales, registros gubernamentales y cualquier contenido que requiera un archivo permanente.

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

¿Listo para empezar?

Nuget Downloads 20,667,543Versión:2026.7recién publicada

Obtén tu GRATIS

Clave de prueba de 30 días instantáneamente.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuenta
bullet_testPrueba en producción
sin marcas de agua
bullet_calendarProducto completamente
funcional por 30 días
bullet_supportSoporte técnico 24/5
durante la prueba
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta
Biblioteca C# NuGet para PDF
Instalar con NuGet

Versión: 2026.7

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.7

Descargar ahora

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

Key in blue circle

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

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

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