Erstellen von Section 508-konformen und barrierefreien PDFs in C# mit IronPDF

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

<Die barrierefreie PDF-Generierung in C#.NET mit IronPDF erzeugt PDF/UA-konforme Dokumente, die die Anforderungen von Abschnitt 508 und WCAG 2.0 AA erfüllen. Die RenderHtmlAsPdfUA-Methode von IronPDF fügt automatisch die Struktur des getaggten Inhalts, die Lesereihenfolge, die Behandlung von alternativem Text und Barrierefreiheits-Metadaten zu den aus HTML generierten PDFs hinzu, so dass .NET-Entwickler Bildschirmleser-kompatible Dokumente für Regierungsbehörden, Gesundheitsdienstleister und alle Organisationen erstellen können, die mit Bundesverträgen arbeiten.

TL;DR: Quickstart Guide

Dieses Tutorial behandelt die Erstellung von Section 508-konformen und PDF/UA-zugänglichen Dokumenten in C# .NET, von der Generierung von Tagged-Strukturen bis hin zur Validierung von Formularen auf Zugänglichkeit und Konformität.

  • Für wen ist das?: .NET-Entwickler, die an Regierungsverträgen, Bundesprojekten oder Gesundheits-/Bildungssystemen arbeiten, bei denen PDF-Zugänglichkeit gesetzlich vorgeschrieben ist.
  • Was Sie erstellen werden: PDF/UA-Generierung aus HTML, Konvertierung bestehender PDF-Dateien in PDF/UA, Sprach-Tagging, getaggte Struktur aus semantischem HTML, Alt-Text für Bilder, barrierefreie Tabellen, Lesezeichen-Navigation und beschriftete Formularfelder.
  • Wo es läuft: .NET 10, .NET 8 LTS, .NET Framework 4.6.2+, und .NET Standard 2.0.
  • Wann sollten Sie diesen Ansatz verwenden: Wenn Ihre PDFs Section 508 Audits, PDF/UA (ISO 14289) Validierung oder WCAG 2.0 Level AA Anforderungen bestehen müssen.
  • Warum es technisch wichtig ist: Standard-PDFs fehlt die semantische Struktur. IronPDF erstellt aus wohlgeformtem HTML automatisch den Baum der getaggten Inhalte, den Screenreader benötigen.

Erstellen Sie mit nur wenigen Codezeilen ein PDF/UA-Dokument, das den Anforderungen von Section 508 entspricht:

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronPDF mit dem NuGet-Paketmanager.

    PM > Install-Package IronPdf

  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    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. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronPDF in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer

Nachdem Sie IronPDF gekauft oder sich für eine 30-tägige Testversion angemeldet haben, fügen Sie Ihren Lizenzschlüssel am Anfang Ihrer Anwendung hinzu.

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

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

Nutzen Sie IronPDF heute kostenlos in Ihrem Projekt.

Erster Schritt:
green arrow pointer
NuGet Mit NuGet installieren

PM >  Install-Package IronPdf

Schauen Sie sich IronPDF auf NuGet für eine schnelle Installation an. Mit über 10 Millionen Downloads transformiert es die PDF-Entwicklung mit C#. Sie können auch das DLL oder den Windows Installer herunterladen.

Inhaltsverzeichnis


Was ist die Einhaltung von Abschnitt 508 und warum ist sie für PDFs wichtig?

Abschnitt 508 bezieht sich auf eine 1998 vorgenommene Änderung des Rehabilitation Act von 1973. Dieses Bundesgesetz schreibt vor, dass die gesamte elektronische und Informationstechnologie, die von Bundesbehörden entwickelt, beschafft, gewartet oder verwendet wird, für Menschen mit Behinderungen zugänglich sein muss. Der Anwendungsbereich geht über die Behörden selbst hinaus. Jede Organisation, die Bundesmittel erhält, Verträge mit Bundesbehörden abschließt oder Technologiedienstleistungen für Regierungsbehörden erbringt, muss die Anforderungen ebenfalls erfüllen.

Die praktischen Implikationen sind erheblich. Ein Auftragnehmer, der Software für ein staatliches Gesundheitsprogramm entwickelt, kann nicht einfach PDF-Berichte liefern, die auf dem Bildschirm korrekt aussehen. Die Dokumente müssen für Bildschirmlesegeräte lesbar sein, mit der Tastatur navigiert werden können und so strukturiert sein, dass sie von unterstützenden Technologien interpretiert werden können. Werden diese Anforderungen nicht erfüllt, kann dies zur Ablehnung von Lieferungen, zum Verlust von Verträgen und zu möglichen rechtlichen Schritten führen.

PDFs stellen besondere Anforderungen an die Barrierefreiheit. Im Gegensatz zu HTML-Webseiten, die von Browsern mit eingebauten Barrierefreiheitsfunktionen wiedergegeben werden, sind PDF-Dateien in sich geschlossene Dokumente, die ihre eigenen Strukturinformationen enthalten müssen. Eine PDF-Datei, die visuell perfekt erscheint, kann für jemanden, der auf ein Bildschirmlesegerät angewiesen ist, völlig unbrauchbar sein, wenn die richtige Kennzeichnung, eine logische Lesereihenfolge oder alternativer Text für Bilder fehlt.

