How to Export PDF/A, PDF/A-3, or PDF/A-4 Format Documents in C#
IronPDF supports export of PDFs to the PDF/A-3b and PDF/A-4 standards. 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. PDF/A-4 is the latest compliance standard, offering enhanced support for digital signatures.
Section 508 Compliance
IronPDF follows Google's initiative to increase PDF archiving and accessibility for Section 508 compliance. When working with HTML to PDF conversion, our rendering engine preserves all accessibility features.
In 2021, we moved to rendering PDFs from HTML using Google Chromium's HTML rendering engine. This allows our software to inherit accessibility work Google has already implemented.
Why is Section 508 compliance important for PDF/A documents?
Section 508 compliance ensures PDF documents are accessible to individuals with disabilities using assistive technologies like screen readers. PDF/A documents meeting Section 508 standards guarantee content remains accessible throughout archival lifespan. This compliance is critical for government agencies, educational institutions, and organizations providing equal access to information for all users.
Minimal Workflow (4 steps)

- Download C# Library for Creating PDF/A Documents
- Load existing PDF or render from HTML/URL
- Select PDF/A version based on archival requirements
- Convert and save as PDF/A compliant document
What PDF/A Versions Does IronPDF Support?
IronPDF supports conformance levels 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. Information below is from Adobe's documentation on PDF/A. By default, PDF output generated through IronPDF is PDF/A-3B (ISO 19005-3).
- Level A conformance meets all specification requirements, allowing assistive software to improve accessibility for physically impaired users.
- Level B has lower conformance with minimal compliance, focusing on preserving visual appearance long-term.
What are the differences between PDF/A-1, PDF/A-2, and PDF/A-3?
PDF/A-1: Based on original PDF 1.4 version.
PDF/A-2: Released July 2011 as ISO 32001-1, includes all features of PDF versions up to 1.7 plus new features. Supports JPEG2000 for scanned documents and specific requirements for customized XMP metadata. When working with PDF metadata, IronPDF ensures proper XMP metadata handling.
PDF/A-3: Includes all Level 2 requirements. Allows embedding additional file formats—XML, CSV, and word processing formats—into PDF/A conforming documents.
PDF/A-4: The latest version of the PDF/A compliance standard, released in 2020. It is based on PDF 2.0 and introduces improved functionality, including enhanced support for digital signatures compared to PDF/A-3. This version is best suited for engineering documents and technical workflows that involve 3D models and other complex elements.
| Feature | PDF/A-3 | PDF/A-4 |
|---|---|---|
| Base PDF Version | PDF 1.7 | PDF 2.0 |
| Embedded File Attachments | Supported | Not Supported |
| Digital Signatures | Supported | Enhanced Support |
| Best Use Case | Invoices, XML data embedding | Engineering, 3D models, technical workflows |
Converting to the latest PDF/A-4 standard
PDF/A-4 is the latest compliance standard in the PDF/A series. It is considered the best archival format for a wide range of document types, particularly those involving digital signatures. The format disallows encryption and multimedia elements, ensuring that each file remains fully self-contained.
Converting an existing file to the PDF/A-4 compliant standard is straightforward.
:path=/static-assets/pdf/content-code-examples/how-to/sample-pdfa4.csusing IronPdf;
// Load an existing PDF
PdfDocument pdf = PdfDocument.FromFile("input.pdf");
// Save as PDF/A-4 compliant document
pdf.SaveAsPdfA("pdfa4-output.pdf", PdfAVersions.PdfA4);From an Existing PDF File (PDF/A-3B)
This example uses wikipedia.pdf, a PDF file generated using IronPDF. For optimal results, ensure you have configured your license keys properly before starting conversion.
The code below loads and re-saves the file as both PDF/A-3B and PDF/A-4 compliant formats to demonstrate compatibility with both standards.
What does the input PDF look like before conversion?
What code converts existing PDFs to PDF/A format?
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-fromfile.csusing 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);How can I verify the PDF/A conversion was successful?
The output file is PDF/A-3b compliant:

From an HTML Design or URL (PDF/A-3B)
This example uses design.html, an HTML design file to render from HTML to PDF using IronPDF and export as a PDF/A compliant file. The HTML file to PDF conversion process maintains all styling and formatting during conversion.
The code below saves the output as a PDF/A-3B compliant PDF file.
How do I convert HTML files to PDF/A format?
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-fromhtml.csusing 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);The output file is PDF/A-3B compliant:

How do I convert websites to PDF/A format?
This example renders https://www.microsoft.com from URL to PDF using IronPDF and exports it as a PDF/A compliant file. The URL to PDF conversion feature ensures all web content, including JavaScript and CSS, is properly rendered.
The code below saves the output as a PDF/A-3B compliant PDF file.
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-fromurl.csusing 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);The output file is PDF/A-3B compliant:

