如何使用 IronPDF 在 C# 中將 PDF 轉換為 PDF/A

How to Export PDF/A or PDF/A-3 Format Documents in C#

This article was translated from English: Does it need improvement?
Translated
View the article in English
role="alert">您的企業每年在 PDF 安全和合規上的訂閱開支過高。考慮 IronSecureDoc,該產品提供數位簽名、刪減、加密和保護等管理 SaaS 服務的解決方案,只需一次性付款。探索 IronSecureDoc 的文檔

作為PDF 協會成員,Iron Software 積極支持 PDF/A 標準,並確保 IronPDF 符合檔案存檔合規性要求。

IronPDF 支持將 PDF 導出為 PDF/A-3b 標準。 PDF/A-3B 是 ISO PDF 規範的嚴格子集,用於創建文檔封存版本,意圖是它們在保存後始終能夠以完全相同的方式呈現。

快速入門:在 C# 中將 PDF 轉換為 PDF/A-3b

只需幾行 C# 代碼即可輕鬆將您的標準 PDF 轉換為存檔的 PDF/A-3b 格式。 這確保了長期的文檔保存和與存檔標準的合規性。 通過利用 IronPDF 的強大功能,您可以快速將現有文檔轉換為 PDF/A 格式,保證一致的渲染和可訪問性。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. Copy and run this code snippet.

    IronPdf.PdfDocument pdf = IronPdf.PdfDocument.FromFile("example.pdf");
    pdf.SaveAsPdfA("output.pdf");
  3. Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer

508 條合規性

IronPDF 很高興跟隨谷歌的倡議,提高 PDF 銷存和可訪性以及 PDF 文檔的 508 條合規性。

在 2021 年,我們改用 Google Chromium HTML 渲染引擎從 HTML 渲染 PDF。這使得我們的軟件能夠繼承谷歌已經實施的可訪問性工作

開始使用 IronPDF

立即開始在您的項目中使用 IronPDF 並免費試用。

第一步:
green arrow pointer

*

class="hsg-featured-snippet">

最小工作流程(5 步)

如何在 C# 中將 HTML 字符串渲染為 PDF
  1. 下載用於創建 PDF/A 文件的 C# 庫
  2. 從文件、HTML 或 URL 加載現有 PDF 或創建 PDF
  3. 將現有 PDF 文件導出為 PDF/A 文檔
  4. 將 HTML 設計或 URL 導出為 PDF/A 文檔
  5. 將符合 PDF/A 的文檔保存到所需位置

PDF/A 版本

IronPDF 支持的兩種合規性等級分別是 A 和 B。 'A' 代表 '可訪問',而 'B' 代表 '基本'。這些等級適用於 PDF/A-1、PDF/A-2 和 PDF/A-3 標準。 以下信息摘自 Adobe 關於 PDF/A 的文獻。 默認情況下,通過 IronPDF 生成的 PDF 輸出始終是 PDF/A-3B(ISO 19005-3)。

  • Level A 符合規範滿足其規範中的所有要求,允許輔助軟件提高對肢體殘疾用戶的可訪性。
  • Level B 符合規範較低,僅滿足最低要求,主要關注於長期保持文件的視覺外觀。

PDF/A-1:PDF/A 格式基於最初的 PDF 1.4 版本。

PDF/A-2:於 2011 年 7 月作為稱為 ISO 32001-1 的新標準發佈,該標準包含所有最高至 1.7 版的 PDF 功能以及一些新功能。 其特點包括對 JPEG2000 的支持,這對掃描的文檔很有用,還有特定需求的自定義 XMP 元數據。

PDF/A-3:此 PDF/A 格式包含了第二級的所有要求,同時還允許在 PDF/A 合規的文檔中嵌入其他文件格式——如 XML、CSV 和文字處理格式。

請注意IronPdf 尚不支持將帶有附件的 PDF 轉換為 PDF/A-3B.

從現有 PDF 文件

我有一個示例 PDF 文件 "wikipedia.pdf",它是使用 IronPDF 生成並保存為 PDF 文件的。

在此演示中,我將加載並重新保存為 PDF/A-3B 合規的 PDF 文件。

輸入文件:"wikipedia.pdf"

代码

: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

輸出

輸出文件符合 PDF/A-3b 合規性:

許可證完成

從 HTML 設計或 URL

我有一個示例 HTML 設計 "design.html",我希望使用 IronPDF 將其從 HTML 渲染為 PDF,然後導出為 PDF/A 合規文件。

在此演示中,我將其保存為 PDF/A-3B 合規的 PDF 文件。

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

輸出文件符合 PDF/A-3B 合規性:

許可證完成

URL 示例

我有以下網站 "https://www.microsoft.com",希望使用 IronPDF 將其從 URL 渲染為 PDF,然後導出為 PDF/A 合規文件。

在此演示中,我將其保存為 PDF/A-3B 合規的 PDF 文件。

: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

輸出文件符合 PDF/A-3B 合規性:

許可證完成


支持嵌入附件

IronPdf 提供在將文件轉換為 PDF/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

用字節數組嵌入

通過將文件內容作為字節數組提供以及相應的文件類型嵌入文件。這在文件已加載到內存中時很有用。

: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

用流嵌入

提供使用流內容嵌入文件的能力,並附帶其文件類型。此方法適用於文件數據作為流處理的場景。

: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

探索 EmbedFileConfiguration

當將 PdfDocument 轉換為包含嵌入文件的 PDF/A-3 格式時,重要的是要配置參數,例如 EmbedFilePath、EmbedFileByte 或 EmbedFileStream。 這些設置允許您指定要嵌入的文件類型、名稱以及任何希望包含的自定義 XMP 元數據。