Die Folgen einer Nichteinhaltung gehen über das rechtliche Risiko hinaus. Unternehmen, die unzugängliche Dokumente erstellen, schließen einen großen Teil ihrer Zielgruppe aus. Nach Angaben der Weltgesundheitsorganisation sind etwa 16 % der Weltbevölkerung in irgendeiner Form von einer Behinderung betroffen. Für staatliche Dienstleistungen und staatlich finanzierte Programme ist der Ausschluss dieser Personen nicht nur eine schlechte Praxis, sondern auch ein Verstoß gegen die Bürgerrechte.

Was sind PDF/UA und WCAG, und wie hängen sie mit Abschnitt 508 zusammen?

Das Verständnis der Beziehung zwischen den verschiedenen Zugänglichkeitsstandards hilft zu klären, was Entwickler tatsächlich implementieren müssen. Bei der Diskussion über barrierefreie PDFs überschneiden sich drei wichtige Normen: Abschnitt 508, WCAG und PDF/UA.

Die Richtlinien für die Zugänglichkeit von Webinhalten, allgemein bekannt als WCAG, wurden vom World Wide Web Consortium entwickelt. Diese Richtlinien legen Grundsätze fest, um digitale Inhalte wahrnehmbar, bedienbar, verständlich und robust zu machen. Obwohl die WCAG in erster Linie für Webinhalte entwickelt wurden, gelten ihre Grundsätze auch für PDF-Dokumente. Die überarbeiteten Normen des Abschnitts 508, die 2017 aktualisiert wurden, enthalten direkt die WCAG 2.0 Stufe AA als technischen Maßstab für die Einhaltung. Das bedeutet, dass die Erfüllung der WCAG 2.0 AA-Anforderungen praktisch dasselbe ist wie die Erfüllung der Anforderungen von Abschnitt 508 für elektronische Dokumente.

PDF/UA, die Abkürzung für PDF/Universal Accessibility, ist ein ISO-Standard (ISO 14289), der speziell für barrierefreie PDF-Dokumente entwickelt wurde. Während WCAG beschreibt, was barrierefreie Inhalte leisten sollten, schreibt PDF/UA genau vor, wie PDF-Dateien intern strukturiert sein müssen, um diese Ziele zu erreichen. Die Norm definiert Anforderungen für getaggte Inhalte, Metadaten, Sprachspezifikationen, Alternativtext und Dutzende anderer technischer Elemente.

Betrachten Sie diese Standards als komplementäre Ebenen. Die WCAG legen die Ergebnisse fest, die Benutzer für die Zugänglichkeit benötigen. PDF/UA bietet die technische Spezifikation, um diese Ziele im PDF-Format zu erreichen. Section 508 bildet das gesetzliche Mandat, das die Einhaltung der WCAG vorschreibt, die wiederum auf PDF/UA als Implementierungspfad für PDF-Dokumente verweist.

Für die Entwickler ist der praktische Nutzen klar ersichtlich. Die Erstellung von PDF/UA-kompatiblen Dokumenten erfüllt die technischen Anforderungen der Section 508 Compliance. IronPDF bewältigt einen Großteil dieser Komplexität durch seine integrierten Funktionen für Barrierefreiheit, so dass Sie sich auf den Inhalt konzentrieren können, während die Bibliothek die zugrunde liegende PDF-Struktur verwaltet.

Wie konvertiere ich in C# ein vorhandenes PDF in das PDF/UA-Format?

Viele Unternehmen verfügen über Bibliotheken mit bestehenden PDF-Dokumenten, die erstellt wurden, bevor Barrierefreiheit zur Priorität wurde. Anstatt diese Dokumente von Grund auf neu zu erstellen, ermöglicht IronPDF die Konvertierung von Standard-PDFs in das PDF/UA-Format. Bei der Konvertierung werden die für die Kompatibilität mit unterstützenden Technologien erforderlichen Tag-Strukturen und Metadaten hinzugefügt.

Die Konvertierung verwendet die SaveAsPdfUA-Methode, die ein vorhandenes PdfDocument-Objekt in das PDF/UA-Format exportiert. Hier ist ein vollständiges Arbeitsbeispiel.

Eingabe-PDF

Für dieses Beispiel verwenden wir Beispieldokument.pdf, eine Standard-PDF-Datei ohne barrierefreie Funktionen, die ein typisches Legacy-Dokument darstellt, das konvertiert werden muss.

Der folgende Code lädt eine vorhandene PDF-Datei mit PdfDocument.FromFile() und ruft dann SaveAsPdfUA() auf, um eine neue Version mit PDF/UA-1-Konformität zu exportieren. IronPDF analysiert automatisch die Dokumentstruktur und fügt die erforderlichen getaggten Inhalte, Metadaten und Markierungen für die Barrierefreiheit hinzu.

: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

Die SaveAsPdfUA-Methode akzeptiert einen optionalen Parameter zur Angabe der natürlichen Sprache des Dokuments. Für englische Dokumente würden Sie den Aufruf wie folgt abändern.

Eingabe-PDF

In diesem Beispiel wird benefits-summary.pdf verwendet, ein Dokument über die Vorteile, das sowohl eine barrierefreie Konvertierung als auch eine explizite Sprachkennzeichnung für die korrekte Aussprache in Bildschirmlesegeräten benötigt.

