How to Comply with PDF/A Standard
PDF/A is an ISO-standardized version of the PDF (Portable Document Format) specialized for the digital preservation of electronic documents.
The PDF/A standard uses the PDF format for archiving documents. Compliant documents must contain all the information necessary to display the document embedded in the file. This includes all content, fonts, and color information. A PDF/A document cannot rely on information from external sources. Other key elements of PDF/A conformance include:
- Audio and video content is forbidden.
- JavaScript and executable file launches are forbidden.
- All fonts must be embedded. This applies to the Standard 14 fonts as well.
- Color spaces must be specified in a device-independent manner.
- Encryption is forbidden.
- Use of standards-based metadata is required.
- Transparent objects and layers are forbidden.
- LZW and JPEG2000 image compression models are forbidden.
Compliance Levels
There are three major versions of the standard:
- PDF/A-1 (2005)
- PDF/A-2 (2011)
- PDF/A-3 (2013)
RadPdfProcessing supports the following PDF/A compliance levels:
| Compliance Level | Description |
|---|---|
| None | Specify no compliance level. |
| PdfA1B | PDF/A-1b compliance level. Ensures reliable reproduction of the visual appearance of the document. |
| PdfA1A (Since Q3 2025) | PDF/A-1a compliance level. Ensures that document content can be searched and re-purposed. Requires document structure, tagged PDF, Unicode character maps, and language specification. |
| PdfA2B | PDF/A-2b compliance level. Similar to PDF/A-1b but based on PDF Reference 1.7. |
| PdfA2A (Since Q3 2025) | PDF/A-2a compliance level. Similar to PDF/A-1a but based on PDF Reference 1.7. |
| PdfA2U | PDF/A-2u compliance level. Similar to PDF/A-2b with the additional requirement that all text has Unicode mapping. |
| PdfA3B | PDF/A-3b compliance level. Similar to PDF/A-2b but allows embedding of arbitrary file formats. |
| PdfA3A (Since Q3 2025) | PDF/A-3a compliance level. Similar to PDF/A-2a but allows embedding of arbitrary file formats. |
| PdfA3U | PDF/A-3u compliance level. Requires character mapping to Unicode and allows embedding of arbitrary file formats. |
| PdfUA1 (Since Q3 2025) | PDF/UA-1 compliance level. Ensures accessibility for users with disabilities. |
Any files embedded within a PDF/A-compliant document must also comply with the PDF/A standard.
How to Conform to PDF/A Standard
The PdfFormatProvider class exports a RadFixedDocument to PDF and allows you to specify the available export settings.
To comply with any of the standards, set the ComplianceLevel property to a value different than None:
PdfFormatProvider provider = new PdfFormatProvider();
PdfExportSettings settings = new PdfExportSettings();
settings.ComplianceLevel = PdfComplianceLevel.PdfA2B;
provider.ExportSettings = settings;
Accessibility Compliance
To comply with the accessibility requirements of the PDF/A-1a, PDF/A-2a, PDF/A-3a, or PDF/UA-1 standards, you must also set the TaggingStrategy property of the PdfFormatProvider PdfExportSettings.
PdfFormatProvider provider = new PdfFormatProvider();
PdfExportSettings settings = new PdfExportSettings();
settings.ComplianceLevel = PdfComplianceLevel.PdfA1A;
settings.TaggingStrategy = TaggingStrategyType.UseExisting;
provider.ExportSettings = settings;
This ensures that the exported PDF document is properly tagged, which is essential for meeting these standards' requirements.
If you specify encryption for the document, the export ignores it because the standard does not allow documents to be encrypted.
The PDF/A standard requires all fonts used in a document to be embedded. Before Q3 2025, the 14 standard fonts were not embedded in the file, which caused the document to be non-compliant. Starting with Q3 2025, these standard fonts are automatically embedded when PDF/A compliance is enabled. For more information about font embedding, see the Fonts article.
Setting Fallback Fonts for Standard Fonts
When you work with PDF/A-compliant documents, you can specify fallback fonts for the standard fonts to ensure proper rendering when the standard font is unavailable or needs to be replaced:
if (FontsRepository.TryCreateFont(new FontFamily("Segoe UI"), FontStyles.Normal, FontWeights.Normal, out FontBase font))
{
FontsRepository.SetStandardFontFallback(StandardFontNames.Helvetica, font); // Set Segoe UI as a fallback for Helvetica
}
else
{
throw new Exception("Font not created.");
}
If you need to remove all configured fallback fonts, use the ClearStandardFontFallbacks() method:
FontsRepository.ClearStandardFontFallbacks();