妥善配置確保嵌入內容組織有效並符合 PDF/A-3 標準。 自定義 XMP 元數據允許關於嵌入文件的附加信息,增強文檔的總體可用性和可訪問性。 使用 EmbedFileConfiguration 類,開發人員可以輕鬆自定義文件的值和格式。

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");
Dim config = New EmbedFileConfiguration With {
	.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
Dim 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")
$vbLabelText   $csharpLabel
  • EmbedFileName:一個代表 PDF/A 文件中嵌入文件名稱的 string 屬性。 默認情況下,此字符串為空。
  • AFDesc: A string property representing the associated file description for the embedded file. 默認情況下,此字符串為空。
  • ConformanceLevel:將嵌入的 XML 文件應用於 PDF/A 文件的 XMP 元數據的合規級別。 默認為 ConformanceLevel.EN16931。 IronPDF 通過 ConformanceLevel 枚舉提供不同的值。
  • SchemaNamespace:將 XML 文件嵌入到 XMP 元數據的 PDF/A 架構命名空間 URI。 默認為 SchemaNamespace.facturX,在 SchemaNamespace 枚舉中提供了多種選項供開發人員使用。
  • SchemaPrefix:將 XML 文件嵌入應用於 PDF/A 文件的 XMP 元數據的 PDF/A 架構前綴。 默認為 SchemaPrefix.fx,在 SchemaPrefix 枚舉中有多個選項可供選擇。
  • PropertyVersion:應用於 PDF/A 文件 XMP 元數據的 XML 文件嵌入屬性版本。 默認為 PropertyVersion.v1,在 PropertyVersion 枚舉中有多個選項。
  • AFRelationship:與 PDF/A 文檔相關的文件(嵌入文件)之間的關係。 在 AFRelationship 枚舉中提供多個選項。

字符顯示問題

PDF/A 要求文檔中的所有字符都必須映射到視覺和語義上正確的字體。 雖然並非所有字體都必須嵌入,但使用的字體必須支持所需的字形。如果使用了不正確或不完整的字體,某些字符可能會顯示破損、缺失或渲染不正確——尤其是在使用特殊腳本或符號的語言中。

例如,在下面的問題中,上面樣本使用了正確的字體並正確顯示了字符,而下面樣本由於字體不匹配而無法正確渲染它們。

顯示問題

準備看看您還能做哪些其他事情嗎? 請在此處查看我們的教學頁面:創建 PDF

常見問題解答

如何在C#中將PDF轉換為PDF/A格式?

您可以使用 IronPDF 的轉換函數,在 C# 中將標準 PDF 轉換為 PDF/A 格式。具體操作方法是:載入 PDF 文檔,然後使用指定的 PDF/A 一致性等級儲存。

PDF/A-3b 與其他 PDF/A 標準有什麼不同?

PDF/A-3b 是 ISO PDF 規範的子集,專注於透過確保文件呈現的一致性來長期保存文件。與其他 PDF/A 標準不同,PDF/A-3b 允許在文件中嵌入其他文件,例如 XML 或 CSV 文件。

如何使用 C# 將文件嵌入到 PDF/A 文件中?

IronPDF 允許透過檔案路徑、位元組陣列或串流將 XML 或 CSV 等檔案嵌入到 PDF/A 文件中。這可以透過EmbedFileConfiguration類別進行配置,以設定檔案名稱、描述和元資料等參數。

HTML或URL內容能否轉換為PDF/A-3b格式?

是的,IronPDF 可以將 HTML 內容或 URL 轉換為 PDF/A-3b 格式。這包括將 HTML 或 URL 渲染成 PDF 格式,然後以符合 PDF/A-3b 規範的方式儲存文件。

PDF/A 文件支援哪些輔助功能?

IronPDF 使用 Google 的 Chromium HTML 渲染引擎,該引擎繼承了 Google 實現的輔助功能,從而支援符合第 508 節標準的 PDF/A 文件的輔助功能。

如何確保我的 PDF/A 文件符合第 508 條的要求?

IronPDF 利用 Google Chromium HTML 渲染引擎的輔助功能,確保您的 PDF/A 文件符合 Section 508 標準,這有助於使 PDF 文件可供輔助軟體存取。

EmbedFileConfiguration類別的用途是什麼?

IronPDF 中的EmbedFileConfiguration類別允許開發人員配置在 PDF/A 文件中嵌入文件的參數,例如指定文件元資料並確保符合 PDF/A-3 標準。

我可以將帶有附件的 PDF 文件轉換為 PDF/A-3b 格式嗎?

IronPDF 可以將帶有附件的 PDF 文件轉換為 PDF/A-3b 格式,但附件需要使用 IronPDF 提供的相應方法進行專門配置和嵌入。

IronPDF在PDF/A轉換方面有哪些優勢?

IronPDF 為 PDF/A 轉換提供了許多優勢,包括符合歸檔標準、支援各種輸入格式、能夠嵌入其他文件以及包含全面的元資料自訂功能。

IronPDF 轉換為 PDF/A 格式時是否與 .NET 10 相容?

是的。 IronPDF 完全相容於 .NET 10,支援 PDF/A 轉換功能(例如 SaveAsPdfA)以及透過 ChromePdfRenderer 進行渲染。您可以在 .NET 10 專案中直接使用它,無需任何特殊設定。它還支援在 Windows、Linux、macOS 和容器上部署,目標平台為 .NET 10。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 16,133,208 | 版本: 2025.11 剛剛發布