使用 C# 建立無障礙 PDF 及符合第 508 條規範

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

IronPDF 讓開發者能夠利用 Google Chromium 的渲染引擎,建立符合《第 508 條》規範且無障礙的 PDF 檔案,並透過簡單的一行 SaveAsPdfUA() 方法呼叫,即可支援 PDF/UA 標準。

IronPDF 遵循 Google 提升 PDF 無障礙性及符合《第 508 條》規範的倡議。 此函式庫提供了一套全面的解決方案,用於生成符合聯邦規範的無障礙 PDF 檔案,並確保身心障礙者能夠使用這些文件。 透過運用現代網頁標準及 Google 的無障礙功能改進,IronPDF 讓 .NET 開發人員能輕鬆符合相關規範。

快速入門:使用 IronPDF 建立無障礙 PDF 檔案 using IronPDF 僅需少量程式碼即可建立符合第 508 條規定的 PDF 檔案。 本快速入門指南將示範如何使用 C# 產生符合無障礙標準的 PDF 檔案,提供一種在 PDF 文件中實作無障礙功能的簡便方法。

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 請複製並執行此程式碼片段。

    IronPdf.PdfDocument.FromFile("input.pdf").SaveAsPdfUA("output-accessible.pdf");
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronPDF

    arrow pointer

什麼使 PDF 具備無障礙功能並符合第 508 條規定?

2021 年,我們改為使用 Google Chromium HTML 渲染引擎,將 HTML 轉換為 PDF。此舉使我們的軟體得以繼承 Google 已實作的無障礙功能

可存取的 PDF 檔案需要特定的結構元素,以便螢幕閱讀器與輔助技術能正確解讀文件內容。 這些要素包括:

  • 標記式內容結構,定義閱讀順序與層級
  • 圖片及非文字元素的替代文字
  • 採用正確的標題結構 (H1, H2, H3) 以便導航
  • 螢幕閱讀器發音的語言規範
  • 遵循自然內容流的邏輯閱讀順序
  • 文字與背景之間具有高對比度

PDF/UA(通用無障礙)標準代表了無障礙 PDF 文件的國際基準。 IronPDF 在使用 SaveAsPdfUA() 方法時,會自動產生符合這些要求的 PDF 檔案。

PDF/UA 合規性為何對企業應用程式至關重要?

美國聯邦機構及承包商必須遵守第 508 條規定。 組織必須確保其數位內容(包括 PDF 檔案)能供身心障礙的員工及客戶使用。 若未遵守上述要求,可能導致:

  • 《美國殘疾人法案》(ADA)下的法律處罰與訴訟
  • 失去聯邦合約與商業機會
  • 排除 20% 的身心障礙人口
  • 損害品牌聲譽與客戶信任

IronPDF 透過自動處理可存取 PDF 生成所需的技術要求,簡化了合規流程。 此函式庫可確保文件結構、元資料及標籤設定正確無誤,開發人員無需深入理解 PDF/UA 規格的複雜細節。

IronPDF 是如何繼承 Google 的無障礙功能的?

IronPDF 採用 Google Chromium 的渲染引擎,該引擎內建無障礙功能。 當 HTML 轉換為 PDF 時,Chrome 引擎:

  1. 保留語義 HTML 結構 - 維持標題、清單及表格的語意
  2. 轉換 ARIA 屬性 - 將無障礙屬性映射至 PDF 標籤
  3. 維持閱讀順序 - 分析 CSS 佈局以確保內容流的邏輯性
  4. 處理複雜版面配置 - 正確標記多欄位文字與浮動元素

以下是從語義 HTML 建立無障礙 PDF 的範例:

using IronPdf;

// Create renderer with accessibility-focused settings
var renderer = new ChromePdfRenderer();

// HTML with proper semantic structure
string accessibleHtml = @"
<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'>
    <title>Annual Report 2024</title>