Der Code lädt die PDF-Datei und übergibt NaturalLanguages.English als zweiten Parameter an SaveAsPdfUA(). Dadurch wird die Sprachkennung in die PDF-Struktur eingebettet und sichergestellt, dass Bildschirmlesegeräte die korrekten englischen Ausspracheregeln verwenden.

: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 erzeugt standardmäßig eine PDF/UA-1-Ausgabe, die die am weitesten verbreitete Version des Standards ist. Der Konvertierungsprozess analysiert die vorhandene PDF-Struktur und fügt geeignete Tags für Überschriften, Absätze, Listen und andere Inhaltselemente hinzu. Während die automatische Konvertierung für viele Dokumente gut funktioniert, kann bei komplexen Layouts oder gescannten Bildern ein zusätzlicher manueller Eingriff erforderlich sein, um eine vollständige Übereinstimmung zu erreichen.

Wie kann ich HTML direkt in ein barrierefreies PDF/UA-Dokument rendern?

Bei der Konvertierung vorhandener PDF-Dateien werden alte Inhalte berücksichtigt, aber neue Dokumente profitieren davon, dass sie von Anfang an barrierefrei erstellt werden. Die RenderHtmlAsPdfUA-Methode von IronPDF erzeugt standardkonforme Ausgabe direkt aus HTML-Eingabe. Dieser Ansatz nutzt die semantische Struktur, die bereits in wohlgeformtem HTML vorhanden ist, um gut strukturierte PDFs zu erstellen.

Das folgende Beispiel zeigt die Umwandlung eines HTML-Strings in eine barrierefreie PDF-Datei.

Der Code erstellt eine ChromePdfRenderer-Instanz und ruft RenderHtmlAsPdfUA() mit einem HTML-String auf, der semantische Elemente wie Überschriften und Absätze enthält. Der Renderer behält die HTML-Struktur als PDF-Tags bei, setzt den Dokumententitel über MetaData.Title und speichert die konforme Ausgabe. Das lang='en'-Attribut des HTML-Elements wird in die PDF-Datei übernommen, damit die Sprache von Screenreadern erkannt wird.

: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-Ausgabe

Der obige Code erzeugt ein semantisch strukturiertes PDF/UA-Dokument:

Beachten Sie, dass der HTML-Code ein lang-Attribut für das html-Element enthält. Dieses Attribut setzt sich in der PDF-Datei fort und hilft Bildschirmlesern, die Sprache des Dokuments zu erkennen. Die semantischen HTML-Elemente wie h1, h2 und p werden direkt in die entsprechenden PDF-Tags übersetzt, so dass eine logische Dokumentstruktur entsteht, in der assistive Technologien navigieren können.

Für die Wiedergabe von HTML-Dateien oder URLs anstelle von Strings bietet IronPDF entsprechende Methoden.

Der folgende Code zeigt zwei Ansätze: RenderHtmlFileAsPdf() lädt HTML aus einem lokalen Dateipfad, während RenderUrlAsPdf() Inhalte aus einer Web-URL abruft und rendert. Beide Methoden erzeugen Standard-PDFs, die dann mit SaveAsPdfUA() in das PDF/UA-Format konvertiert werden. Dieser zweistufige Ansatz eignet sich gut, wenn Sie vor der Konvertierung in Barrierefreiheit noch weitere Schritte durchführen müssen.

: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

Wie lege ich Dokument-Metadaten für die Einhaltung der Barrierefreiheit fest?

PDF-Metadaten dienen mehreren Zwecken der Barrierefreiheit. Assistive Technologien geben Dokumenteigenschaften wie Titel und Autor bekannt, damit die Benutzer erkennen können, was sie gerade lesen. Suchmaschinen und Dokumentenverwaltungssysteme verwenden Metadaten für die Indizierung und den Abruf. Compliance-Validatoren überprüfen, ob die erforderlichen Metadatenfelder ausgefüllt sind.

IronPDF stellt Metadaten über die MetaData-Eigenschaft von PdfDocument-Objekten bereit. Die folgenden Eigenschaften sind für die Barrierefreiheit am wichtigsten.

Eingabe-PDF

In diesem Beispiel geht es um enrollment-guide-draft.pdf, den Entwurf eines Leitfadens für die Anmeldung zu Sozialleistungen, der umfassende Metadaten für die Einhaltung der Barrierefreiheit und die Dokumentenverwaltung benötigt.

Der Code lädt eine vorhandene PDF-Datei und konfiguriert alle wichtigen Metadateneigenschaften: Titel (wird von Screenreadern angezeigt), Autor (identifiziert die Quelle), Betreff (kurze Beschreibung), Schlüsselwörter (für die Durchsuchbarkeit), Ersteller (ursprüngliche Anwendung) und Datumsstempel. Schließlich exportiert SaveAsPdfUA() das Dokument sowohl mit den Metadaten als auch mit der PDF/UA-Zugänglichkeitsstruktur.

: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

Die Eigenschaft Titel verdient besondere Aufmerksamkeit. PDF-Viewer können entweder den Dateinamen oder den Dokumententitel in ihrer Titelleiste und ihren Registerkarten anzeigen. Aus Gründen der Barrierefreiheit sollte der Titel des Dokuments angezeigt werden, da er einen sinnvollen Kontext darstellt. Ein Titel wie "Employee Benefits Enrollment Guide 2024" ist viel nützlicher als ein Dateiname wie "doc_final_v3_revised.pdf".

