Cómo exportar documentos en formato PDF/A o PDF/A-3 en C
IronPDF admite la exportación de PDFs al estándar PDF/A-3b. PDF/A-3B es un subconjunto estricto de la especificación ISO PDF que se utiliza para crear versiones de archivo de documentos con la intención de que siempre se reproduzcan exactamente igual que cuando se guardaron.
Cumplimiento de la Sección 508
IronPDF se complace en seguir la iniciativa de Google de aumentar el archivado y la accesibilidad de PDF y el cumplimiento de la Sección 508 de los documentos PDF.
En 2021, nos trasladamos a renderizar PDFs desde HTML utilizando el motor de renderizado HTML de Google Chromium. Esto permite que nuestro software herede el trabajo de accesibilidad que Google ya ha implementado:
Comience con IronPDF
Comience a usar IronPDF en su proyecto hoy con una prueba gratuita.
Cómo convertir PDF a PDF/A en C#

- Descargar biblioteca de C# para crear documentos PDF/A
- Cargar un PDF existente o crearlo a partir de un archivo, HTML o URL
- Exportar un Documento PDF/A desde un Archivo PDF Existente
- Exportar un documento PDF/A desde un diseño HTML o URL
- Guarde el documento PDF/A en la ubicación deseada
Versiones PDF/A
Los dos niveles de conformidad que admite IronPDF son A y B. la 'A' representa 'accesible' y la 'B' representa 'básico' Estos niveles están disponibles en los estándares PDF/A-1, PDF/A-2 y PDF/A-3. La información a continuación ha sido tomada de la documentación de Adobe sobre PDF/A.
- Conformidad Nivel A cumple con todos los requisitos en su especificación, permitiendo al software asistivo mejorar la accesibilidad para usuarios con discapacidades físicas.
-
Nivel B tiene un nivel de conformidad más bajo, con un cumplimiento mínimo, centrándose en preservar la apariencia visual del archivo a largo plazo.
PDF/A-1: El formato PDF/A se basa en la versión original PDF 1.4.
PDF/A-2: Lanzado en julio de 2011 como un nuevo estándar llamado ISO 32001-1, este estándar incluye todas las características de las versiones de PDF hasta la 1.7, así como nuevas características. Entre sus características se incluye la compatibilidad con JPEG2000, muy útil para documentos escaneados, y requisitos específicos para metadatos XMP personalizados.
PDF/A-3: Este formato de PDF/A incluye todos los requisitos del Nivel 2. También permite la inserción de formatos de archivo adicionales, como XML, CSV y formatos de procesamiento de textos, en documentos conformes con PDF/A.
Atención
IronPdf aún no admite la conversión de un PDF con un archivo adjunto a PDF/A-3B.
Desde un archivo PDF existente
Tengo un ejemplo de PDF "wikipedia.pdf
", que se generó utilizando IronPDF y se guardó como un archivo PDF.
En esta demostración lo cargaré y lo volveré a guardar como un archivo PDF compatible con PDF/A-3B.
Archivo de entrada: "wikipedia.pdf"
Código
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-fromfile.cs
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);
Imports IronPdf
' Create a PdfDocument object or open any PDF File
Private pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf")
' Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b)
Salida
El archivo de salida es compatible con PDF/A-3b:
Desde un diseño HTML o URL
Tengo un diseño HTML de ejemplo "design.html
", que me gustaría renderizar de HTML a PDF usando IronPDF y luego exportar como un archivo compatible con PDF/A.
En esta demostración lo guardaré como un archivo PDF compatible con PDF/A-3B.
Ejemplo de diseño HTML
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-fromhtml.cs
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);
Imports IronPdf
' Use the Chrome Renderer to make beautiful HTML designs
Private chromeRenderer = New ChromePdfRenderer()
' Render an HTML design as a PdfDocument object using Chrome
Private pdf As PdfDocument = chromeRenderer.RenderHtmlAsPdf("design.html")
' Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("design-accessible.pdf", PdfAVersions.PdfA3b)
El archivo de salida es compatible con PDF/A-3B:
Ejemplo de URL
Tengo el siguiente sitio web "https://www.microsoft.com
", que me gustaría renderizar de URL a PDF usando IronPDF y luego exportar como un archivo compatible con PDF/A.
En esta demostración lo guardaré como un archivo PDF compatible con PDF/A-3B.
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-fromurl.cs
using IronPdf;
// Use the Chrome Renderer to make beautiful HTML designs from URLs
var chromeRenderer = new ChromePdfRenderer();
// Render a Website as a PdfDocument object using Chrome
PdfDocument pdf = chromeRenderer.RenderUrlAsPdf("https://www.microsoft.com");
// Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("website-accessible.pdf", PdfAVersions.PdfA3b);
Imports IronPdf
' Use the Chrome Renderer to make beautiful HTML designs from URLs
Private chromeRenderer = New ChromePdfRenderer()
' Render a Website as a PdfDocument object using Chrome
Private pdf As PdfDocument = chromeRenderer.RenderUrlAsPdf("https://www.microsoft.com")
' Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("website-accessible.pdf", PdfAVersions.PdfA3b)
El archivo de salida es compatible con PDF/A-3B:
Soporte para incrustar archivos adjuntos
IronPdf ofrece la capacidad de incrustar archivos en un documento PDF mientras lo convierte al formato PDF/A. Esto se puede lograr utilizando varios tipos de entrada, como rutas de archivo, matrices de bytes o flujos.
Integrar con rutas de archivos
Permite la inserción de archivos utilizando sus rutas de archivo. Se proporciona una colección de rutas de archivos, y estos archivos se incluyen como adjuntos durante la conversión a PDF/A.
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-attachment-path.cs
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);
Imports IronPdf
Imports System.Collections.Generic
Private pdf As New PdfDocument("Google.pdf")
' Initialize collection of embed file as string of path
Private embedPaths As IEnumerable(Of String) = { "File1.xml", "File2.png" }
' Convert to Pdf/A-3B with embeded files
pdf.ConvertToPdfA(embedPaths)
Incorporar con matrices de bytes
Permite la incrustación de archivos proporcionando el contenido del archivo como matrices de bytes junto con sus respectivos tipos de archivo. Esto es útil cuando los archivos ya están cargados en la memoria.
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-attachment-byte.cs
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");
Imports IronPdf
Imports System.Collections.Generic
Imports System.IO
Private pdf As New PdfDocument("Google.pdf")
' Initialize collection of embed file as Bytes and their file type
Private fileData1() As Byte = File.ReadAllBytes("File1.png")
Private fileData2() As Byte = File.ReadAllBytes("File2.xml")
Private embedFileConfig1 = New EmbedFileConfiguration(EmbedFileType.png)
embedFileConfig1.EmbedFileName = "logo.png"
Dim embedFileConfig2 = New EmbedFileConfiguration(EmbedFileType.xml) With {
.EmbedFileName = "supportSystem.xml",
.AFDesc = "Internal system",
.ConformanceLevel = ConformanceLevel.XRECHNUNG,
.SchemaNamespace = SchemaNamespace.Zugferd1,
.SchemaPrefix = SchemaPrefix.rsm,
.PropertyVersion = PropertyVersion.v1p0,
.AFRelationship = AFRelationship.Supplement
}
Dim embedBytes As IEnumerable(Of EmbedFileByte) = {
New EmbedFileByte(fileData1, embedFileConfig1),
New EmbedFileByte(fileData2, embedFileConfig2)
}
' Convert to Pdf/A-3B with embeded files
pdf.ConvertToPdfA(embedBytes).SaveAs("PdfACompliance.pdf")
Incorporar con Streams
Proporciona la capacidad de incrustar archivos utilizando flujos para su contenido, junto con sus tipos de archivo. Este método es ideal para escenarios donde los datos de los archivos se procesan como un flujo.
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-attachment-stream.cs
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");
Imports IronPdf
Imports System.Collections.Generic
Imports System.IO
Private pdf As New PdfDocument("Google.pdf")
' Initialize collection of embed file as Stream and their file type
Private stream1 As Stream = New MemoryStream(File.ReadAllBytes("File1.png"))
Private stream2 As Stream = New MemoryStream(File.ReadAllBytes("File2.xml"))
Private embedFileConfig1 = New EmbedFileConfiguration(EmbedFileType.png)
embedFileConfig1.EmbedFileName = "logo.png"
Dim embedFileConfig2 = New EmbedFileConfiguration(EmbedFileType.xml) With {
.EmbedFileName = "supportSystem.xml",
.AFDesc = "Internal system",
.ConformanceLevel = ConformanceLevel.XRECHNUNG,
.SchemaNamespace = SchemaNamespace.Zugferd1,
.SchemaPrefix = SchemaPrefix.rsm,
.PropertyVersion = PropertyVersion.v1p0,
.AFRelationship = AFRelationship.Supplement
}
Dim embedStreams As IEnumerable(Of EmbedFileStream) = {
New EmbedFileStream(stream1, embedFileConfig1),
New EmbedFileStream(stream2, embedFileConfig2)
}
' Convert to Pdf/A-3B with embeded files
pdf.ConvertToPdfA(embedStreams).SaveAs("PdfACompliance.pdf")
Explore la configuración de archivo incrustado
Al convertir un PdfDocument a un formato PDF/A-3 que incluye archivos incrustados, es importante configurar parámetros como EmbedFilePath, EmbedFileByte o EmbedFileStream. Estos ajustes te permiten especificar el tipo de archivo que se está incrustando, su nombre y cualquier metadato XMP personalizado que desees incluir.
Una configuración adecuada garantiza que el contenido incrustado esté organizado de manera efectiva y cumpla con los estándares PDF/A-3. Personalizar los metadatos XMP permite añadir información adicional sobre los archivos incrustados, mejorando la usabilidad y accesibilidad general del documento. Usando la clase EmbedFileConfiguration
, los desarrolladores pueden personalizar fácilmente los valores y formatos para el archivo.
EmbedFileName: Una propiedad de tipo string
que representa el nombre del archivo a incrustar en el documento PDF/A. Por defecto, esta cadena está vacía.
AFDesc: Una propiedad de tipo string
que representa la descripción del archivo asociado para el archivo embebido. Por defecto, esta cadena está vacía.
ConformanceLevel: El nivel de conformidad de la incrustación de un archivo XML que se aplica a los metadatos XMP de un documento PDF/A. De forma predeterminada, el valor inicial se establece en ConformanceLevel.EN16931
. IronPDF proporciona siete valores diferentes entre los que los desarrolladores pueden elegir, utilizando la enumeración ConformanceLevel
disponible aquí.
SchemaNamespace: El URI del espacio de nombres del esquema PDF/A que incrusta el archivo XML y lo aplica a los metadatos XMP del documento PDF/A. Por defecto, el valor inicial se establece en SchemaNamespace.facturX
. IronPDF ofrece cinco valores diferentes para que los desarrolladores elijan del enumerado SchemaNameSpace
disponible aquí.
SchemaPrefix: El prefijo del esquema PDF/A para incrustar un archivo XML aplicable a los metadatos XMP de un documento PDF/A. De forma predeterminada, el valor inicial se establece en SchemaPrefix.fx
. IronPDF proporciona tres valores diferentes para que los desarrolladores elijan del enumerado SchemaPrefix
disponible aquí.
PropertyVersion: La propiedad Version del archivo XML incrustado que se aplica a los Metadatos XMP de un documento PDF/A. De forma predeterminada, el valor inicial se establece en PropertyVersion.v1
. IronPDF proporciona cuatro valores diferentes para que los desarrolladores elijan del enum PropertyVersion
disponible aquí.
AFRelationship: La relación del archivo asociado (archivo incrustado) con el documento PDF/A. IronPDF ofrece cinco valores diferentes para que los desarrolladores elijan en el enum PropertyVersion
disponible aquí.