</head>
<body>
    <header>
        <h1>Annual Financial Report</h1>
        <nav aria-label='Document navigation'>
            <ul>
                <li><a href='#summary'>Executive Summary</a></li>
                <li><a href='#finances'>Financial Overview</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <section id='summary'>
            <h2>Executive Summary</h2>
            <p>This report provides a comprehensive overview of our financial performance.</p>
        </section>

        <section id='finances'>
            <h2>Financial Overview</h2>
            <table>
                <caption>Quarterly Revenue Breakdown</caption>
                <thead>
                    <tr>
                        <th scope='col'>Quarter</th>
                        <th scope='col'>Revenue</th>
                        <th scope='col'>Growth</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Q1 2024</td>
                        <td>$1.2M</td>
                        <td>15%</td>
                    </tr>
                </tbody>
            </table>
        </section>
    </main>
</body>
</html>";

// Render to PDF and save as accessible PDF/UA
var pdf = renderer.RenderHtmlAsPdf(accessibleHtml);
pdf.SaveAsPdfUA("accessible-annual-report.pdf");
using IronPdf;

// Create renderer with accessibility-focused settings
var renderer = new ChromePdfRenderer();

// HTML with proper semantic structure
string accessibleHtml = @"
<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'>
    <title>Annual Report 2024</title>
</head>
<body>
    <header>
        <h1>Annual Financial Report</h1>
        <nav aria-label='Document navigation'>
            <ul>
                <li><a href='#summary'>Executive Summary</a></li>
                <li><a href='#finances'>Financial Overview</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <section id='summary'>
            <h2>Executive Summary</h2>
            <p>This report provides a comprehensive overview of our financial performance.</p>
        </section>

        <section id='finances'>
            <h2>Financial Overview</h2>
            <table>
                <caption>Quarterly Revenue Breakdown</caption>
                <thead>
                    <tr>
                        <th scope='col'>Quarter</th>
                        <th scope='col'>Revenue</th>
                        <th scope='col'>Growth</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Q1 2024</td>
                        <td>$1.2M</td>
                        <td>15%</td>
                    </tr>
                </tbody>
            </table>
        </section>
    </main>
</body>
</html>";

// Render to PDF and save as accessible PDF/UA
var pdf = renderer.RenderHtmlAsPdf(accessibleHtml);
pdf.SaveAsPdfUA("accessible-annual-report.pdf");
Imports IronPdf

' Create renderer with accessibility-focused settings
Dim renderer As New ChromePdfRenderer()

' HTML with proper semantic structure
Dim accessibleHtml As String = "
<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'>
    <title>Annual Report 2024</title>
</head>
<body>
    <header>
        <h1>Annual Financial Report</h1>
        <nav aria-label='Document navigation'>
            <ul>
                <li><a href='#summary'>Executive Summary</a></li>
                <li><a href='#finances'>Financial Overview</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <section id='summary'>
            <h2>Executive Summary</h2>
            <p>This report provides a comprehensive overview of our financial performance.</p>
        </section>

        <section id='finances'>
            <h2>Financial Overview</h2>
            <table>
                <caption>Quarterly Revenue Breakdown</caption>
                <thead>
                    <tr>
                        <th scope='col'>Quarter</th>
                        <th scope='col'>Revenue</th>
                        <th scope='col'>Growth</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Q1 2024</td>
                        <td>$1.2M</td>
                        <td>15%</td>
                    </tr>
                </tbody>
            </table>
        </section>
    </main>
</body>
</html>"

' Render to PDF and save as accessible PDF/UA
Dim pdf = renderer.RenderHtmlAsPdf(accessibleHtml)
pdf.SaveAsPdfUA("accessible-annual-report.pdf")
$vbLabelText   $csharpLabel

目前支援哪些無障礙標準?

IronPDF 支援多種無障礙標準,以滿足各種合規要求:

  1. PDF/UA-1 - 透過 SaveAsPdfUA() 實現無障礙 PDF 的主要標準
  2. WCAG 2.1 AA 級 - 當原始 HTML 符合 WCAG 標準時之合規性
  3. 《第 508 條修訂案》(2018 年)— 美國 符合 WCAG 2.0 標準的聯邦要求
  4. EN 301 549 - 資訊與通訊科技產品之歐洲無障礙標準