Wenn Sie neue PDF-Dateien aus HTML erstellen, können Sie vor dem Speichern Metadaten festlegen.

Der Code rendert HTML mithilfe von RenderHtmlAsPdfUA() direkt in das PDF/UA-Format und konfiguriert dann alle Metadateneigenschaften des resultierenden PdfDocument-Objekts, bevor er SaveAs() aufruft. Dieser Ansatz bettet die Struktur der Barrierefreiheit und die Metadaten in einen einzigen Arbeitsablauf ein, der ideal für die Erstellung neuer konformer Dokumente ist.

: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

Wie lege ich die Dokumentsprache für Screenreader fest?

Die Sprachspezifikation ist eine grundlegende Voraussetzung für die Barrierefreiheit, die sich direkt auf die Art und Weise auswirkt, wie der Inhalt wiedergegeben wird. Wenn die assistive Technologie auf Text trifft, verwendet sie die angegebene Sprache, um die entsprechenden Ausspracheregeln, die Stimme und die Lesemuster auszuwählen. Ein Dokument ohne Sprachspezifikation zwingt die Software zum Raten, was oft zu einer verstümmelten oder unverständlichen Audioausgabe führt.

Um die PDF/UA-Konformität zu gewährleisten, muss das Dokument seine Primärsprache angeben. IronPDF handhabt dies über den Parameter für natürliche Sprache in der SaveAsPdfUA-Methode.

Der Code demonstriert zwei Sprachszenarien. Die erste Methode rendert englischen HTML-Inhalt und speichert ihn mit NaturalLanguages.English. Die zweite Methode behandelt spanische Inhalte und verwendet lang='es' im HTML und NaturalLanguages.Spanish im Speicheraufruf. Die Spracheinstellung stellt sicher, dass Screenreader die korrekten Ausspracheregeln für die Primärsprache des Dokuments anwenden.

: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 unterstützt zahlreiche Sprachen durch die NaturalLanguages-Aufzählung. Zu den gängigen Optionen gehören Englisch, Spanisch, Französisch, Deutsch, Portugiesisch, Chinesisch, Japanisch, Koreanisch und Arabisch, neben vielen anderen.

Bei Dokumenten, die mehrere Sprachen enthalten, sollte die primäre Sprache des Dokuments den vorherrschenden Inhalt widerspiegeln. Assistive Technologien kommen mit gelegentlichen fremdsprachlichen Ausdrücken recht gut zurecht, aber Dokumente mit umfangreichem Inhalt in mehreren Sprachen stellen komplexere Herausforderungen dar, die möglicherweise spezielle Ansätze erfordern.

Wie erstelle ich eine barrierefreie Tagged-PDF-Struktur aus HTML?

Die Struktur von Tagged PDF bildet das Rückgrat der Barrierefreiheit. Tags definieren die logische Organisation des Inhalts, unterscheiden Überschriften von Absätzen, identifizieren Listen und Listenelemente, kennzeichnen Tabellen und legen die Lesereihenfolge fest. Ohne korrektes Tagging können Hilfstechnologien den Benutzern die Dokumentstruktur nicht vermitteln.

Der effizienteste Weg, mit IronPDF gut getaggte PDFs zu erstellen, ist, mit semantischem HTML zu beginnen. Die Chromium-Rendering-Engine bewahrt die HTML-Struktur bei der Konvertierung in PDF und übersetzt HTML-Elemente in entsprechende PDF-Tags. Das Schreiben von gutem HTML ergibt automatisch eine gute PDF-Struktur.

Das folgende Beispiel veranschaulicht die korrekte semantische Markierung.

Der Code erstellt ein HTML-Dokument mit einer klaren Überschriftenhierarchie (h1 für den Haupttitel, h2 für Abschnitte, h3 für Unterabschnitte), ungeordneten Listen (ul/li) für Aufzählungspunkte und geordneten Listen (ol/li) für nummerierte Abfolgen. Die Methode RenderHtmlAsPdfUA() wandelt diese semantischen Elemente in entsprechende PDF-Tags um, die von unterstützenden Technologien angesteuert werden können.

: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-Ausgabe

Diese PDF-Datei behält die Überschriftenhierarchie und die Listenstruktur für die Navigation bei:

Beachten Sie die Überschriftenhierarchie in diesem Beispiel. Das Dokument hat ein einzelnes h1 für den Haupttitel, gefolgt von h2-Elementen für die Hauptabschnitte und h3-Elementen für die Unterabschnitte. Diese Hierarchie ist für die Zugänglichkeit unerlässlich. Benutzer von Hilfstechnologien navigieren häufig in Dokumenten, indem sie zwischen Überschriften hin- und herspringen, so dass eine logische Struktur es ihnen ermöglicht, den gewünschten Inhalt schnell zu finden.

Listen werden semantisch mit ul für ungeordnete Listen und ol für geordnete Listen behandelt. Jedes li-Element wird zu einem getaggten Listenelement in der PDF-Datei. Assistive Technologien kündigen Listen an, indem sie angeben, wie viele Elemente sie enthalten, und dann jedes Element der Reihe nach vorlesen.

Wie füge ich Alt-Text zu Bildern für die Kompatibilität mit Screen Reader hinzu?

