如何使用 IronPDF 在 C# 中创建符合第 508 条规定的无障碍 PDF。

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

使用 IronPDF 在 C# .NET 中生成 Accessible PDF 可生成 PDF/UA 兼容文档,开箱即可满足 Section 508WCAG 2.0 AA 要求。 IronPDF 的 RenderHtmlAsPdfUA 方法可自动将标记内容结构、阅读顺序、替代文本处理和可访问性元数据添加到从 HTML 生成的 PDF 中,让 .NET 开发人员为政府机构、医疗保健提供商和任何使用联邦合同的组织构建与屏幕阅读器兼容的文档。

as-heading:2(TL;DR:快速入门指南)

本教程涵盖在 C# .NET 中创建符合第 508 条的 PDF/UA 可访问文档,从标记结构生成到表单可访问性和合规性验证。

  • 适用对象:政府合同、联邦项目或医疗保健/教育系统中的 .NET 开发人员,这些项目对 PDF 的可访问性有法律要求。
  • 您将构建的内容: 从 HTML 生成 PDF/UA、将传统 PDF 转换为 PDF/UA、语言标记、从语义 HTML 生成标记结构、图像的 alt 文本、可访问的表格、书签导航和带标签的表单字段。
  • 运行环境: .NET 10、.NET 8 LTS、.NET Framework 4.6.2+ 和 .NET Standard 2.0。
  • 何时使用此方法:当您的 PDF 必须通过 508 节审核、PDF/UA (ISO 14289) 验证或 WCAG 2.0 AA 级要求时。
  • 技术上的原因:标准 PDF 缺乏语义结构。 IronPDF 可根据格式良好的 HTML 自动构建屏幕阅读器所需的标记内容树。

只需几行代码,即可创建符合第 508 条规定的 PDF/UA 文档:

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronPDF

    PM > Install-Package IronPdf

  2. 复制并运行这段代码。

    using IronPdf;
    
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdfUA("<html lang='en'><body><h1>Accessible PDF</h1></body></html>");
    pdf.SaveAs("accessible-document.pdf");
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronPDF,免费试用!
    arrow pointer

购买或注册 IronPDF 30 天试用版后,请在应用程序的开头添加许可证密钥。

IronPdf.License.LicenseKey = "KEY";
IronPdf.License.LicenseKey = "KEY";
Imports IronPdf

IronPdf.License.LicenseKey = "KEY"
$vbLabelText   $csharpLabel

今天在您的项目中使用 IronPDF,免费试用。

第一步:
green arrow pointer
NuGet 使用 NuGet 安装

PM >  Install-Package IronPdf

IronPDF 上查看 NuGet 快速安装。超过 1000 万次下载,它正以 C# 改变 PDF 开发。 您也可以下载 DLLWindows 安装程序

as-heading:2(目录)


什么是第 508 条合规性,为什么它对 PDF 很重要?

第 508 条是指 1973 年《康复法》的 1998 年修正案。该联邦法律要求联邦机构开发、采购、维护或使用的所有电子和信息技术都必须便于残疾人使用。 翻译范围超出政府部门本身。 任何接受联邦资助、与联邦机构签订合同或向政府实体提供技术服务的组织也必须遵守。

实际意义重大。 为联邦医疗保健计划开发软件的承包商不能简单地提供在屏幕上看起来正确的 PDF 报告。 这些文件必须能被屏幕阅读器阅读,能被键盘导航,并能以辅助技术能够解释的方式编排。 如果不能满足这些要求,可能会导致交付成果被拒绝、合同丢失以及潜在的法律诉讼。

PDF 给无障碍阅读带来了独特的挑战。 不同于 HTML 网页(浏览器通过内置的可访问性功能呈现 HTML 网页),PDF 文件是独立的文档,必须携带自己的结构信息。 如果 PDF 缺乏适当的标记、逻辑阅读顺序或图像的替代文本,那么对于依赖屏幕阅读器的人来说,看似完美的 PDF 可能完全无法使用。

不合规的后果不仅仅是法律风险。 如果组织编写的文档无法阅读,那么就会将很大一部分受众拒之门外。 据世界卫生组织统计,全球约有 16% 的人口患有某种形式的残疾。 对于政府服务和联邦政府资助的项目而言,将这些人排除在外不仅是一种不良做法,也违反了公民权利保护规定。

什么是 PDF/UA 和 WCAG,它们与第 508 条有何关系?

了解不同可访问性标准之间的关系有助于明确开发人员实际需要实施的内容。 在讨论无障碍 PDF 时,有三个关键标准相互交叉:第 508 条、WCAG 和 PDF/UA。

网页内容可访问性指南》(俗称 WCAG)源自万维网联盟。 这些准则确立了使数字内容可感知、可操作、可理解和稳健的原则。虽然 WCAG 主要针对网页内容设计,但其原则同样适用于 PDF 文档。 修订后的 508 条款标准于 2017 年更新,直接将 WCAG 2.0 AA 级作为合规的技术基准。 这意味着,满足 WCAG 2.0 AA 要求实际上等同于满足第 508 条对电子文档的要求。

PDF/UA 是 PDF/Universal Accessibility 的缩写,是专门为无障碍 PDF 文档设计的 ISO 标准 (ISO 14289)。 WCAG 描述了无障碍内容应达到的目标,而 PDF/UA 则明确规定了 PDF 文件必须如何在内部结构中实现这些目标。 该标准定义了对标记内容、元数据、语言规范、替代文本和其他数十种技术元素的要求。

将这些标准视为互补层。 WCAG 规定了用户所需的无障碍成果。 PDF/UA 提供了以 PDF 格式实现这些成果的技术规范。 508 条款规定了必须遵守 WCAG 的法律义务,而 WCAG 又将 PDF/UA 作为 PDF 文档的实施路径。

对于开发人员来说,实用性是显而易见的。 制作符合 PDF/UA 标准的文档可以满足 508 条款的技术要求。 IronPDF 通过其内置的可访问性功能处理了大部分复杂性,让您专注于内容,而库则管理底层 PDF 结构。

如何用 C# 将现有 PDF 转换为 PDF/UA 格式?

许多组织都有现有的 PDF 文档库,这些文档是在可访问性成为优先事项之前创建的。 IronPDF 允许您将标准 PDF 转换为 PDF/UA 格式,而不是从头开始重新创建这些文档。 转换过程中会添加必要的标记结构和元数据,以便与辅助技术兼容。

转换使用 SaveAsPdfUA 方法,该方法获取现有的 PdfDocument 对象并将其导出为 PDF/UA 格式。 下面是一个完整的工作示例。

输入PDF

在本示例中,我们使用了 sample-document.pdf 文件,这是一个不带辅助功能的标准 PDF 文件,代表了需要转换的典型传统文件。

下面的代码使用 PdfDocument.FromFile() 加载现有的 PDF 文件,然后调用 SaveAsPdfUA() 输出符合 PDF/UA-1 标准的新版本。 IronPDF 可自动分析文档结构,并添加所需的标记内容、元数据和可访问性标记。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/convert-to-pdfua.cs
using IronPdf;
using System;

string inputPath = "document.pdf";
string outputPath = "document-accessible.pdf";

// Load the existing PDF document
PdfDocument pdf = PdfDocument.FromFile(inputPath);

// Export as PDF/UA compliant document
// The method automatically adds required accessibility structure
pdf.SaveAsPdfUA(outputPath);

Console.WriteLine($"Successfully converted {inputPath} to PDF/UA format.");
Imports IronPdf
Imports System

Dim inputPath As String = "document.pdf"
Dim outputPath As String = "document-accessible.pdf"

' Load the existing PDF document
Dim pdf As PdfDocument = PdfDocument.FromFile(inputPath)

' Export as PDF/UA compliant document
' The method automatically adds required accessibility structure
pdf.SaveAsPdfUA(outputPath)

Console.WriteLine($"Successfully converted {inputPath} to PDF/UA format.")
$vbLabelText   $csharpLabel

SaveAsPdfUA 方法接受一个可选参数,用于指定文档的自然语言。 对于英文文档,您可以将调用方式修改如下。

输入PDF

本示例使用的是 benefits-summary.pdf 利益文档,该文档需要无障碍转换和明确的语言标记,以便屏幕阅读器正确发音。

代码加载 PDF,并将 NaturalLanguages.English 作为第二个参数传递给 SaveAsPdfUA() 。 这就在 PDF 结构中嵌入了语言标识符,确保屏幕阅读器使用正确的英语发音规则。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/convert-with-language.cs
using IronPdf;
using System;

string inputPath = "document.pdf";
string outputPath = "document-accessible.pdf";

PdfDocument pdf = PdfDocument.FromFile(inputPath);

// Language is specified via the lang attribute in the HTML source.
// The PDF/UA structure preserves the language for screen readers.
pdf.SaveAsPdfUA(outputPath);

Console.WriteLine("Conversion complete with language specification.");
Imports IronPdf
Imports System

