Cómo exportar documentos en formato PDF/A o PDF/A-3 en C

Chaknith Bin
Chaknith Bin
25 de enero, 2023
Actualizado 26 de enero, 2025
Compartir:
This article was translated from English: Does it need improvement?
Translated
View the article in English

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.

Primer Paso:
green arrow pointer


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)
$vbLabelText   $csharpLabel

Salida

El archivo de salida es compatible con PDF/A-3b:

licencia completa

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)
$vbLabelText   $csharpLabel

El archivo de salida es compatible con PDF/A-3B:

licencia completa

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)
$vbLabelText   $csharpLabel

El archivo de salida es compatible con PDF/A-3B:

licencia completa


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)
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel
Chaknith Bin
Ingeniero de software
Chaknith trabaja en IronXL e IronBarcode. Tiene una gran experiencia en C# y .NET, ayudando a mejorar el software y a apoyar a los clientes. Sus conocimientos de las interacciones con los usuarios contribuyen a mejorar los productos, la documentación y la experiencia general.