Bilder stellen eine grundlegende Herausforderung für die Zugänglichkeit dar. Visuelle Inhalte können von blinden oder sehbehinderten Benutzern nicht wahrgenommen werden. Alternativer Text, auch Alt-Text genannt, bietet eine textliche Beschreibung, die anstelle des Bildes angezeigt werden kann.

Bei der Generierung von PDFs aus HTML wird das alt-Attribut von img-Elementen als alternativer Text in das PDF übernommen.

Der Code erstellt einen Umsatzbericht mit zwei Diagrammbildern. Jedes img-Element enthält ein detailliertes alt-Attribut, das die Daten des Diagramms und nicht nur seinen Typ beschreibt. Im Alt-Text werden zum Beispiel aktuelle Verkaufszahlen und regionale Vergleiche angegeben. Die RenderHtmlAsPdfUA()-Methode bettet diese Beschreibungen als alternativen Text in die PDF-Datei ein, so dass Bildschirmlesegeräte die gleichen Erkenntnisse vermitteln können, die sehende Benutzer beim Betrachten der Diagramme erhalten.

: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

Um einen effektiven Alt-Text zu schreiben, muss man verstehen, welche Informationen das Bild vermittelt. Bei Diagrammen und Grafiken sollte der Alt-Text die dargestellten Daten beschreiben und nicht nur angeben, dass ein Diagramm existiert. Der Ausdruck "Balkendiagramm" liefert keine nützlichen Informationen. Die Beschreibung "Balkendiagramm zum Vergleich der Q3-Verkäufe in vier Regionen, wobei der Westen mit 3,2 Millionen Dollar an der Spitze liegt" gibt Nutzern mit Sehbehinderungen denselben Einblick, den sehende Nutzer beim Betrachten des Diagramms erhalten.

Dekorative Bilder, die keinen informativen Zweck erfüllen, sollten leere Alt-Attribute haben. Dies signalisiert den Bildschirmlesern, dass das Bild übersprungen werden kann:

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

Wie kann ich barrierefreie Tabellen in PDF-Dokumenten erstellen?

Tabellen stellen komplexe Anforderungen an die Zugänglichkeit, da sie Beziehungen zwischen Daten in zwei Dimensionen kodieren. Ein sehender Benutzer kann visuell über die Zeilen und Spalten blättern, um zu verstehen, wie sich die Zellen auf ihre Überschriften beziehen. Für Benutzer, die auf unterstützende Technologien angewiesen sind, muss diese Beziehung explizit durch korrektes Markup definiert werden.

HTML liefert die Strukturelemente, die für barrierefreie Tabellen benötigt werden. Zu den Schlüsselelementen gehören th für Kopfzellen, td für Datenzellen und scope-Attribute, die verdeutlichen, ob sich Kopfzeilen auf Zeilen oder Spalten beziehen.

Der Code erstellt eine Tabelle mit einem Mitarbeiterverzeichnis mit korrektem Accessibility Markup. Das caption-Element liefert einen Tabellentitel, der vor dem Inhalt angezeigt wird. Kopfzellen verwenden th mit scope="col", um anzuzeigen, dass sie für alle Zellen in der jeweiligen Spalte gelten. Die Elemente thead und tbody trennen strukturelle Abschnitte. IronPDFs RenderHtmlAsPdfUA() bewahrt diese Beziehungen in der PDF-Struktur und ermöglicht es Bildschirmlesern, Datenzellen mit ihren Spaltenüberschriften zu verknüpfen.

: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-Ausgabe

Die Ausgabe enthält eine korrekt strukturierte Tabelle mit Kopfverknüpfungen:

Das Scope-Attribut bei diesen Elementen ist entscheidend. Die Einstellung scope="col" zeigt an, dass die Überschrift für alle Zellen in dieser Spalte gilt. Für Tabellen, bei denen die erste Zelle jeder Zeile als Zeilenkopf dient, würden Sie stattdessen scope="row" verwenden. Komplexe Tabellen mit Zeilen- und Spaltenüberschriften erfordern beide Attribute.

Das caption-Element liefert einen Titel für die Tabelle, der vor dem Lesen des Tabelleninhalts angekündigt wird. Dadurch erhalten die Benutzer einen Überblick über die Daten, die sie gleich hören werden.

Bei Tabellen mit verschmolzenen Zellen oder unregelmäßigen Strukturen können zusätzliche Attribute wie Header und id die Datenzellen explizit mit den entsprechenden Headern verbinden. Einfache Tabellenstrukturen mit konsistenten Zeilen und Spalten sind jedoch aus Sicht der Barrierefreiheit vorzuziehen.

Wie füge ich Lesezeichen und Navigation für die Barrierefreiheit von Dokumenten hinzu?

Lesezeichen sind Navigationspunkte, die allen Benutzern helfen, sich in langen Dokumenten zurechtzufinden, aber sie sind besonders wertvoll für die Barrierefreiheit. Benutzer, die Seiten nicht visuell scannen können, sind auf Lesezeichen angewiesen, um interessante Abschnitte zu finden. Diese strukturierten Gliederungen ermöglichen es, direkt zu bestimmten Inhalten zu springen.

IronPDF unterstützt die programmatische Erstellung von hierarchischen Lesezeichenstrukturen.