Module Program
    Sub Main()
        Dim inputPath As String = "document.pdf"
        Dim outputPath As String = "document-accessible.pdf"

        Dim pdf As PdfDocument = PdfDocument.FromFile(inputPath)

        ' Language is specified via the lang attribute in the HTML source.
        ' The PDF/UA structure preserves the language for screen readers.
        pdf.SaveAsPdfUA(outputPath)

        Console.WriteLine("Conversion complete with language specification.")
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF 默认生成 PDF/UA-1 输出,这是广泛采用的标准版本。 转换过程会分析现有的 PDF 结构,并为标题、段落、列表和其他内容元素添加适当的标记。 虽然自动转换对许多文档都很有效,但复杂的布局或扫描图像可能需要额外的人工干预才能完全合规。

如何将 HTML 直接渲染为无障碍 PDF/UA 文档?

转换现有的 PDF 文件可以解决遗留内容的问题,但在创建新文件时,必须从一开始就考虑到文件的可访问性。 IronPDF 的 RenderHtmlAsPdfUA 方法可直接从 HTML 输入生成符合标准的输出。 这种方法利用格式良好的 HTML 中已有的语义结构来创建结构良好的 PDF。

下面的示例演示了如何将 HTML 字符串渲染为可访问的 PDF。

代码会创建一个 ChromePdfRenderer 实例,并调用 RenderHtmlAsPdfUA() 包含标题和段落等语义元素的 HTML 字符串。渲染器将 HTML 结构保留为 PDF 标记,通过 MetaData.Title 设置文档标题,并保存符合要求的输出。 HTML 元素上的 lang='en' 属性可用于 PDF 的屏幕阅读器语言检测。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/render-html-to-pdfua.cs
using IronPdf;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer();

