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

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF permite exportar archivos PDF según la norma 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, pasamos a renderizar PDF a partir de HTML utilizando el motor de renderizado HTML Google Chromium. Esto permite que nuestro software herede latrabajos de accesibilidad que Google ya ha realizado:



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 que figura a continuación procede deDocumentación de Adobe sobre PDF/A.

  • la conformidad con el Nivel A** cumple todos los requisitos de su especificación, lo que permite que el software de asistencia mejore la accesibilidad de los usuarios con discapacidades físicas.
  • El nivel B tiene un nivel de conformidad inferior, con un cumplimiento mínimo, centrado en preservar el aspecto 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: Publicado 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 PDF/A incluye todos los requisitos del nivel 2. También permite incrustar formatos de archivo adicionales -como XML, CSV y formatos de procesamiento de texto- 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 PDF de ejemplo "wikipedia.pdf", que se generó con IronPDF y se guardó como 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)
VB   C#

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 convertir de HTML a PDF utilizando 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)
VB   C#

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 convertir de URL a PDF utilizando 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)
VB   C#

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)
VB   C#

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")
VB   C#

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")
VB   C#