Der Code rendert ein Mitarbeiterhandbuch mit mehreren Kapiteln und fügt dann programmatisch eine Lesezeichenhierarchie mithilfe der Sammlung Bookmarks hinzu. Lesezeichen auf oberster Ebene verweisen über AddBookMarkAtEnd() mit einem Seitenindex auf Kapitelanfangsseiten. Untergeordnete Lesezeichen für Unterabschnitte werden über die Children-Eigenschaft der übergeordneten Seite hinzugefügt, wodurch ein verschachtelter Navigationsbaum entsteht. Der Parameter für den Seitenindex ist nullbasiert, sodass Seite 0 die erste Seite ist.

: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-Ausgabe

Die generierte PDF-Datei enthält ein navigierbares Lesezeichenfeld für den schnellen Zugriff auf einzelne Abschnitte:

Der Seitenindex-Parameter in AddBookMarkAtEnd verwendet eine nullbasierte Indizierung, wobei Seite 0 die erste Seite des Dokuments ist. Verschachtelte Lesezeichen, die mit der Eigenschaft Children erstellt werden, bilden eine Hierarchie, die die Dokumentstruktur widerspiegelt.

Für HTML-Dokumente mit korrekter Überschriftenstruktur kann IronPDF automatisch ein Inhaltsverzeichnis mit verlinkter Navigation generieren.

Der Code ermöglicht die automatische TOC-Generierung, indem RenderingOptions.TableOfContents auf TableOfContentsTypes.WithPageNumbers gesetzt wird. Das HTML enthält einen Platzhalter div mit id="ironpdf-toc", in den das generierte Inhaltsverzeichnis eingefügt wird. IronPDF scannt die Überschriftenelemente (h1, h2 usw.), erstellt ein hierarchisches Inhaltsverzeichnis mit Seitenzahlen und fügt es an der Stelle des Platzhalters ein.

: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

Das div-Element mit id="ironpdf-toc" markiert den Ort, an dem das generierte Inhaltsverzeichnis erscheinen wird. IronPDF baut das Inhaltsverzeichnis aus Überschriftenelementen auf und erstellt anklickbare Links, die zu den einzelnen Abschnitten springen.

Wie erstelle ich barrierefreie PDF-Formulare mit korrekten Beschriftungen?

Interaktive Formulare erfordern besondere Aufmerksamkeit für die Barrierefreiheit. Jedes Eingabefeld muss eine programmatisch zugeordnete Bezeichnung haben, damit die erwartete Eingabe angekündigt werden kann. Visuelle Beschriftungen allein sind unzureichend, da ihnen die Verbindung fehlt, die assistive Technologien benötigen, um das Formular richtig zu interpretieren.

IronPDF rendert HTML-Formularelemente als interaktive PDF-Formularfelder. Die korrekte HTML-Formularauszeichnung wird in barrierefreie PDF-Formulare übersetzt.

Der Code ermöglicht die Erstellung von Formularfeldern durch Setzen von RenderingOptions.CreatePdfFormsFromHtml = true. Das HTML-Formular verwendet korrekte Zugänglichkeitsmuster: Jede Eingabe hat eine eindeutige id, die mit dem for-Attribut der Beschriftung übereinstimmt, Optionsfelder sind in einem fieldset mit einem beschreibenden legend gruppiert, und Kontrollkästchen haben zugehörige Beschriftungen. Die Methode RenderHtmlAsPdfUA() wandelt diese Elemente in interaktive PDF-Formularfelder um, wobei die Beschriftungen für Bildschirmleser erhalten bleiben.

: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-Ausgabe

Die generierte PDF-Datei enthält interaktive Formularfelder mit korrekten Beschriftungszuordnungen:

In diesem Beispielformular tauchen mehrere Zugänglichkeitsmuster auf. Jeder Input hat ein eindeutiges id-Attribut, das mit dem for-Attribut seines Labels übereinstimmt. Diese Verbindung ermöglicht es, dass "Full Name, edit text" angezeigt wird, wenn ein Benutzer mit der Tabulatortaste auf dieses Feld geht. Optionsfelder werden in einem Feldsatz mit einer Legende gruppiert, die den Zweck der Gruppe beschreibt. Die Beschriftung der Kontrollkästchen ist nach dem Eingabeelement positioniert und entspricht den Standardkonventionen für Formulare.

Die Option CreatePdfFormsFromHtml rendering option muss aktiviert sein, damit IronPDF interaktive Formularfelder anstelle statischer Darstellungen des Formulars erstellen kann.

Wie prüfe ich die PDF/UA-Konformität nach der Erstellung?

Die Erstellung von PDFs mit barrierefreien Funktionen ist nur ein Teil des Prozesses. Die Validierung bestätigt, dass die generierten Dokumente tatsächlich die technischen Anforderungen des PDF/UA-Standards erfüllen. Es gibt mehrere Tools für diesen Zweck, wobei veraPDF das bekannteste Open-Source-Validierungsprogramm ist.

IronPDF verfügt zwar nicht über eine integrierte Validierung, aber Sie können die Validierung mithilfe externer Tools in Ihren Workflow integrieren. Der veraPDF-Validator ist als Befehlszeilenanwendung verfügbar, die von C#-Code aus aufgerufen werden kann.

Der Code besteht aus zwei Teilen: Zunächst wird mit RenderHtmlAsPdfUA() ein Test-PDF mit konfigurierten Metadaten erzeugt. Zweitens zeigt die Methode ValidateWithVeraPdf(), wie man veraPDF von C# aus mit Process.Start() aufruft. Die Methode konfiguriert den Prozess so, dass veraPDF mit dem --flavour ua1-Flag für die PDF/UA-1-Validierung ausgeführt wird, erfasst die Ausgabe und gibt anhand des Exit-Codes einen booleschen Wert für bestanden/nicht bestanden zurück.