string htmlContent = @"
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <meta charset='UTF-8'>
            <title>Quarterly Financial Report</title>
            <style>
                body { font-family: Arial, sans-serif; line-height: 1.6; }
                h1 { color: #333; }
                h2 { color: #555; margin-top: 20px; }
                p { margin-bottom: 15px; }
                table { border-collapse: collapse; width: 100%; margin: 20px 0; }
                th, td { border: 1px solid #ddd; padding: 12px; text-align: left; }
                th { background-color: #f4f4f4; }
            </style>
        </head>
        <body>
            <h1>Q4 2024 Financial Summary</h1>
            <p>This report provides an overview of financial performance for the fourth quarter.</p>

            <h2>Revenue Highlights</h2>
            <p>Total revenue increased by 12% compared to the previous quarter, driven primarily by expansion in the enterprise segment.</p>

            <h2>Expense Analysis</h2>
            <p>Operating expenses remained stable, with a slight reduction in administrative costs offset by increased investment in research and development.</p>
        </body>
        </html>";

// Render directly to PDF/UA format
PdfDocument pdf = renderer.RenderHtmlAsPdfUA(htmlContent);

// Set additional metadata for accessibility
pdf.MetaData.Title = "Q4 2024 Financial Summary";

pdf.SaveAs("financial-report-accessible.pdf");

Console.WriteLine("Accessible PDF created successfully.");
Imports IronPdf
Imports System

Dim renderer As New ChromePdfRenderer()

Dim htmlContent As String = "
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <meta charset='UTF-8'>
            <title>Quarterly Financial Report</title>
            <style>
                body { font-family: Arial, sans-serif; line-height: 1.6; }
                h1 { color: #333; }
                h2 { color: #555; margin-top: 20px; }
                p { margin-bottom: 15px; }
                table { border-collapse: collapse; width: 100%; margin: 20px 0; }
                th, td { border: 1px solid #ddd; padding: 12px; text-align: left; }
                th { background-color: #f4f4f4; }
            </style>
        </head>
        <body>
            <h1>Q4 2024 Financial Summary</h1>
            <p>This report provides an overview of financial performance for the fourth quarter.</p>

            <h2>Revenue Highlights</h2>
            <p>Total revenue increased by 12% compared to the previous quarter, driven primarily by expansion in the enterprise segment.</p>

            <h2>Expense Analysis</h2>
            <p>Operating expenses remained stable, with a slight reduction in administrative costs offset by increased investment in research and development.</p>
        </body>
        </html>"

' Render directly to PDF/UA format
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdfUA(htmlContent)

' Set additional metadata for accessibility
pdf.MetaData.Title = "Q4 2024 Financial Summary"

pdf.SaveAs("financial-report-accessible.pdf")

Console.WriteLine("Accessible PDF created successfully.")
$vbLabelText   $csharpLabel

输出 PDF 文件

上述代码可生成语义结构化的 PDF/UA 文档:

请注意,HTML 中的 html 元素包含一个 lang 属性。 这一属性贯穿到 PDF 中,帮助屏幕阅读器识别文档语言。 语义 HTML 元素(如 h1、h2 和 p)可直接翻译成适当的 PDF 标记,从而创建一个辅助技术可以浏览的逻辑文档结构。

对于渲染 HTML 文件URL 而非字符串,IronPDF 提供了相应的方法。

下面的代码展示了两种方法:RenderHtmlFileAsPdf() 从本地文件路径加载 HTML,而 RenderUrlAsPdf() 则从 Web URL 获取并渲染内容。 这两种方法都能生成标准 PDF,然后使用 SaveAsPdfUA() 转换为 PDF/UA 格式。 当您需要在无障碍转换之前进行额外处理时,这种两步走的方法非常有效。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/render-from-file-url.cs
using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render from an HTML file on disk
PdfDocument pdfFromFile = renderer.RenderHtmlFileAsPdf("report.html");

// Convert the rendered PDF to PDF/UA format
pdfFromFile.SaveAsPdfUA("report-accessible.pdf");

// Render from a web URL
PdfDocument pdfFromUrl = renderer.RenderUrlAsPdf("https://example.com");

// Convert to accessible format
pdfFromUrl.SaveAsPdfUA("webpage-accessible.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' Render from an HTML file on disk
Dim pdfFromFile As PdfDocument = renderer.RenderHtmlFileAsPdf("report.html")

' Convert the rendered PDF to PDF/UA format
pdfFromFile.SaveAsPdfUA("report-accessible.pdf")

' Render from a web URL
Dim pdfFromUrl As PdfDocument = renderer.RenderUrlAsPdf("https://example.com")

' Convert to accessible format
pdfFromUrl.SaveAsPdfUA("webpage-accessible.pdf")
$vbLabelText   $csharpLabel

如何设置文档元数据以符合无障碍标准?

PDF 元数据在可访问性方面有多种用途。 辅助技术会公布标题和作者等文档属性,以帮助用户识别他们正在阅读的内容。 搜索引擎和文档管理系统使用元数据进行索引和检索。 合规性验证器检查是否填入了所需的元数据字段。

IronPDF 通过 PdfDocument 对象的 MetaData 属性公开 元数据。 以下属性与可访问性最为相关。

输入PDF

本示例使用了 enrollment-guide-draft.pdf 文件,这是一份福利注册指南草案,需要全面的元数据以符合可访问性要求和进行文档管理。

代码加载现有的 PDF 并配置所有关键元数据属性:Title (由屏幕阅读器公布)、Author(指明来源)、Subject(简要说明)、Keywords(用于搜索)、Creator(源应用程序)和日期戳记。 最后,SaveAsPdfUA() 将文档与元数据和 PDF/UA 辅助结构一起导出。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/set-metadata.cs
using IronPdf;
using System;

PdfDocument pdf = PdfDocument.FromFile("document.pdf");

// Set the document title - critical for accessibility
// Screen readers announce this when opening the document
pdf.MetaData.Title = "Employee Benefits Enrollment Guide 2024";

// Author information helps identify document source
pdf.MetaData.Author = "Human Resources Department";

// Subject provides a brief description
pdf.MetaData.Subject = "Guide to selecting and enrolling in employee benefit programs";

// Keywords improve searchability
pdf.MetaData.Keywords = "benefits, enrollment, health insurance, retirement, HR";

// Creator identifies the originating application
pdf.MetaData.Creator = "Benefits Portal v3.2";

// Set document dates
pdf.MetaData.CreationDate = DateTime.Now;
pdf.MetaData.ModifiedDate = DateTime.Now;

// Save as PDF/UA with complete metadata
pdf.SaveAsPdfUA("document-accessible.pdf");

Console.WriteLine("Document metadata configured for accessibility.");
Imports IronPdf
Imports System

Dim pdf As PdfDocument = PdfDocument.FromFile("document.pdf")

' Set the document title - critical for accessibility
' Screen readers announce this when opening the document
pdf.MetaData.Title = "Employee Benefits Enrollment Guide 2024"

' Author information helps identify document source
pdf.MetaData.Author = "Human Resources Department"

' Subject provides a brief description
pdf.MetaData.Subject = "Guide to selecting and enrolling in employee benefit programs"

' Keywords improve searchability
pdf.MetaData.Keywords = "benefits, enrollment, health insurance, retirement, HR"

' Creator identifies the originating application
pdf.MetaData.Creator = "Benefits Portal v3.2"

' Set document dates
pdf.MetaData.CreationDate = DateTime.Now
pdf.MetaData.ModifiedDate = DateTime.Now

' Save as PDF/UA with complete metadata
pdf.SaveAsPdfUA("document-accessible.pdf")

Console.WriteLine("Document metadata configured for accessibility.")
$vbLabelText   $csharpLabel

标题属性值得特别注意。 PDF 浏览器可以在标题栏和标签页中显示文件名或文档标题。 为了便于查阅,应显示文档标题,因为它提供了有意义的上下文。 员工福利注册指南 2024》这样的标题要比 "doc_final_v3_revised.pdf "这样的文件名有用得多。

从 HTML 创建新的 PDF 时,可以在保存前设置元数据。

代码使用 RenderHtmlAsPdfUA() 将 HTML 直接渲染为 PDF/UA 格式,然后在生成的 PdfDocument 对象上配置全套元数据属性,最后调用 SaveAs() 。 这种方法在单一工作流程中嵌入了可访问性结构和元数据,非常适合生成新的合规文档。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/new-document-metadata.cs
using IronPdf;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer();

string html = @"
        <!DOCTYPE html>
        <html lang='en'>
        <head><title>Policy Document</title></head>
        <body>
            <h1>Information Security Policy</h1>
            <p>This document outlines security requirements for all employees.</p>
        </body>
        </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdfUA(html);

// Configure comprehensive metadata
pdf.MetaData.Title = "Information Security Policy";
pdf.MetaData.Author = "IT Security Team";
pdf.MetaData.Subject = "Corporate security requirements and guidelines";
pdf.MetaData.Keywords = "security, policy, compliance, data protection";
pdf.MetaData.Creator = "Policy Management System";
pdf.MetaData.CreationDate = DateTime.Now;
pdf.MetaData.ModifiedDate = DateTime.Now;

pdf.SaveAs("security-policy-accessible.pdf");
Imports IronPdf
Imports System

Dim renderer As New ChromePdfRenderer()

Dim html As String = "
        <!DOCTYPE html>
        <html lang='en'>
        <head><title>Policy Document</title></head>
        <body>
            <h1>Information Security Policy</h1>
            <p>This document outlines security requirements for all employees.</p>
        </body>
        </html>"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdfUA(html)

' Configure comprehensive metadata
pdf.MetaData.Title = "Information Security Policy"
pdf.MetaData.Author = "IT Security Team"
pdf.MetaData.Subject = "Corporate security requirements and guidelines"
pdf.MetaData.Keywords = "security, policy, compliance, data protection"
pdf.MetaData.Creator = "Policy Management System"
pdf.MetaData.CreationDate = DateTime.Now
pdf.MetaData.ModifiedDate = DateTime.Now

pdf.SaveAs("security-policy-accessible.pdf")
$vbLabelText   $csharpLabel

如何为屏幕阅读器指定文档语言?

语言规范是一项基本的无障碍要求,直接影响到内容的表达方式。 当辅助技术遇到文本时,它会使用指定的语言来选择合适的发音规则、语音和阅读模式。 没有语言规范的文档会迫使软件进行猜测,往往会导致乱码或无法理解的音频输出。

为符合 PDF/UA 标准,文件必须声明其主要语言。 IronPDF 通过 SaveAsPdfUA 方法中的自然语言参数来处理这个问题。

代码演示了两种语言场景。 第一种方法是渲染英文 HTML 内容,并以 NaturalLanguages.English 保存。 第二种方法处理西班牙语内容,在 HTML 中使用 lang='es' ,在保存调用中使用 NaturalLanguages.Spanish 。 语言设置可确保屏幕阅读器应用文档主要语言的正确发音规则。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/set-language.cs
using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

string htmlContent = @"
<!DOCTYPE html>
<html lang='en'>
<head><title>Annual Report</title></head>
<body>
    <h1>Annual Report 2024</h1>
    <p>This report summarizes organizational activities and financial performance.</p>
</body>
</html>";

PdfDocument pdf = renderer.RenderHtmlAsPdfUA(htmlContent);

// Language is set via lang='en' in the HTML; SaveAsPdfUA preserves it
pdf.SaveAsPdfUA("annual-report.pdf");

string htmlContentEs = @"
<!DOCTYPE html>
<html lang='es'>
<head><title>Informe Anual</title></head>
<body>
    <h1>Informe Anual 2024</h1>
    <p>Este informe resume las actividades organizacionales y el desempeño financiero.</p>
</body>
</html>";

PdfDocument pdfEs = renderer.RenderHtmlAsPdfUA(htmlContentEs);

// Language is set via lang='es' in the HTML; SaveAsPdfUA preserves it
pdfEs.SaveAsPdfUA("informe-anual.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

Dim htmlContent As String = "
<!DOCTYPE html>
<html lang='en'>
<head><title>Annual Report</title></head>
<body>
    <h1>Annual Report 2024</h1>
    <p>This report summarizes organizational activities and financial performance.</p>
</body>
</html>"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdfUA(htmlContent)

' Language is set via lang='en' in the HTML; SaveAsPdfUA preserves it
pdf.SaveAsPdfUA("annual-report.pdf")

Dim htmlContentEs As String = "
<!DOCTYPE html>
<html lang='es'>
<head><title>Informe Anual</title></head>
<body>
    <h1>Informe Anual 2024</h1>
    <p>Este informe resume las actividades organizacionales y el desempeño financiero.</p>
</body>
</html>"

Dim pdfEs As PdfDocument = renderer.RenderHtmlAsPdfUA(htmlContentEs)

' Language is set via lang='es' in the HTML; SaveAsPdfUA preserves it
pdfEs.SaveAsPdfUA("informe-anual.pdf")
$vbLabelText   $csharpLabel

IronPDF 通过 NaturalLanguages 枚举支持多种语言。 常见选项包括英语、西班牙语、法语、德语、葡萄牙语、中文、日语、韩语和阿拉伯语等。

对于包含多种语言的文件,主要文件语言应反映主要内容。 辅助技术可以很好地处理偶尔出现的外来短语,但包含多种语言大量内容的文档则会带来更复杂的挑战,可能需要专门的方法。

如何从 HTML 创建可访问的标记 PDF 结构?

标记 PDF 结构是可访问性的基础。 标签定义内容的逻辑组织,区分标题和段落,识别列表和列表项,标记表格,并确定阅读顺序。 如果没有正确的标记,辅助技术就无法向用户传达文档结构。

使用 IronPDF 创建标记良好的 PDF 的最有效方法是从语义 HTML 开始。 Chromium渲染引擎在转换为 PDF 时会保留 HTML 结构,将 HTML 元素翻译为相应的 PDF 标记。 写出好的 HTML 会自动生成好的 PDF 结构。

下面的例子展示了正确的语义标记。

代码将创建一个 HTML 文档,该文档具有清晰的标题层次结构(h1表示主标题,h2表示章节,h3表示小节),无序列表(ul/li)表示要点,有序列表(ol/li)表示编号序列。 RenderHtmlAsPdfUA() 方法可将这些语义元素转换为辅助技术可浏览的相应 PDF 标记。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/semantic-structure.cs
using IronPdf;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer();

string htmlContent = @"
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <title>Project Proposal</title>
            <style>
                body { font-family: Georgia, serif; line-height: 1.8; max-width: 800px; margin: 0 auto; padding: 20px; }
                h1 { font-size: 28px; border-bottom: 2px solid #333; padding-bottom: 10px; }
                h2 { font-size: 22px; color: #444; margin-top: 30px; }
                h3 { font-size: 18px; color: #666; }
                ul, ol { margin-left: 20px; }
                li { margin-bottom: 8px; }
            </style>
        </head>
        <body>
            <h1>Website Redesign Proposal</h1>

            <h2>Executive Summary</h2>
            <p>This proposal outlines a comprehensive redesign of the corporate website to improve user experience, accessibility, and conversion rates.</p>

            <h2>Project Objectives</h2>
            <p>The redesign aims to achieve several key goals:</p>
            <ul>
                <li>Improve mobile responsiveness across all device types</li>
                <li>Achieve WCAG 2.1 Level AA compliance for accessibility</li>
                <li>Reduce page load times by 40 percent</li>
                <li>Increase conversion rates through improved user flows</li>
            </ul>

            <h2>Implementation Timeline</h2>
            <p>The project will proceed in three phases:</p>
            <ol>
                <li>Discovery and planning: weeks one through four</li>
                <li>Design and development: weeks five through twelve</li>
                <li>Testing and launch: weeks thirteen through sixteen</li>
            </ol>

            <h3>Phase One Details</h3>
            <p>The discovery phase includes stakeholder interviews, competitive analysis, and technical assessment of the current platform.</p>

            <h3>Phase Two Details</h3>
            <p>Design and development will follow an agile methodology with two-week sprints and regular stakeholder reviews.</p>

            <h2>Budget Considerations</h2>
            <p>The proposed budget covers all aspects of the redesign including design, development, content migration, and quality assurance testing.</p>
        </body>
        </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdfUA(htmlContent);

pdf.MetaData.Title = "Website Redesign Proposal";
pdf.MetaData.Author = "Digital Strategy Team";

pdf.SaveAs("proposal-accessible.pdf");

Console.WriteLine("Structured document created with proper heading hierarchy.");
Imports IronPdf
Imports System

Dim renderer As New ChromePdfRenderer()

Dim htmlContent As String = "
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <title>Project Proposal</title>
            <style>
                body { font-family: Georgia, serif; line-height: 1.8; max-width: 800px; margin: 0 auto; padding: 20px; }
                h1 { font-size: 28px; border-bottom: 2px solid #333; padding-bottom: 10px; }
                h2 { font-size: 22px; color: #444; margin-top: 30px; }
                h3 { font-size: 18px; color: #666; }
                ul, ol { margin-left: 20px; }
                li { margin-bottom: 8px; }
            </style>
        </head>
        <body>
            <h1>Website Redesign Proposal</h1>

            <h2>Executive Summary</h2>
            <p>This proposal outlines a comprehensive redesign of the corporate website to improve user experience, accessibility, and conversion rates.</p>

            <h2>Project Objectives</h2>
            <p>The redesign aims to achieve several key goals:</p>
            <ul>
                <li>Improve mobile responsiveness across all device types</li>
                <li>Achieve WCAG 2.1 Level AA compliance for accessibility</li>
                <li>Reduce page load times by 40 percent</li>
                <li>Increase conversion rates through improved user flows</li>
            </ul>

            <h2>Implementation Timeline</h2>
            <p>The project will proceed in three phases:</p>
            <ol>
                <li>Discovery and planning: weeks one through four</li>
                <li>Design and development: weeks five through twelve</li>
                <li>Testing and launch: weeks thirteen through sixteen</li>
            </ol>

            <h3>Phase One Details</h3>
            <p>The discovery phase includes stakeholder interviews, competitive analysis, and technical assessment of the current platform.</p>

            <h3>Phase Two Details</h3>
            <p>Design and development will follow an agile methodology with two-week sprints and regular stakeholder reviews.</p>

            <h2>Budget Considerations</h2>
            <p>The proposed budget covers all aspects of the redesign including design, development, content migration, and quality assurance testing.</p>
        </body>
        </html>"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdfUA(htmlContent)

pdf.MetaData.Title = "Website Redesign Proposal"
pdf.MetaData.Author = "Digital Strategy Team"

pdf.SaveAs("proposal-accessible.pdf")

Console.WriteLine("Structured document created with proper heading hierarchy.")
$vbLabelText   $csharpLabel

输出 PDF 文件

本 PDF 保留了标题层次结构和导航列表结构:

请注意本例中的标题层次结构。 文件的主标题为单个 h1,其后的 h2 元素表示主要部分,h3 元素表示子部分。 这种层次结构对可访问性至关重要。 使用辅助技术的用户通常通过在标题之间跳转来浏览文档,因此合理的结构可以让他们快速找到所需的内容。

列表的语义处理为:ul 表示无序列表,ol 表示有序列表。 每个 li 元素都将成为 PDF 中的标记列表项。 辅助技术通过指示列表包含多少个条目,然后按顺序读取每个条目来公布列表。

如何为图像添加 Alt 文本以实现屏幕阅读器兼容性?

图像是一个基本的可访问性挑战。 盲人或低视力用户无法感知视觉内容。 替代文本通常称为 alt 文本,它提供了一种文本描述,可以代替图片进行公布。

从 HTML 生成 PDF 时,img 元素上的 alt 属性会作为替代文本传入 PDF。

代码会创建一份带有两个图表图像的销售报告。 每个 img 元素都包含一个详细的 alt 属性,用于描述图表的数据而不仅仅是其类型。 例如,alt 文本具体说明了实际销售数字和地区比较。 RenderHtmlAsPdfUA()方法将这些描述作为替代文本嵌入 PDF 中,使屏幕阅读器能够传达与视力正常的用户从查看图表中获得的相同见解。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/image-accessibility.cs
using IronPdf;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer();

string htmlContent = @"
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <title>Sales Performance Report</title>
            <style>
                body { font-family: Arial, sans-serif; padding: 20px; }
                .chart-container { margin: 20px 0; text-align: center; }
                img { max-width: 100%; height: auto; }
                .caption { font-style: italic; color: #666; margin-top: 10px; }
            </style>
        </head>
        <body>
            <h1>Q3 Sales Performance Report</h1>

            <h2>Regional Sales Comparison</h2>
            <p>The following chart illustrates sales performance across regions for the third quarter.</p>

            <div class='chart-container'>
                <img src='https://example.com/charts/regional-sales-q3.png'
                     alt='Bar chart comparing Q3 sales across four regions: Northeast at 2.4 million dollars, Southeast at 1.8 million dollars, Midwest at 2.1 million dollars, and West at 3.2 million dollars. The West region shows the highest performance with a 15 percent increase from Q2.'
                     width='600' height='400'>
                <p class='caption'>Figure 1: Regional Sales Comparison Q3 2024</p>
            </div>

            <h2>Monthly Trend Analysis</h2>
            <p>Sales showed consistent growth throughout the quarter with acceleration in September.</p>

            <div class='chart-container'>
                <img src='https://example.com/charts/monthly-trend.png'
                     alt='Line graph showing monthly sales from July through September. July sales were 2.1 million dollars, August increased to 2.4 million dollars, and September reached 2.9 million dollars, representing a 38 percent total increase over the quarter.'
                     width='600' height='300'>
                <p class='caption'>Figure 2: Monthly Sales Trend Q3 2024</p>
            </div>

            <h2>Key Findings</h2>
            <p>Analysis indicates strong momentum heading into Q4, particularly in the Western region where new product launches drove significant customer acquisition.</p>
        </body>
        </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdfUA(htmlContent);

pdf.MetaData.Title = "Q3 Sales Performance Report";
pdf.MetaData.Author = "Sales Analytics Team";

pdf.SaveAs("sales-report-accessible.pdf");

Console.WriteLine("Report created with accessible image descriptions.");
Imports IronPdf
Imports System

Dim renderer As New ChromePdfRenderer()

Dim htmlContent As String = "
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <title>Sales Performance Report</title>
            <style>
                body { font-family: Arial, sans-serif; padding: 20px; }
                .chart-container { margin: 20px 0; text-align: center; }
                img { max-width: 100%; height: auto; }
                .caption { font-style: italic; color: #666; margin-top: 10px; }
            </style>
        </head>
        <body>
            <h1>Q3 Sales Performance Report</h1>

            <h2>Regional Sales Comparison</h2>
            <p>The following chart illustrates sales performance across regions for the third quarter.</p>

            <div class='chart-container'>
                <img src='https://example.com/charts/regional-sales-q3.png'
                     alt='Bar chart comparing Q3 sales across four regions: Northeast at 2.4 million dollars, Southeast at 1.8 million dollars, Midwest at 2.1 million dollars, and West at 3.2 million dollars. The West region shows the highest performance with a 15 percent increase from Q2.'
                     width='600' height='400'>
                <p class='caption'>Figure 1: Regional Sales Comparison Q3 2024</p>
            </div>

            <h2>Monthly Trend Analysis</h2>
            <p>Sales showed consistent growth throughout the quarter with acceleration in September.</p>

            <div class='chart-container'>
                <img src='https://example.com/charts/monthly-trend.png'
                     alt='Line graph showing monthly sales from July through September. July sales were 2.1 million dollars, August increased to 2.4 million dollars, and September reached 2.9 million dollars, representing a 38 percent total increase over the quarter.'
                     width='600' height='300'>
                <p class='caption'>Figure 2: Monthly Sales Trend Q3 2024</p>
            </div>

            <h2>Key Findings</h2>
            <p>Analysis indicates strong momentum heading into Q4, particularly in the Western region where new product launches drove significant customer acquisition.</p>
        </body>
        </html>"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdfUA(htmlContent)

pdf.MetaData.Title = "Q3 Sales Performance Report"
pdf.MetaData.Author = "Sales Analytics Team"

pdf.SaveAs("sales-report-accessible.pdf")

Console.WriteLine("Report created with accessible image descriptions.")
$vbLabelText   $csharpLabel

撰写有效的 alt 文本需要了解图片传达了哪些信息。 对于图表和图形,alt 文本应描述所展示的数据,而不仅仅是说明图表的存在。 说 "条形图 "不会提供有用的信息。 描述 "条形图比较了四个地区的第三季度销售额,西部地区以 320 万美元居首",可以让视力有障碍的用户与健视用户一样通过查看图表获得洞察力。

没有信息作用的装饰图片应使用空 alt 属性。 在翻译过程中,译者必须使用".NET"、"Java"、"Python "或 "Node js "等术语,这就向屏幕阅读器发出了可以跳过图片的信号:

<img src="decorative-border.png" alt="">
<img src="decorative-border.png" alt="">
HTML

如何在 PDF 文档中构建无障碍表格?

表格在两个维度上编码了数据之间的关系,因此需要考虑复杂的可访问性问题。 视力正常的用户可以直观地横向扫描行和列,以了解单元格与其标题之间的关系。 依赖辅助技术的用户需要通过正确的标记明确定义这种关系。

HTML 提供了无障碍表格所需的结构元素。 关键元素包括表示标题单元格的 th、表示数据单元格的 td 以及说明标题适用于行还是列的 scope 属性。

代码创建了一个员工目录表,并使用了适当的可访问性标记。caption 元素在内容之前提供了一个表格标题。 标题单元格使用 thscope="col" 表示适用于其列中的所有单元格。 theadtbody 元素用于分隔结构部分。 IronPDF 的 RenderHtmlAsPdfUA() 保留了 PDF 结构中的这些关系,允许屏幕阅读器将数据单元格与其列标题相关联。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/accessible-table.cs
using IronPdf;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer();

string htmlContent = @"
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <title>Employee Directory</title>
            <style>
                body { font-family: Arial, sans-serif; padding: 20px; }
                table { border-collapse: collapse; width: 100%; margin: 20px 0; }
                th, td { border: 1px solid #ccc; padding: 12px; text-align: left; }
                th { background-color: #f0f0f0; font-weight: bold; }
                caption { font-size: 18px; font-weight: bold; margin-bottom: 10px; text-align: left; }
            </style>
        </head>
        <body>
            <h1>Department Staff Directory</h1>
            <p>Contact information for all department personnel as of January 2024.</p>

            <table>
                <caption>Engineering Department Staff</caption>
                <thead>
                    <tr>
                        <th scope='col'>Name</th>
                        <th scope='col'>Title</th>
                        <th scope='col'>Email</th>
                        <th scope='col'>Extension</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Sarah Chen</td>
                        <td>Senior Software Engineer</td>
                        <td>schen@company.com</td>
                        <td>4521</td>
                    </tr>
                    <tr>
                        <td>Marcus Williams</td>
                        <td>DevOps Engineer</td>
                        <td>mwilliams@company.com</td>
                        <td>4522</td>
                    </tr>
                    <tr>
                        <td>Jennifer Park</td>
                        <td>QA Lead</td>
                        <td>jpark@company.com</td>
                        <td>4523</td>
                    </tr>
                    <tr>
                        <td>Robert Gonzalez</td>
                        <td>Technical Writer</td>
                        <td>rgonzalez@company.com</td>
                        <td>4524</td>
                    </tr>
                </tbody>
            </table>

            <h2>Contact Guidelines</h2>
            <p>Please use email for non-urgent matters. Phone extensions connect to voicemail outside business hours.</p>
        </body>
        </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdfUA(htmlContent);

pdf.MetaData.Title = "Department Staff Directory";

pdf.SaveAs("directory-accessible.pdf");

Console.WriteLine("Directory created with accessible table structure.");
Imports IronPdf
Imports System

Dim renderer As New ChromePdfRenderer()

Dim htmlContent As String = "
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <title>Employee Directory</title>
            <style>
                body { font-family: Arial, sans-serif; padding: 20px; }
                table { border-collapse: collapse; width: 100%; margin: 20px 0; }
                th, td { border: 1px solid #ccc; padding: 12px; text-align: left; }
                th { background-color: #f0f0f0; font-weight: bold; }
                caption { font-size: 18px; font-weight: bold; margin-bottom: 10px; text-align: left; }
            </style>
        </head>
        <body>
            <h1>Department Staff Directory</h1>
            <p>Contact information for all department personnel as of January 2024.</p>

            <table>
                <caption>Engineering Department Staff</caption>
                <thead>
                    <tr>
                        <th scope='col'>Name</th>
                        <th scope='col'>Title</th>
                        <th scope='col'>Email</th>
                        <th scope='col'>Extension</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Sarah Chen</td>
                        <td>Senior Software Engineer</td>
                        <td>schen@company.com</td>
                        <td>4521</td>
                    </tr>
                    <tr>
                        <td>Marcus Williams</td>
                        <td>DevOps Engineer</td>
                        <td>mwilliams@company.com</td>
                        <td>4522</td>
                    </tr>
                    <tr>
                        <td>Jennifer Park</td>
                        <td>QA Lead</td>
                        <td>jpark@company.com</td>
                        <td>4523</td>
                    </tr>
                    <tr>
                        <td>Robert Gonzalez</td>
                        <td>Technical Writer</td>
                        <td>rgonzalez@company.com</td>
                        <td>4524</td>
                    </tr>
                </tbody>
            </table>

            <h2>Contact Guidelines</h2>
            <p>Please use email for non-urgent matters. Phone extensions connect to voicemail outside business hours.</p>
        </body>
        </html>"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdfUA(htmlContent)

pdf.MetaData.Title = "Department Staff Directory"

pdf.SaveAs("directory-accessible.pdf")

Console.WriteLine("Directory created with accessible table structure.")
$vbLabelText   $csharpLabel

输出 PDF 文件

输出结果包含一个结构正确的表格,并带有标题关联:

th 元素的 scope 属性至关重要。 设置 scope="col" 表示标题适用于该列的所有单元格。 对于每行第一个单元格作为行标题的表格,应使用 scope="row" 代替。 带有行标题和列标题的复杂表格需要两种属性。

标题元素为表格提供了一个标题,在阅读表格内容之前先公布标题。 这就为用户提供了他们即将听到的数据的上下文。

对于合并单元格或不规则结构的表格,标题和 id 等附加属性可以明确地将数据单元格连接到相应的标题。 不过,从可访问性的角度来看,最好使用行列一致的简单表格结构。

如何添加书签和导航以实现文档的可访问性?

书签提供了导航地标,可帮助所有用户浏览冗长的文档,但对于无障碍阅读尤其重要。 无法直观扫描页面的用户依靠书签来查找感兴趣的部分。这些结构化大纲允许直接跳转到特定内容。

IronPdf 支持以编程方式创建分层书签结构

代码渲染了包含多个章节的员工手册,然后使用 Bookmarks 集合以编程方式添加了书签层次结构。 顶层书签通过AddBookMarkAtEnd()指向带有页面索引的章节起始页。 子部分的子书签通过父部分的 Children 属性添加,从而创建嵌套导航树。 页面索引参数为零,因此第 0 页为第一页。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/bookmarks-navigation.cs
using IronPdf;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer();

string htmlContent = @"
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <title>Employee Handbook</title>
            <style>
                body { font-family: Georgia, serif; line-height: 1.8; padding: 40px; }
                h1 { page-break-before: always; }
                h1:first-of-type { page-break-before: avoid; }
                h2 { margin-top: 30px; }
            </style>
        </head>
        <body>
            <h1>Employee Handbook</h1>
            <p>Welcome to our organization. This handbook contains policies and procedures for all employees.</p>

            <h1>Chapter 1: Employment Policies</h1>
            <h2>Equal Opportunity</h2>
            <p>Our organization is committed to providing equal employment opportunities to all applicants and employees.</p>

            <h2>At-Will Employment</h2>
            <p>Employment with the organization is at-will unless otherwise specified in a written agreement.</p>

            <h1>Chapter 2: Compensation and Benefits</h1>
            <h2>Pay Periods</h2>
            <p>Employees are paid on a bi-weekly basis, with pay dates falling on alternating Fridays.</p>

            <h2>Health Insurance</h2>
            <p>Full-time employees are eligible for health insurance coverage beginning the first of the month following hire date.</p>

            <h2>Retirement Plans</h2>
            <p>The organization offers a 401(k) plan with employer matching contributions up to four percent of salary.</p>

            <h1>Chapter 3: Time Off Policies</h1>
            <h2>Vacation</h2>
            <p>Employees accrue vacation time based on length of service, starting at two weeks annually.</p>

            <h2>Sick Leave</h2>
            <p>Employees receive five days of paid sick leave per calendar year.</p>
        </body>
        </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdfUA(htmlContent);

// Add top-level bookmarks for main sections
var introBookmark = pdf.Bookmarks.AddBookMarkAtEnd("Introduction", 0);

var chapter1Bookmark = pdf.Bookmarks.AddBookMarkAtEnd("Chapter 1: Employment Policies", 1);
chapter1Bookmark.Children.AddBookMarkAtEnd("Equal Opportunity", 1);
chapter1Bookmark.Children.AddBookMarkAtEnd("At-Will Employment", 1);

var chapter2Bookmark = pdf.Bookmarks.AddBookMarkAtEnd("Chapter 2: Compensation and Benefits", 2);
chapter2Bookmark.Children.AddBookMarkAtEnd("Pay Periods", 2);
chapter2Bookmark.Children.AddBookMarkAtEnd("Health Insurance", 2);
chapter2Bookmark.Children.AddBookMarkAtEnd("Retirement Plans", 2);

var chapter3Bookmark = pdf.Bookmarks.AddBookMarkAtEnd("Chapter 3: Time Off Policies", 3);
chapter3Bookmark.Children.AddBookMarkAtEnd("Vacation", 3);
chapter3Bookmark.Children.AddBookMarkAtEnd("Sick Leave", 3);

pdf.MetaData.Title = "Employee Handbook";
pdf.MetaData.Author = "Human Resources";

pdf.SaveAs("handbook-with-bookmarks.pdf");

Console.WriteLine("Handbook created with navigational bookmarks.");
Imports IronPdf
Imports System

Dim renderer As New ChromePdfRenderer()

Dim htmlContent As String = "
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <title>Employee Handbook</title>
            <style>
                body { font-family: Georgia, serif; line-height: 1.8; padding: 40px; }
                h1 { page-break-before: always; }
                h1:first-of-type { page-break-before: avoid; }
                h2 { margin-top: 30px; }
            </style>
        </head>
        <body>
            <h1>Employee Handbook</h1>
            <p>Welcome to our organization. This handbook contains policies and procedures for all employees.</p>

            <h1>Chapter 1: Employment Policies</h1>
            <h2>Equal Opportunity</h2>
            <p>Our organization is committed to providing equal employment opportunities to all applicants and employees.</p>

            <h2>At-Will Employment</h2>
            <p>Employment with the organization is at-will unless otherwise specified in a written agreement.</p>

            <h1>Chapter 2: Compensation and Benefits</h1>
            <h2>Pay Periods</h2>
            <p>Employees are paid on a bi-weekly basis, with pay dates falling on alternating Fridays.</p>

            <h2>Health Insurance</h2>
            <p>Full-time employees are eligible for health insurance coverage beginning the first of the month following hire date.</p>

            <h2>Retirement Plans</h2>
            <p>The organization offers a 401(k) plan with employer matching contributions up to four percent of salary.</p>

            <h1>Chapter 3: Time Off Policies</h1>
            <h2>Vacation</h2>
            <p>Employees accrue vacation time based on length of service, starting at two weeks annually.</p>

            <h2>Sick Leave</h2>
            <p>Employees receive five days of paid sick leave per calendar year.</p>
        </body>
        </html>"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdfUA(htmlContent)

' Add top-level bookmarks for main sections
Dim introBookmark = pdf.Bookmarks.AddBookMarkAtEnd("Introduction", 0)

Dim chapter1Bookmark = pdf.Bookmarks.AddBookMarkAtEnd("Chapter 1: Employment Policies", 1)
chapter1Bookmark.Children.AddBookMarkAtEnd("Equal Opportunity", 1)
chapter1Bookmark.Children.AddBookMarkAtEnd("At-Will Employment", 1)

Dim chapter2Bookmark = pdf.Bookmarks.AddBookMarkAtEnd("Chapter 2: Compensation and Benefits", 2)
chapter2Bookmark.Children.AddBookMarkAtEnd("Pay Periods", 2)
chapter2Bookmark.Children.AddBookMarkAtEnd("Health Insurance", 2)
chapter2Bookmark.Children.AddBookMarkAtEnd("Retirement Plans", 2)

Dim chapter3Bookmark = pdf.Bookmarks.AddBookMarkAtEnd("Chapter 3: Time Off Policies", 3)
chapter3Bookmark.Children.AddBookMarkAtEnd("Vacation", 3)
chapter3Bookmark.Children.AddBookMarkAtEnd("Sick Leave", 3)

pdf.MetaData.Title = "Employee Handbook"
pdf.MetaData.Author = "Human Resources"

pdf.SaveAs("handbook-with-bookmarks.pdf")

Console.WriteLine("Handbook created with navigational bookmarks.")
$vbLabelText   $csharpLabel

输出 PDF 文件

生成的 PDF 包括一个可导航的书签面板,用于快速访问各部分:

AddBookMarkAtEnd 中的页面索引参数使用基于零的索引,其中第 0 页是文档的第一页。 通过 Children 属性创建的嵌套书签建立了一个反映文档结构的层次结构。

对于标题结构正确的 HTML 文档,IronPDF 可自动 生成包含链接导航的目录

代码可通过将 RenderingOptions.TableOfContents 设置为 TableOfContentsTypes.WithPageNumbers 来自动生成 TOC。 HTML 包括一个占位符 divid="ironpdf-toc" ,生成的目录将插入其中。 IronPDF 会扫描标题元素(h1h2 等),建立带页码的分层 TOC,并将其插入占位符位置。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/table-of-contents.cs
using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Enable automatic table of contents generation
renderer.RenderingOptions.TableOfContents = TableOfContentsTypes.WithPageNumbers;

string htmlContent = @"
        <!DOCTYPE html>
        <html lang='en'>
        <head><title>Technical Manual</title></head>
        <body>
            <div id='ironpdf-toc'></div>

            <h1>System Administration Guide</h1>
            <p>Comprehensive guide to system configuration and maintenance.</p>

            <h2>Installation</h2>
            <p>Step-by-step installation procedures for all supported platforms.</p>

            <h2>Configuration</h2>
            <p>Detailed configuration options and recommended settings.</p>

            <h2>Troubleshooting</h2>
            <p>Common issues and their resolutions.</p>
        </body>
        </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdfUA(htmlContent);

pdf.MetaData.Title = "System Administration Guide";

pdf.SaveAs("manual-with-toc.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' Enable automatic table of contents generation
renderer.RenderingOptions.TableOfContents = TableOfContentsTypes.WithPageNumbers

Dim htmlContent As String = "
        <!DOCTYPE html>
        <html lang='en'>
        <head><title>Technical Manual</title></head>
        <body>
            <div id='ironpdf-toc'></div>

            <h1>System Administration Guide</h1>
            <p>Comprehensive guide to system configuration and maintenance.</p>

            <h2>Installation</h2>
            <p>Step-by-step installation procedures for all supported platforms.</p>

            <h2>Configuration</h2>
            <p>Detailed configuration options and recommended settings.</p>

            <h2>Troubleshooting</h2>
            <p>Common issues and their resolutions.</p>
        </body>
        </html>"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdfUA(htmlContent)

pdf.MetaData.Title = "System Administration Guide"

pdf.SaveAs("manual-with-toc.pdf")
$vbLabelText   $csharpLabel

id="ironPdf-toc" 的 div 元素标志着生成的目录将出现在这里。 IronPDF 通过标题元素建立 TOC,创建可点击的链接跳转到每个部分。

如何创建带有正确标签的无障碍 PDF 表单?

需要特别注意交互式表单的可访问性。 每个输入字段都必须有一个与程序相关的标签,以便公布预期的输入内容。 仅有视觉标签是不够的,因为它们缺乏辅助技术正确解释表单所需的底层连接。

IronPdf 可将 HTML 表单元素渲染为 交互式 PDF 表单字段。 将正确的 HTML 表单标记翻译成可访问的 PDF 表单。

代码通过设置 RenderingOptions.CreatePdfFormsFromHtml = true 启用表单字段创建。 HTML 表单使用了正确的可访问性模式:每个输入都有一个唯一的 id 与其标签的 for 属性相匹配,单选按钮在 fieldset 中分组,并带有描述性的 legend ,复选框带有相关标签。 RenderHtmlAsPdfUA() 方法可将这些元素转换为交互式 PDF 表单字段,并为屏幕阅读器保留标签关联。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/accessible-form.cs
using IronPdf;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Enable form field creation from HTML forms
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string htmlContent = @"
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <title>Contact Request Form</title>
            <style>
                body { font-family: Arial, sans-serif; padding: 30px; max-width: 600px; }
                .form-group { margin-bottom: 20px; }
                label { display: block; margin-bottom: 5px; font-weight: bold; }
                input[type='text'], input[type='email'], textarea {
                    width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px;
                }
                textarea { height: 120px; resize: vertical; }
                .checkbox-group { margin: 15px 0; }
                .checkbox-group label { display: inline; font-weight: normal; margin-left: 8px; }
                fieldset { border: 1px solid #ddd; padding: 15px; margin-bottom: 20px; }
                legend { font-weight: bold; padding: 0 10px; }
            </style>
        </head>
        <body>
            <h1>Contact Request Form</h1>
            <p>Please complete all required fields marked with an asterisk.</p>

            <form>
                <div class='form-group'>
                    <label for='fullname'>Full Name *</label>
                    <input type='text' id='fullname' name='fullname' required>
                </div>

                <div class='form-group'>
                    <label for='email'>Email Address *</label>
                    <input type='email' id='email' name='email' required>
                </div>

                <div class='form-group'>
                    <label for='phone'>Phone Number</label>
                    <input type='text' id='phone' name='phone'>
                </div>

                <fieldset>
                    <legend>Preferred Contact Method</legend>
                    <div class='checkbox-group'>
                        <input type='radio' id='contact-email' name='contact-method' value='email'>
                        <label for='contact-email'>Email</label>
                    </div>
                    <div class='checkbox-group'>
                        <input type='radio' id='contact-phone' name='contact-method' value='phone'>
                        <label for='contact-phone'>Phone</label>
                    </div>
                </fieldset>

                <div class='form-group'>
                    <label for='message'>Message *</label>
                    <textarea id='message' name='message' required></textarea>
                </div>

                <div class='checkbox-group'>
                    <input type='checkbox' id='newsletter' name='newsletter'>
                    <label for='newsletter'>Subscribe to our newsletter</label>
                </div>
            </form>
        </body>
        </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdfUA(htmlContent);

pdf.MetaData.Title = "Contact Request Form";

pdf.SaveAs("contact-form-accessible.pdf");

Console.WriteLine("Accessible form created with proper field labels.");
Imports IronPdf
Imports System

Dim renderer As New ChromePdfRenderer()

' Enable form field creation from HTML forms
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

Dim htmlContent As String = "
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <title>Contact Request Form</title>
            <style>
                body { font-family: Arial, sans-serif; padding: 30px; max-width: 600px; }
                .form-group { margin-bottom: 20px; }
                label { display: block; margin-bottom: 5px; font-weight: bold; }
                input[type='text'], input[type='email'], textarea {
                    width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px;
                }
                textarea { height: 120px; resize: vertical; }
                .checkbox-group { margin: 15px 0; }
                .checkbox-group label { display: inline; font-weight: normal; margin-left: 8px; }
                fieldset { border: 1px solid #ddd; padding: 15px; margin-bottom: 20px; }
                legend { font-weight: bold; padding: 0 10px; }
            </style>
        </head>
        <body>
            <h1>Contact Request Form</h1>
            <p>Please complete all required fields marked with an asterisk.</p>

            <form>
                <div class='form-group'>
                    <label for='fullname'>Full Name *</label>
                    <input type='text' id='fullname' name='fullname' required>
                </div>

                <div class='form-group'>
                    <label for='email'>Email Address *</label>
                    <input type='email' id='email' name='email' required>
                </div>

                <div class='form-group'>
                    <label for='phone'>Phone Number</label>
                    <input type='text' id='phone' name='phone'>
                </div>

                <fieldset>
                    <legend>Preferred Contact Method</legend>
                    <div class='checkbox-group'>
                        <input type='radio' id='contact-email' name='contact-method' value='email'>
                        <label for='contact-email'>Email</label>
                    </div>
                    <div class='checkbox-group'>
                        <input type='radio' id='contact-phone' name='contact-method' value='phone'>
                        <label for='contact-phone'>Phone</label>
                    </div>
                </fieldset>

                <div class='form-group'>
                    <label for='message'>Message *</label>
                    <textarea id='message' name='message' required></textarea>
                </div>

                <div class='checkbox-group'>
                    <input type='checkbox' id='newsletter' name='newsletter'>
                    <label for='newsletter'>Subscribe to our newsletter</label>
                </div>
            </form>
        </body>
        </html>"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdfUA(htmlContent)

pdf.MetaData.Title = "Contact Request Form"

pdf.SaveAs("contact-form-accessible.pdf")

Console.WriteLine("Accessible form created with proper field labels.")
$vbLabelText   $csharpLabel

输出 PDF 文件

生成的 PDF 包括带有正确标签关联的交互式表单字段:

该表格示例中出现了几种可访问性模式。 每个输入都有一个唯一的 id 属性,该属性与其标签的 for 属性相匹配。 该连接允许在用户标签到该字段时显示 "全名,编辑文本"。 单选按钮在字段组中分组,并附有说明该组用途的图例。 复选框的标签位于输入元素之后,符合标准表单惯例。

必须启用 CreatePdfFormsFromHtml 渲染选项,IronPDF 才能创建交互式表单字段,而不是静态的表单表示。

生成 PDF/UA 后如何验证其合规性?

创建具有无障碍功能的 PDF 只是整个过程的一部分。 验证确认生成的文件确实符合 PDF/UA 标准的技术要求。 目前有几种工具可用于此目的,veraPDF 是最广为人知的开源验证器。

虽然 IronPDF 不包含内置验证功能,但您可以使用外部工具将验证功能集成到工作流程中。 veraPDF 校验器以命令行应用程序的形式提供,可从 C# 代码中调用。

代码演示了两个部分:首先,它使用 RenderHtmlAsPdfUA() 生成一个配置了元数据的测试 PDF。 其次,ValidateWithVeraPdf() 方法展示了如何使用 Process.Start() 从 C# 中调用 veraPDF。 该方法将配置进程运行 veraPDF,并使用 --flavour ua1 标志进行 PDF/UA-1 验证,捕获输出并根据退出代码返回表示通过/失败的布尔值。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/validation.cs
using IronPdf;
using System;
using System.Diagnostics;

// Create the accessible PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();

string htmlContent = @"
        <!DOCTYPE html>
        <html lang='en'>
        <head><title>Test Document</title></head>
        <body>
            <h1>Validation Test</h1>
            <p>This document will be validated for PDF/UA compliance.</p>
        </body>
        </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdfUA(htmlContent);
pdf.MetaData.Title = "Validation Test Document";

string outputPath = "test-document.pdf";
pdf.SaveAs(outputPath);

Console.WriteLine($"PDF created at: {outputPath}");
Console.WriteLine("Run veraPDF validation with:");
Console.WriteLine($"  verapdf --flavour ua1 {outputPath}");

// Validate using veraPDF
string verapdfPath = "verapdf";
ProcessStartInfo startInfo = new ProcessStartInfo
{
    FileName = verapdfPath,
    Arguments = $"--flavour ua1 \"{outputPath}\"",
    RedirectStandardOutput = true,
    RedirectStandardError = true,
    UseShellExecute = false,
    CreateNoWindow = true
};

using (Process process = Process.Start(startInfo))
{
    string output = process.StandardOutput.ReadToEnd();
    process.WaitForExit();

    // veraPDF returns 0 for valid documents
    bool isValid = process.ExitCode == 0;

    Console.WriteLine(isValid ? "Document passes PDF/UA validation." : "Document has validation issues.");
    Console.WriteLine(output);
}
Imports IronPdf
Imports System
Imports System.Diagnostics

' Create the accessible PDF
Dim renderer As New ChromePdfRenderer()

Dim htmlContent As String = "
        <!DOCTYPE html>
        <html lang='en'>
        <head><title>Test Document</title></head>
        <body>
            <h1>Validation Test</h1>
            <p>This document will be validated for PDF/UA compliance.</p>
        </body>
        </html>"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdfUA(htmlContent)
pdf.MetaData.Title = "Validation Test Document"

Dim outputPath As String = "test-document.pdf"
pdf.SaveAs(outputPath)

Console.WriteLine($"PDF created at: {outputPath}")
Console.WriteLine("Run veraPDF validation with:")
Console.WriteLine($"  verapdf --flavour ua1 {outputPath}")

' Validate using veraPDF
Dim verapdfPath As String = "verapdf"
Dim startInfo As New ProcessStartInfo With {
    .FileName = verapdfPath,
    .Arguments = $"--flavour ua1 ""{outputPath}""",
    .RedirectStandardOutput = True,
    .RedirectStandardError = True,
    .UseShellExecute = False,
    .CreateNoWindow = True
}

Using process As Process = Process.Start(startInfo)
    Dim output As String = process.StandardOutput.ReadToEnd()
    process.WaitForExit()

    ' veraPDF returns 0 for valid documents
    Dim isValid As Boolean = process.ExitCode = 0

    Console.WriteLine(If(isValid, "Document passes PDF/UA validation.", "Document has validation issues."))
    Console.WriteLine(output)
End Using
$vbLabelText   $csharpLabel

Adobe Acrobat Pro 还包括可访问性检查功能。 Acrobat Pro 中的辅助功能检查器可执行全面的测试,包括阅读顺序验证、替代文本验证和表单字段辅助功能。 Acrobat Pro 虽然不是免费的,但通常在企业环境中可用,并提供有关可访问性问题的详细报告。

对于自动测试管道,PDF/UA 基金会的 PAC(PDF 可访问性检查器)工具提供了另一种验证选项。 PAC 提供图形界面和命令行功能,适合集成到持续集成工作流中。

在企业应用程序中维护可访问 PDF 的最佳实践是什么?

一旦了解了相关技术,就可以直接构建单独的无障碍文档。 要在整个企业范围内保持可访问性,需要系统的方法和组织纪律。

模板标准化可减少可变性并确保一致性。 创建一个经认可的 HTML 模板库,该模板具有语义结构、可访问的表单模式和一致的样式,为开发人员提供了一个默认情况下可生成合规输出的基础。

代码实现了一个可重复使用的 AccessibleDocumentService 类,该类封装了 PDF 生成模式。 构造函数初始化一个启用了表单创建功能的共享 ChromePdfRendererCreateReport()CreateForm() 等公共方法接受内容参数,并应用具有一致样式和语义结构的标准化 HTML 模板。 一个私有的 ConfigureStandardMetadata() 方法可确保每个文档都能收到正确的标题、作者、创建者和日期信息。 这种服务模式确保所有生成的文档都符合可访问性要求。

:path=/static-assets/pdf/content-code-examples/tutorials/accessible-pdfs-government-compliance/enterprise-service.cs
using IronPdf;
using System;
using System.Web;

ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

string title = "Quarterly Report";
string author = "Finance Team";
string content = "<p>Financial performance overview for Q4 2024.</p>";

// Build report HTML from template
string reportHtml = $@"
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <meta charset='UTF-8'>
            <title>{HttpUtility.HtmlEncode(title)}</title>
            <style>
                body {{
                    font-family: 'Segoe UI', Arial, sans-serif;
                    line-height: 1.6;
                    max-width: 800px;
                    margin: 0 auto;
                    padding: 40px;
                    color: #333;
                }}
                h1 {{ font-size: 28px; color: #1a1a1a; border-bottom: 2px solid #0066cc; padding-bottom: 10px; }}
                h2 {{ font-size: 22px; color: #333; margin-top: 30px; }}
                p {{ margin-bottom: 15px; }}
                table {{ border-collapse: collapse; width: 100%; margin: 20px 0; }}
                th, td {{ border: 1px solid #ddd; padding: 12px; text-align: left; }}
                th {{ background-color: #f5f5f5; }}
            </style>
        </head>
        <body>
            <h1>{HttpUtility.HtmlEncode(title)}</h1>
            {content}
        </body>
        </html>";

PdfDocument pdf = renderer.RenderHtmlAsPdfUA(reportHtml);

// Configure standard metadata
pdf.MetaData.Title = title;
pdf.MetaData.Author = author;
pdf.MetaData.Creator = "Enterprise Document System";
pdf.MetaData.CreationDate = DateTime.Now;
pdf.MetaData.ModifiedDate = DateTime.Now;

pdf.SaveAs("quarterly-report-accessible.pdf");
Imports IronPdf
Imports System
Imports System.Web

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

Dim title As String = "Quarterly Report"
Dim author As String = "Finance Team"
Dim content As String = "<p>Financial performance overview for Q4 2024.</p>"

' Build report HTML from template
Dim reportHtml As String = $"
        <!DOCTYPE html>
        <html lang='en'>
        <head>
            <meta charset='UTF-8'>
            <title>{HttpUtility.HtmlEncode(title)}</title>
            <style>
                body {{
                    font-family: 'Segoe UI', Arial, sans-serif;
                    line-height: 1.6;
                    max-width: 800px;
                    margin: 0 auto;
                    padding: 40px;
                    color: #333;
                }}
                h1 {{ font-size: 28px; color: #1a1a1a; border-bottom: 2px solid #0066cc; padding-bottom: 10px; }}
                h2 {{ font-size: 22px; color: #333; margin-top: 30px; }}
                p {{ margin-bottom: 15px; }}
                table {{ border-collapse: collapse; width: 100%; margin: 20px 0; }}
                th, td {{ border: 1px solid #ddd; padding: 12px; text-align: left; }}
                th {{ background-color: #f5f5f5; }}
            </style>
        </head>
        <body>
            <h1>{HttpUtility.HtmlEncode(title)}</h1>
            {content}
        </body>
        </html>"

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdfUA(reportHtml)

' Configure standard metadata
pdf.MetaData.Title = title
pdf.MetaData.Author = author
pdf.MetaData.Creator = "Enterprise Document System"
pdf.MetaData.CreationDate = DateTime.Now
pdf.MetaData.ModifiedDate = DateTime.Now

pdf.SaveAs("quarterly-report-accessible.pdf")
$vbLabelText   $csharpLabel

自动测试应成为持续集成管道的一部分。任何生成 PDF 的流程都应包含验证步骤,当不符合可访问性要求时,构建会失败。 这样可以防止无法访问的文档进入生产阶段。

员工培训与技术实施同样重要。 内容作者需要了解可访问性的重要性以及他们的选择对最终输出的影响。 教会撰稿人正确使用标题层次、提供有意义的图片说明以及合理安排表格结构,可以生成更好的源材料,并转换成符合要求的 PDF 文件。

模板的版本控制和定期的可访问性审核有助于长期保持合规性。随着业务需求的发展和模板的修改,定期审核可确保修改不会无意中引入无障碍障碍。

对无障碍方法进行文档化,可以形成机构知识,并在人员更替时得以延续。 记录您遵循哪些标准、使用哪些工具进行验证,以及针对发现的问题有哪些补救程序,有助于在整个组织内保持一致的实践。

可访问性不是一次性的成果,而是一项持续的承诺。 标准在不断发展,辅助技术在不断进步,用户的需求也在不断变化。 将可访问性纳入标准工作流程而不是事后考虑的组织,最能满足当前的要求和未来的期望。

本指南中涉及的技术为使用 IronPDF 创建符合第 508 条的 PDF 打下了坚实的基础。 通过将正确的 HTML 结构、适当的元数据、导航辅助工具和验证测试结合起来,.NET 开发人员可以制作出符合法律要求的文档,同时为依赖无障碍内容的用户提供真正的服务。

结论

IronPDF简化了 PDF 可访问性标准的复杂性,使 .NET 开发人员可以专注于内容,而该库可以处理底层的 PDF/UA 结构要求。 本教程涉及将现有 PDF 转换为 PDF/UA 格式、将 HTML 直接渲染为可访问的 PDF、设置 文档元数据和语言规范以实现屏幕阅读器兼容性、从 语义 HTML 创建标记文档结构,构建 无障碍表单 和使用 书签 导航,以及使用 veraPDF 等外部工具验证合规性。

当可访问性成为更广泛的文档生命周期的一部分时,这些模式与用于长期保存的 PDF/A 存档合规性和用于在政府或医疗保健系统中大规模生成可访问文档的 批量处理自然地搭配在一起。

准备好开始构建了吗? 下载 IronPDF 并免费试用。 同一个库可以处理从单一无障碍文档生成到企业级 PDF/UA 合规性流水线的所有工作。 如果您有关于可访问性实施或 508 条款要求的问题,请联系我们的工程支持团队

常见问题解答

什么是 PDF 文件的第 508 条合规性?

第 508 条合规性确保残疾人可以访问电子和信息技术,如 PDF。IronPDF 允许您添加alt文本、构建可访问的表格等,从而帮助创建符合这些标准的 PDF。

如何使用 IronPDF 将现有 PDF 转换为 PDF/UA?

IronPDF 提供将现有 PDF 转换为 PDF/UA 的功能,确保它们符合可访问性标准。这包括添加必要的元数据和结构元素,使内容具有可访问性。

IronPdf 能否帮助渲染可访问的 HTML?

是的,IronPDF 可以渲染可访问且符合 PDF/UA 标准的 HTML 内容,从而使从网页内容创建可访问文档变得更加容易。

如何使用 IronPDF 为 PDF 中的图像添加 alt 文本?

IronPDF 允许您为 PDF 中的图片添加 alt 文本,这对于可访问性至关重要。该功能可确保为依赖屏幕阅读器的用户描述图像。

IronPDF 在构建无障碍表格和表单方面有哪些功能?

IronPdf 提供了用于创建结构化表格和表单的工具,可帮助确保数据和输入字段可供所有用户浏览和理解。

如何使用 IronPDF 验证我的 PDF 是否符合政府要求?

IronPdf 包括验证工具,可检查您的 PDF 是否符合 508 条款和 PDF/UA 要求,帮助您确保文档符合必要的可访问性标准。

是否可以使用 IronPDF 自动创建可访问的 PDF?

是的,IronPDF 可以集成到自动化工作流程中,以持续生成可访问的 PDF,简化满足合规标准的流程。

IronPDF 兼容哪些编程语言来创建可访问的 PDF?

IronPDF 设计用于 C#,允许开发人员直接在 .NET Framework 中创建可访问的 PDF。

是否有学习如何使用 IronPdf 的教程?

是的,IronPDF 提供全面的教程和文档,指导您创建可访问的 PDF 并有效利用其所有功能。

IronPDF 能否帮助实现多语言 PDF 的可访问性?

IronPDF 通过处理 Unicode 文本和语言,支持创建多语言可访问 PDF,确保不同语言文档的可访问性。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 17,386,124 | 版本: 2026.2 刚刚发布