此函式庫亦支援 UTF-8 及國際語言,確保跨語言與字元集的相容性。

如何將 PDF 檔案匯出以符合無障礙標準?

IronPDF 提供多種匯出選項,以滿足不同的合規要求。 目前,您可以依照 PDF/A-3b 標準匯出文件。 請參閱我們關於使用 IronPDF 進行 PDF/A 歸檔的文章以了解更多資訊。

using IronPdf;

// Load or create a PDF document
var pdf = PdfDocument.FromFile("source-document.pdf");

// Export as PDF/UA for accessibility compliance
pdf.SaveAsPdfUA("accessible-output.pdf");

// Export as PDF/A for long-term archiving with accessibility
pdf.SaveAsPdfA("archived-accessible.pdf", PdfAVersions.PdfA3);

// Set document metadata for better accessibility
pdf.Metadata.Title = "2024 Accessibility Report";
pdf.Metadata.Author = "Compliance Department";
pdf.Metadata.Subject = "Annual accessibility compliance documentation";
pdf.Metadata.Keywords = "accessibility, Section 508, compliance, PDF/UA";
pdf.Metadata.Language = "en-US";

// Save with metadata
pdf.SaveAs("document-with-metadata.pdf");
using IronPdf;

// Load or create a PDF document
var pdf = PdfDocument.FromFile("source-document.pdf");

// Export as PDF/UA for accessibility compliance
pdf.SaveAsPdfUA("accessible-output.pdf");

// Export as PDF/A for long-term archiving with accessibility
pdf.SaveAsPdfA("archived-accessible.pdf", PdfAVersions.PdfA3);

// Set document metadata for better accessibility
pdf.Metadata.Title = "2024 Accessibility Report";
pdf.Metadata.Author = "Compliance Department";
pdf.Metadata.Subject = "Annual accessibility compliance documentation";
pdf.Metadata.Keywords = "accessibility, Section 508, compliance, PDF/UA";
pdf.Metadata.Language = "en-US";

// Save with metadata
pdf.SaveAs("document-with-metadata.pdf");
Imports IronPdf

' Load or create a PDF document
Dim pdf = PdfDocument.FromFile("source-document.pdf")

' Export as PDF/UA for accessibility compliance
pdf.SaveAsPdfUA("accessible-output.pdf")

' Export as PDF/A for long-term archiving with accessibility
pdf.SaveAsPdfA("archived-accessible.pdf", PdfAVersions.PdfA3)

' Set document metadata for better accessibility
pdf.Metadata.Title = "2024 Accessibility Report"
pdf.Metadata.Author = "Compliance Department"
pdf.Metadata.Subject = "Annual accessibility compliance documentation"
pdf.Metadata.Keywords = "accessibility, Section 508, compliance, PDF/UA"
pdf.Metadata.Language = "en-US"

' Save with metadata
pdf.SaveAs("document-with-metadata.pdf")
$vbLabelText   $csharpLabel

面對不同的合規要求,我該採用哪些 PDF/A 標準?

不同產業與司法管轄區對 PDF 標準有特定要求:

  • 政府/聯邦承包商PDF/UA 搭配 PDF/A-3 以確保無障礙存取與內容保存
  • 醫療保健 (HIPAA)PDF/UA 具備加密與密碼保護功能
  • 金融服務PDF/A-3b 內嵌原始資料
  • 教育PDF/UA 適用於無障礙學生教材
  • 法律文件PDF/A 適用於具備無障礙功能的法院提交文件

進一步了解如何設定元資料和文件屬性以提升無障礙性。

如何將現有的 PDF 檔案轉換為無障礙格式?

將舊版 PDF 轉換為無障礙格式時,需仔細考量文件結構:

using IronPdf;
using System.Co/llections.Generic;

// Load existing PDF
var existingPdf = PdfDocument.FromFile("legacy-document.pdf");

// Add document structure and metadata
existingPdf.Metadata.Title = "Converted Accessible Document";
existingPdf.Metadata.Language = "en-US";

// Extract and re-render for better structure (if original lacks tags)
string extractedHtml = existingPdf.ExtractHtmlString();

// Create new accessible version
var renderer = new ChromePdfRenderer()
{
    RenderingOptions = new ChromePdfRenderOptions()
    {
        MarginTop = 40,
        MarginBottom = 40,
        EnableJavaScript = true,
        RenderDelay = 500 // Allow time for JavaScript rendering
    }
};

// Re-render with proper structure
var accessiblePdf = renderer.RenderHtmlAsPdf(extractedHtml);
accessiblePdf.SaveAsPdfUA("converted-accessible.pdf");
using IronPdf;
using System.Co/llections.Generic;

// Load existing PDF
var existingPdf = PdfDocument.FromFile("legacy-document.pdf");

// Add document structure and metadata
existingPdf.Metadata.Title = "Converted Accessible Document";
existingPdf.Metadata.Language = "en-US";

// Extract and re-render for better structure (if original lacks tags)
string extractedHtml = existingPdf.ExtractHtmlString();

// Create new accessible version
var renderer = new ChromePdfRenderer()
{
    RenderingOptions = new ChromePdfRenderOptions()
    {
        MarginTop = 40,
        MarginBottom = 40,
        EnableJavaScript = true,
        RenderDelay = 500 // Allow time for JavaScript rendering
    }
};

// Re-render with proper structure
var accessiblePdf = renderer.RenderHtmlAsPdf(extractedHtml);
accessiblePdf.SaveAsPdfUA("converted-accessible.pdf");
Imports IronPdf
Imports System.Collections.Generic

' Load existing PDF
Dim existingPdf = PdfDocument.FromFile("legacy-document.pdf")

' Add document structure and metadata
existingPdf.Metadata.Title = "Converted Accessible Document"
existingPdf.Metadata.Language = "en-US"

' Extract and re-render for better structure (if original lacks tags)
Dim extractedHtml As String = existingPdf.ExtractHtmlString()

' Create new accessible version
Dim renderer = New ChromePdfRenderer() With {
    .RenderingOptions = New ChromePdfRenderOptions() With {
        .MarginTop = 40,
        .MarginBottom = 40,
        .EnableJavaScript = True,
        .RenderDelay = 500 ' Allow time for JavaScript rendering
    }
}

' Re-render with proper structure
Dim accessiblePdf = renderer.RenderHtmlAsPdf(extractedHtml)
accessiblePdf.SaveAsPdfUA("converted-accessible.pdf")
$vbLabelText   $csharpLabel

建立無障礙 PDF 時常見哪些問題?

導致 PDF 無法符合無障礙標準的常見問題:

  1. 缺少替代文字:未附描述的圖片
  2. 閱讀順序錯誤:複雜的版面配置會干擾輔助技術
  3. 色彩對比不足:低對比度會降低可讀性
  4. 缺少語言宣告:螢幕閱讀器需要語言資訊
  5. 表格結構不當:表格缺少標題及 scope 屬性

IronPDF 透過保留語義 HTML 結構並自動產生正確的 PDF 標籤,協助避免這些問題。

如何獲得無障礙功能的支持?

如需改善無障礙功能的相關資訊,請聯絡我們的開發者支援團隊。 我們的工程團隊會根據開發者的回饋以及不斷演進的標準,積極強化功能。 針對以下項目提交詳細支援請求

  • 貴產業的特定無障礙要求
  • PDF/UA 驗證工具相關問題
  • 自訂標籤或結構需求
  • 與無障礙測試工具的整合

