How to Export PDF/A or PDF/A-3 Format Documents in C#
IronPDF supports export of PDFs to the PDF/A-3b standard. PDF/A-3B is a strict subset of the ISO PDF specification used to create archival versions of documents with the intent that they will always render exactly the same as when they were saved.
Section 508 Compliance
IronPDF is happy to follow Google's initiative to increase PDF archiving and accessibility and the Section 508 Compliance of PDF documents.
In 2021, we moved to rendering PDFs from HTML using the Google Chromium HTML rendering engine. This allows our software to inherit the accessibility work Google has already implemented:
Get started with IronPDF
Start using IronPDF in your project today with a free trial.
How to Convert PDF to PDF/A in C#
- Download C# Library for Creating PDF/A Documents
- Load existing or create a PDF from file, HTML, or URL
- Export a PDF/A Document from an Existing PDF File
- Export a PDF/A Document from an HTML Design or URL
- Save the PDF/A compliant document to the desired location
PDF/A Versions
The two conformance levels that IronPDF supports are A and B. 'A' represents 'accessible,' and 'B' represents 'basic.' These levels are available across PDF/A-1, PDF/A-2, and PDF/A-3 standards. The information below has been taken from Adobe's documentation on PDF/A.
- Level A conformance meets all requirements in its specification, allowing assistive software to improve accessibility for physically impaired users.
- Level B has a lower level of conformance, with minimal compliance, focusing on preserving the visual appearance of the file long-term.
PDF/A-1: The PDF/A format is based on the original PDF 1.4 version.
PDF/A-2: Released in July 2011 as a new standard called ISO 32001-1, this standard includes all features of PDF versions up to 1.7 as well as new features. Its features include the support of JPEG2000 which is handy for scanned documents and specific requirements for customized XMP metadata.
PDF/A-3: This PDF/A format includes all of the requirements of Level 2. It also allows the embedding of additional file formats—like XML, CSV, and word processing formats—into PDF/A conforming documents.
Please note
From an Existing PDF File
I have an example PDF "wikipedia.pdf
," which was generated using IronPDF and saved as a PDF file.
I will load and re-save it as a PDF/A-3B compliant PDF file in this demonstration.
Input file: "wikipedia.pdf"
Code
: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)
Output
The output file is PDF/A-3b compliant:
From a HTML Design or URL
I have an example HTML design "design.html
," which I would like to render from HTML to PDF using IronPDF and then export as a PDF/A compliant file.
I will save it as a PDF/A-3B compliant PDF file in this demonstration.
HTML Design Example
: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)
The output file is PDF/A-3B compliant:
URL Example
I have the following website "https://www.microsoft.com
," which I would like to render from URL to PDF using IronPDF and then export as a PDF/A compliant file.
I will save it as a PDF/A-3B compliant PDF file in this demonstration.
: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)
The output file is PDF/A-3B compliant:
Support Embedding Attachment
IronPdf provides the ability to embed files into a PDF document while converting it to PDF/A format. This can be achieved using various input types such as file paths, byte arrays, or streams.
Embed with File Paths
Allows embedding of files using their file paths. A collection of file paths is provided, and these files are included as attachments during the PDF/A conversion.
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-attachment-path.cs
using IronPdf;
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
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)
Embed with Byte Arrays
Enables embedding of files by providing the file content as byte arrays along with their respective file types. This is useful when files are already loaded into memory.
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-attachment-byte.cs
using IronPdf;
PdfDocument pdf = new PdfDocument("Google.pdf");
// Initialize collection of embed file as byte[] and their file type
byte[] fileData1 = File.ReadAllBytes("File1.xml");
byte[] fileData2 = File.ReadAllBytes("File2.png");
IEnumerable<EmbedFileByte> embedBytes = new[] {
new EmbedFileByte(fileData1, EmbedFileType.xml),
new EmbedFileByte(fileData2, EmbedFileType.png)
};
// Convert to Pdf/A-3B with embeded files
pdf.ConvertToPdfA(embedBytes);
Imports IronPdf
Private pdf As New PdfDocument("Google.pdf")
' Initialize collection of embed file as byte[] and their file type
Private fileData1() As Byte = File.ReadAllBytes("File1.xml")
Private fileData2() As Byte = File.ReadAllBytes("File2.png")
Private embedBytes As IEnumerable(Of EmbedFileByte) = {
New EmbedFileByte(fileData1, EmbedFileType.xml),
New EmbedFileByte(fileData2, EmbedFileType.png)
}
' Convert to Pdf/A-3B with embeded files
pdf.ConvertToPdfA(embedBytes)
Embed with Streams
Provides the capability to embed files using streams for their content, along with their file types. This method is ideal for scenarios where file data is processed as a stream.
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-attachment-steam.cs
using IronPdf;
PdfDocument pdf = new PdfDocument("Google.pdf");
// Initialize collection of embed file as Stream and their file type
Stream stream1 = new MemoryStream(File.ReadAllBytes("File1.xml"));
Stream stream2 = new MemoryStream(File.ReadAllBytes("File2.png"));
IEnumerable<EmbedFileStream> embedStreams = new[] {
new EmbedFileStream(stream1, EmbedFileType.xml),
new EmbedFileStream(stream2, EmbedFileType.png)
};
// Convert to Pdf/A-3B with embeded files
pdf.ConvertToPdfA(embedStreams);
Imports IronPdf
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.xml"))
Private stream2 As Stream = New MemoryStream(File.ReadAllBytes("File2.png"))
Private embedStreams As IEnumerable(Of EmbedFileStream) = {
New EmbedFileStream(stream1, EmbedFileType.xml),
New EmbedFileStream(stream2, EmbedFileType.png)
}
' Convert to Pdf/A-3B with embeded files
pdf.ConvertToPdfA(embedStreams)