: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 enthält auch Funktionen zur Überprüfung der Barrierefreiheit. Die Zugänglichkeitsprüfung in Acrobat Pro führt umfassende Tests durch, darunter die Überprüfung der Lesereihenfolge, die Validierung alternativer Texte und die Zugänglichkeit von Formularfeldern. Acrobat Pro ist zwar nicht kostenlos, wird aber häufig in Unternehmensumgebungen eingesetzt und liefert detaillierte Berichte über Probleme mit der Barrierefreiheit.

Für automatisierte Testpipelines bietet das Tool PAC (PDF Accessibility Checker) der PDF/UA Foundation eine weitere Validierungsoption. PAC bietet sowohl eine grafische Oberfläche als auch Befehlszeilenfunktionen und eignet sich daher für die Integration in kontinuierliche Integrationsworkflows.

Was sind die besten Praktiken für die Pflege von barrierefreien PDFs in Unternehmensanwendungen?

Die Erstellung einzelner barrierefreier Dokumente ist einfach, wenn man die Techniken versteht. Die Aufrechterhaltung der Barrierefreiheit im gesamten Unternehmen erfordert systematische Ansätze und organisatorische Disziplin.

Die Standardisierung von Vorlagen verringert die Variabilität und gewährleistet Konsistenz. Die Erstellung einer Bibliothek mit bewährten HTML-Vorlagen mit semantischer Struktur, zugänglichen Formularmustern und konsistenter Gestaltung bietet Entwicklern eine Grundlage, die standardmäßig eine konforme Ausgabe erzeugt.

Der Code implementiert eine wiederverwendbare AccessibleDocumentService-Klasse, die PDF-Generierungsmuster kapselt. Der Konstruktor initialisiert einen gemeinsamen ChromePdfRenderer mit aktivierter Formularerstellung. Öffentliche Methoden wie CreateReport() und CreateForm() akzeptieren Inhaltsparameter und wenden standardisierte HTML-Vorlagen mit einheitlichem Styling und semantischer Struktur an. Eine private ConfigureStandardMetadata()-Methode sorgt dafür, dass jedes Dokument die richtigen Informationen zu Titel, Autor, Ersteller und Datum erhält. Dieses Servicemuster sorgt für die Einhaltung der Barrierefreiheit in allen generierten Dokumenten.

: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

Automatisierte Tests sollten Teil Ihrer kontinuierlichen Integrationspipeline sein. Jeder Prozess, der PDFs generiert, sollte Validierungsschritte enthalten, die den Build fehlschlagen lassen, wenn die Anforderungen an die Barrierefreiheit nicht erfüllt sind. Dadurch wird verhindert, dass unzugängliche Dokumente in die Produktion gelangen.

Die Schulung der Mitarbeiter ist ebenso wichtig wie die technische Umsetzung. Die Autoren der Inhalte müssen verstehen, warum Barrierefreiheit wichtig ist und wie sich ihre Entscheidungen auf das Endergebnis auswirken. Wenn man den Autoren beibringt, Überschriften korrekt zu verwenden, aussagekräftige Bildbeschreibungen zu liefern und Tabellen gut zu strukturieren, erhält man besseres Ausgangsmaterial, das in konforme PDFs umgewandelt werden kann.

Die Versionskontrolle für Vorlagen und regelmäßige Zugänglichkeitsprüfungen tragen dazu bei, die Konformität im Laufe der Zeit aufrechtzuerhalten. Wenn sich die geschäftlichen Anforderungen weiterentwickeln und die Vorlagen geändert werden, wird durch regelmäßige Überprüfungen sichergestellt, dass die Änderungen nicht versehentlich Barrieren für die Barrierefreiheit eingeführt haben.

Die Dokumentation Ihres Zugänglichkeitskonzepts schafft institutionelles Wissen, das den Personalwechsel überdauert. Die Aufzeichnung, welche Standards Sie befolgen, welche Tools Sie für die Validierung verwenden und welche Abhilfemaßnahmen für identifizierte Probleme bestehen, hilft dabei, einheitliche Praktiken im gesamten Unternehmen aufrechtzuerhalten.

Barrierefreiheit ist keine einmalige Leistung, sondern eine ständige Verpflichtung. Standards entwickeln sich weiter, unterstützende Technologien werden verbessert, und die Bedürfnisse der Benutzer ändern sich. Unternehmen, die Barrierefreiheit in ihre Standardarbeitsabläufe einbauen, anstatt sie als nachträgliche Maßnahme zu behandeln, sind am besten in der Lage, sowohl aktuelle Anforderungen als auch zukünftige Erwartungen zu erfüllen.

Die in diesem Leitfaden behandelten Techniken bieten eine solide Grundlage für die Erstellung von Section 508-konformen PDFs mit IronPDF. Durch die Kombination von korrekter HTML-Struktur, geeigneten Metadaten, Navigationshilfen und Validierungstests können .NET-Entwickler Dokumente erstellen, die den rechtlichen Anforderungen entsprechen und gleichzeitig den Benutzern, die auf barrierefreie Inhalte angewiesen sind, einen echten Nutzen bieten.