在聯絡支援服務之前,請確認您已具備:

  1. 已更新至 IronPDF 最新版本
  2. 已套用您的授權金鑰以啟用完整功能
  3. 已使用展示該問題的範例文件進行測試
  4. 彙整的錯誤訊息或驗證報告

何時應就無障礙功能聯繫支援服務?

遇到以下情況時請聯絡支援團隊:

  • 驗證失敗:PDF 檔案未能通過 PAC 3 或 Adobe 無障礙檢查工具的檢測
  • 螢幕閱讀器問題:輔助技術無法讀取文件
  • 合規考量:需就法規要求提供指引
  • 效能問題:大型可存取文件會引發問題
  • 特殊需求:超出標準合規性的獨特無障礙需求

未來計劃推出哪些無障礙功能?

IronPDF 的發展藍圖包含持續改善無障礙功能:

  • 強化對數學公式與科學記法的支援
  • 改進表單欄位處理,並優化標籤標示
  • 針對複雜資料關聯的高階表格標記功能
  • 自動生成無障礙報告
  • 與無障礙測試 API 整合
  • 支援新興的 PDF 2.0 輔助功能

請分享您的無障礙需求,以協助我們為未來的開發工作訂定優先順序。

常見問題

何謂第 508 條合規性,以及它對 PDF 文件為何重要?

《第 508 條》合規性是美國聯邦法規要求,旨在確保身心障礙者能夠存取數位內容。對於 PDF 檔案而言,這意味著必須具備適當的文件結構、圖片替代文字以及邏輯閱讀順序。IronPDF 透過其 SaveAsPdfUA() 方法自動處理這些要求,協助組織避免法律處罰,並確保其文件可供所有使用者存取。

如何建立符合《第 508 條》規範的無障礙 PDF/A 檔案?

using IronPDF 建立無障礙 PDF 文件非常簡單。您只需一行程式碼,即可將任何現有 PDF 轉換為符合《第 508 條》規範的檔案:IronPdf.PdfDocument.FromFile("input.pdf").SaveAsPdfUA("output-accessible.pdf")。此方法會自動加入所有必要的無障礙功能,包括正確的標籤、結構及元資料。

生成 PDF 時會自動包含哪些無障礙功能?

IronPDF 會自動包含關鍵的無障礙功能,例如確保正確閱讀順序的標記內容結構、圖片的替代文字、正確的標題層級(H1、H2、H3)、螢幕閱讀器的語言設定、邏輯閱讀順序,以及適當的對比度。這些功能是透過 Google Chromium 的渲染引擎實現的,而 IronPDF 正是利用該引擎來生成 PDF 檔案。

什麼是 PDF/UA,它與無障礙 PDF 有何關聯?

PDF/UA(通用無障礙)是無障礙 PDF 文件的國際標準。它定義了 PDF 文件與螢幕閱讀器等輔助技術相容的技術要求。IronPDF 的 SaveAsPdfUA() 方法會自動產生符合 PDF/UA 標準的 PDF 文件,確保您的文件同時符合國際無障礙準則與《第 508 條》的要求。

若未建立無障礙 PDF 檔案,會面臨哪些商業風險?

若未遵守無障礙標準,可能導致嚴重後果,包括根據《美國殘疾人法案》(ADA)面臨法律處罰、喪失聯邦合約、排除約 20% 的殘障人口,以及損害品牌聲譽。IronPDF 能自動確保您的 PDF 文件符合無障礙要求,無需具備 PDF/UA 規格的深入技術知識,從而協助降低這些風險。

該函式庫如何自動處理複雜的無障礙需求?

IronPDF 採用 Google Chromium 的 HTML 渲染引擎,繼承了 Google 廣泛的無障礙功能改進。當您使用 SaveAsPdfUA() 方法時,該函式庫會自動處理諸如正確的文件標籤、元資料插入、閱讀順序設定及結構層級等複雜需求——開發人員無需理解 PDF 無障礙標準的繁複細節。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 18,918,602 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronPdf
執行範例 觀看您的 HTML 轉為 PDF。