Support Embedding Attachment (PDF/A-3B)
IronPDF supports embedding files into PDF documents during PDF/A conversion using file paths, byte arrays, or streams. This feature creates self-contained archival documents that include all necessary supporting materials. For more advanced PDF manipulation features, check our PDF editing tutorial.
Embed with File Paths
Embed files using their file paths. A collection of file paths is provided, and these files are included as attachments during PDF/A conversion.
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-attachment-path.csusing 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);How do I embed files using byte arrays?
Embed files by providing file content as byte arrays with their respective file types. Useful when files are already loaded into memory.
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-attachment-byte.csusing 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");How do I embed files using streams?
Embed files using streams for content with their file types. Ideal when file data is processed as a stream.
:path=/static-assets/pdf/content-code-examples/how-to/pdfa-attachment-stream.csusing 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");How do I configure embedded file properties with EmbedFileConfiguration?
When converting a PdfDocument to PDF/A-3 format with embedded files, configure parameters such as EmbedFilePath, EmbedFileByte, or EmbedFileStream to specify the file type, name, and custom XMP metadata.
Proper configuration ensures embedded content is organized effectively and complies with PDF/A-3 standards. Customizing XMP metadata allows additional information about embedded files, enhancing document usability and accessibility. Using the EmbedFileConfiguration class, developers easily customize values and formats for the file.
var config = new EmbedFileConfiguration
{
EmbedFileName = "Attachment.xml",
AFDesc = "Associated File Description",
ConformanceLevel = ConformanceLevel.EN16931,
SchemaNamespace = SchemaNamespace.facturX,
SchemaPrefix = SchemaPrefix.fx,
PropertyVersion = PropertyVersion.v1,
AFRelationship = AFRelationship.Alternative
};
// Load a PDF document
var document = PdfDocument.FromFile("wikipedia.pdf");
// Configure embedded file parameters
document.EmbedFileFromFilePath("path/to/attachment", config);
// Save the document as PDF/A-3b
document.SaveAsPdfA3B("output-with-configured-attachment.pdf");var config = new EmbedFileConfiguration
{
EmbedFileName = "Attachment.xml",
AFDesc = "Associated File Description",
ConformanceLevel = ConformanceLevel.EN16931,
SchemaNamespace = SchemaNamespace.facturX,
SchemaPrefix = SchemaPrefix.fx,
PropertyVersion = PropertyVersion.v1,
AFRelationship = AFRelationship.Alternative
};
// Load a PDF document
var document = PdfDocument.FromFile("wikipedia.pdf");
// Configure embedded file parameters
document.EmbedFileFromFilePath("path/to/attachment", config);
// Save the document as PDF/A-3b
document.SaveAsPdfA3B("output-with-configured-attachment.pdf");EmbedFileName: Astringproperty representing the embedded file name in the PDF/A document. Default is empty string.AFDesc: Astringproperty representing the associated file description for the embedded file. Default is empty string.ConformanceLevel: The conformance level of embedding XML files applying to XMP Metadata of PDF/A document. Default isConformanceLevel.EN16931. IronPDF provides different values via theConformanceLevelenum.SchemaNamespace: The PDF/A Schema NamespaceURI embedding XML files and applying to XMP metadata of PDF/A document. Default isSchemaNamespace.facturX, with various options available in theSchemaNamespaceenum.SchemaPrefix: The PDF/A Schema Prefix for embedding XML files applying to XMP Metadata of PDF/A document. Default isSchemaPrefix.fx, with several options in theSchemaPrefixenum.PropertyVersion: The property version of embedding XML files applied to XMP Metadata of PDF/A document. Default isPropertyVersion.v1, with multiple options in thePropertyVersionenum.AFRelationship: The relation of the associated file (embedded file) to the PDF/A document. Several options are available in theAFRelationshipenum.
What Causes Character Display Issues in PDF/A?
PDF/A requires all characters in the document to map to a visually and semantically correct font. While not all fonts must be embedded, the font used must support required glyphs. If an incorrect or incomplete font is used, certain characters may appear broken, missing, or incorrectly rendered—especially in languages with special scripts or symbols. For file size optimization considerations, explore our PDF compression guide to balance font embedding with file size.
Why do some characters appear broken in PDF/A documents?
For example, in the issue below, the top sample uses the correct font and displays characters properly, while the bottom sample fails to render them correctly due to font mismatch.

From an Existing PDF File (PDF/A-4)
This example uses "ENV-2026-1847-Assessment-Report.pdf", a 4-page municipal environmental impact assessment document. The report demonstrates PDF/A-4's suitability for archiving official government documents that require long-term preservation—environmental studies, regulatory filings, and compliance records that agencies must retain for decades.
PDF/A-4 is ideal for these documents because it guarantees visual fidelity over time, embeds all fonts and resources, and supports the enhanced digital signature capabilities required for official certifications.
Input file: "ENV-2026-1847-Assessment-Report.pdf"
Code
:path=/static-assets/pdf/content-code-examples/how-to/save-as-pdfa4.csusing 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);Output
The output file is PDF/A-4 compliant:

Ready to see what else you can do? Check out our tutorial page here: Create PDFs
Frequently Asked Questions
How do I convert a standard PDF to PDF/A-3b format in C#?
With IronPDF, you can convert any standard PDF to PDF/A-3b format using just two lines of code. Simply load your PDF using PdfDocument.FromFile() and then call SaveAsPdfA() to export it as a compliant PDF/A-3b document for long-term archival.
What is PDF/A-3b and why is it important for document archival?
PDF/A-3b is a strict subset of the ISO PDF specification designed for long-term document preservation. IronPDF supports PDF/A-3b export to ensure your documents always render exactly as saved, making it ideal for legal, government, and archival purposes where document integrity is critical.
Does the PDF/A conversion support Section 508 accessibility compliance?
Yes, IronPDF ensures Section 508 compliance by using Google Chromium's rendering engine, which inherits Google's accessibility features. This means your PDF/A documents will be accessible to users with disabilities using assistive technologies like screen readers.
Can I convert HTML content directly to PDF/A format?
Absolutely! IronPDF allows you to convert HTML content or URLs directly to PDF/A-3b format. The Google Chromium rendering engine preserves all accessibility features during the HTML to PDF conversion, ensuring your resulting PDF/A documents maintain full compliance.
What are the main benefits of using PDF/A-3b over standard PDF format?
IronPDF's PDF/A-3b export provides guaranteed long-term preservation, consistent rendering across all viewers, Section 508 accessibility compliance, and adherence to ISO archival standards. This makes it perfect for legal documents, government records, and any content requiring permanent archival.