Abschluss

IronPDF vereinfacht die Komplexität der PDF-Zugänglichkeitsstandards und ermöglicht es .NET-Entwicklern, sich auf den Inhalt zu konzentrieren, während die Bibliothek die zugrunde liegenden PDF/UA-Struktur-Anforderungen behandelt. Dieses Tutorial behandelt die Konvertierung vorhandener PDFs in das PDF/UA-Format, die direkte Umwandlung von HTML in barrierefreie PDFs, die Einstellung von Dokumentenmetadaten und Sprachspezifikationen für die Kompatibilität mit Screenreadern, erstellung von getaggten Dokumentstrukturen aus semantischem HTML, Erstellung von zugänglichen Formularen und Navigation mit Lesezeichen sowie Validierung der Konformität mit externen Tools wie veraPDF.

Wenn die Barrierefreiheit Teil eines umfassenderen Dokumentenlebenszyklus ist, passen diese Muster natürlich zu PDF/A-Archivierungskonformität für die Langzeitarchivierung und Batch-Verarbeitung für die Erstellung barrierefreier Dokumente in großem Maßstab in Behörden oder Gesundheitssystemen.

Bereit, loszulegen? Laden Sie IronPDF herunter und probieren Sie es mit einer kostenlosen Testversion aus. Dieselbe Bibliothek eignet sich für alles, von der Erstellung einzelner zugänglicher Dokumente bis hin zu unternehmensweiten PDF/UA-Compliance-Pipelines. Wenn Sie Fragen zur Umsetzung der Barrierefreiheit oder zu den Anforderungen von Section 508 haben, wenden Sie sich an unser technisches Supportteam.

Häufig gestellte Fragen

Was bedeutet die Einhaltung von Section 508 für PDFs?

Die Einhaltung von Section 508 stellt sicher, dass elektronische und Informationstechnologie, wie z. B. PDFs, für Menschen mit Behinderungen zugänglich sind. IronPDF hilft bei der Erstellung von PDFs, die diese Standards erfüllen, indem es Ihnen ermöglicht, Alt-Text hinzuzufügen, zugängliche Tabellen zu erstellen und vieles mehr.

Wie kann ich IronPDF für die Konvertierung vorhandener PDFs in PDF/UA verwenden?

IronPDF bietet Funktionen zur Konvertierung vorhandener PDFs in PDF/UA, um sicherzustellen, dass sie den Standards für Barrierefreiheit entsprechen. Dazu gehören das Hinzufügen der erforderlichen Metadaten und die Strukturierung der Elemente, um den Inhalt zugänglich zu machen.

Kann IronPDF beim Rendern von barrierefreiem HTML helfen?

IronPDF ist in der Lage, HTML-Inhalte barrierefrei und in Übereinstimmung mit den PDF/UA-Standards zu rendern, was die Erstellung barrierefreier Dokumente aus Webinhalten erleichtert.

Wie kann ich mit IronPDF Alt-Text zu Bildern in PDFs hinzufügen?

IronPDF ermöglicht das Hinzufügen von Alt-Text zu Bildern in PDFs, was für die Barrierefreiheit entscheidend ist. Mit dieser Funktion wird sichergestellt, dass Bilder für Benutzer, die auf Bildschirmlesegeräte angewiesen sind, beschrieben werden.

Welche Funktionen bietet IronPDF für die Erstellung barrierefreier Tabellen und Formulare?

IronPDF bietet Werkzeuge für die Erstellung strukturierter Tabellen und Formulare, die zugänglich sind und dazu beitragen, dass Daten und Eingabefelder für alle Benutzer navigierbar und verständlich sind.

Wie kann ich mit IronPDF überprüfen, ob meine PDF-Dateien den behördlichen Anforderungen entsprechen?

IronPDF enthält Validierungswerkzeuge, mit denen Sie überprüfen können, ob Ihre PDFs den Anforderungen von Section 508 und PDF/UA entsprechen. So können Sie sicherstellen, dass Ihre Dokumente die erforderlichen Zugänglichkeitsstandards erfüllen.

Ist es möglich, die Erstellung barrierefreier PDFs mit IronPDF zu automatisieren?

Ja, IronPDF kann in automatisierte Arbeitsabläufe integriert werden, um durchgängig barrierefreie PDFs zu erstellen und so den Prozess der Einhaltung von Standards zu optimieren.

Welche Programmiersprachen sind mit IronPDF für die Erstellung barrierefreier PDFs kompatibel?

IronPDF ist für C# konzipiert und ermöglicht es Entwicklern, barrierefreie PDFs direkt innerhalb des .NET Frameworks zu erstellen.

Gibt es Tutorien, um die Verwendung von IronPDF zu erlernen?

Ja, IronPDF bietet umfassende Tutorials und Dokumentationen, die Sie durch den Prozess der Erstellung barrierefreier PDFs und die effektive Nutzung aller Funktionen führen.

Kann IronPDF bei der Zugänglichkeit von mehrsprachigen PDF-Dateien helfen?

IronPDF unterstützt die Erstellung mehrsprachiger barrierefreier PDFs durch die Verarbeitung von Unicode-Text und -Sprachen und gewährleistet so die Barrierefreiheit von Dokumenten in verschiedenen Sprachen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 17,386,124 | Version: 2026.2 gerade veröffentlicht