IronPDF ile C#'ta Bölüm 508 Uyumlu ve Erişilebilir PDF'ler Nasıl Oluşturulur

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

IronPDF ile C# .NET ortamında Erişilebilir PDF oluşturma, Bölüm 508 ve WCAG 2.0 AA gereksinimlerini kutudan çıktığı gibi karşılayan PDF/UA uyumlu belgeler üretir. IronPDF'nin RenderHtmlAsPdfUA yöntemi, HTML'den üretilen PDF'lere etiketli içerik yapısı, okuma sırası, alternatif metin işleme ve erişilebilirlik meta verileri ekler, böylece .NET geliştiricileri devlet kurumları, sağlık hizmeti sağlayıcıları ve federal sözleşmelerle çalışmakta olan tüm kuruluşlar için ekran okuyucu uyumlu belgeler oluşturabilir.

Kısa Başlangıç Rehberi

Bu öğretici, C# .NET'te Bölüm 508 uyumlu ve PDF/UA erişilebilir belgeler oluşturmayı, etiketli yapı üretiminden form erişilebilirliğine ve uyumluluk doğrulamasına kadar kapsamaktadır.

  • Kimin için: PDF erişilebilirliğinin yasal olarak gerekli olduğu devlet sözleşmeleri, federal projeler veya sağlık/eğitim sistemlerinde çalışan .NET geliştiricileri için.
  • Ne oluşturacaksınız: HTML'den PDF/UA üretimi, eski PDF'lerin PDF/UA'ya dönüştürülmesi, dil etiketleme, semantik HTML'den etiketli yapı, resimler için alternatif metin, erişilebilir tablolar, yer imi navigasyonu ve etiketli form alanları.
  • Nerede çalışır: .NET 10, .NET 8 LTS, .NET Framework 4.6.2+ ve .NET Standard 2.0.
  • Bu yaklaşımı ne zaman kullanmalı: PDF'leriniz Bölüm 508 denetimlerinden, PDF/UA (ISO 14289) doğrulamasından veya WCAG 2.0 Seviye AA gereksinimlerinden geçmek zorunda olduğunda.
  • Teknik olarak neden önemlidir: Standart PDF'ler semantik yapıdan yoksundur. IronPDF, ekran okuyucuların ihtiyaç duyduğu etiketli içerik ağacını iyi biçimlendirilmiş HTML'den otomatik olarak oluşturur.

Section 508 uyumlu PDF/UA belgesini birkaç satır kodla oluşturun:

  1. NuGet Paket Yöneticisi ile https://www.nuget.org/packages/IronPdf yükleyin

    PM > Install-Package IronPdf
  2. Bu kod parçasını kopyalayıp çalıştırın.

    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. Canlı ortamınızda test etmek için dağıtın

    Bugün projenizde IronPDF kullanmaya başlayın ücretsiz deneme ile

    arrow pointer

IronPDF'nin 30 günlük deneme sürümünü satın aldıktan veya kaydolduktan sonra, uygulamanızın başlangıcında lisans anahtarınızı ekleyin.

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

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

!{--0100110001001001010000100101001001000001010100100101100101011111--}

NuGet NuGet ile Yükle

PM >  Install-Package IronPdf

IronPDF üzerine NuGet için hızlı bir kurulum kontrol edin. 10 milyondan fazla indirme ile C# ile PDF geliştirmesini dönüştürüyor. DLL veya Windows yükleyicisini de indirebilirsiniz.

İçindekiler


Bölüm 508 Uyumu Nedir ve PDF'ler İçin Neden Önemli?

Bölüm 508, 1973 Rehabilitasyon Yasası'na 1998 yılında yapılan bir değişiklikle ilgilidir. Bu federal yasa, federal kurumlar tarafından geliştirilen, satın alınan, bakım yapılan veya kullanılan tüm elektronik ve bilgi teknolojilerinin engelliler için erişilebilir olmasını gerektirir. Kapsam, yalnızca hükümet ofislerini aşar. Federal fon alan, federal kurumlarla sözleşmeli olan veya devlet kurumlarına teknoloji hizmeti sunan herhangi bir organizasyon da uyumlu olmalıdır.

Pratik sonuçları oldukça önemlidir. Federal bir sağlık programı için yazılım geliştiren bir müteahhit, sadece ekranda doğru görünen PDF raporları teslim edemez. Bu belgeler ekran okuyucular tarafından okunabilir, klavye ile gezinilebilir olmalı ve yardımcı teknolojilerin yorumlayabileceği şekilde yapılandırılmalıdır. Bu gereksinimlerin karşılanmaması durumunda reddedilen teslimatlar, kaybedilen sözleşmeler ve olası yasal işlemlerle yüz yüze kalınabilir.

PDF'ler erişilebilirlik açısından benzersiz zorluklar sunar. Tarayıcıların yerleşik erişilebilirlik özellikleriyle render edilen HTML web sayfalarının aksine, PDF dosyaları kendi yapısal bilgilerini taşıması gereken kapalı belgelerdir. Görsel olarak mükemmel görünen bir PDF, uygun etiketleme, mantıksal okuma sırası veya resimler için alternatif metin yoksa bir ekran okuyucuya bağlı biri için tamamen kullanılamaz olabilir.

Uyumsuzluğun sonuçları yasal riskin ötesine geçer. Erişilemeyen belgeler üreten kuruluşlar, izleyici kitlesinin önemli bir bölümünü fiilen dışlamakla kalmaz. Dünya Sağlık Örgütü'ne göre, dünya nüfusunun yaklaşık %16'sı bir tür engellilik yaşıyor. Devlet hizmetleri ve federal olarak finanse edilen programlar için, bu bireyleri dışlamak sadece kötü bir uygulama değil, aynı zamanda medeni haklar korumalarının ihlalidir.

PDF/UA ve WCAG Nedir ve Bölüm 508 ile Nasıl İlişkilidirler?

Farklı erişilebilirlik standartları arasındaki ilişkiyi anlamak, geliştiricilerin aslında neyi uygulamaları gerektiğini netleştirmeye yardımcı olur. Erişilebilir PDF'ler hakkında konuşurken üç ana standart kesişir: Section 508, WCAG ve PDF/UA.

Genellikle WCAG olarak bilinen Web İçeriği Erişilebilirlik Kılavuzları, World Wide Web Consortium tarafından oluşturulmuştur. Bu kılavuzlar, dijital içeriği algılanabilir, kullanılabilir, anlaşılır ve sağlam hale getirmek için ilkeler belirler. WCAG, öncelikle web içeriği için tasarlanmış olsa da, ilkeleri PDF belgelerine de eşit oranda uygulanır. 2017 yılında güncellenen revize edilmiş Section 508 standartları, uyum için teknik bir kıstas olarak doğrudan WCAG 2.0 Seviye AA'yı içerir. Bu, WCAG 2.0 AA gerekliliklerini karşılamanın, elektronik belgeler için Section 508 gerekliliklerini karşılamayla etkili bir şekilde aynı olduğu anlamına gelir.

PDF/UA, PDF/Evrensel Erişilebilirlik anlamına gelir ve erişilebilir PDF belgeleri için özel olarak tasarlanmış bir ISO standardıdır (ISO 14289). WCAG, erişilebilir içeriğin neyi başarması gerektiğini tanımlar, PDF/UA ise bu hedeflere ulaşmak için PDF dosyalarının içsel olarak nasıl yapılandırılması gerektiğini kesin olarak belirtir. Standart, etiketli içerik, meta veriler, dil belirtimi, alternatif metin ve düzinelerce diğer teknik unsur için gereklilikleri tanımlar.

Bu standartları tamamlayıcı katmanlar olarak düşünün. WCAG, kullanıcıların ihtiyaç duyduğu erişilebilirlik sonuçlarını belirler. PDF/UA, bu sonuçları PDF formatında elde etmek için teknik özellikleri sağlar. Section 508, WCAG ile uyumluluğu gerektiren yasal bir yükümlülük oluşturur ve daha sonra PDF belgeleri için uygulama yolu olarak PDF/UA'yı işaret eder.

Geliştiriciler için pratik çıkarım basittir. PDF/UA uyumlu belgeler oluşturmak, Section 508 uyumluluğunun teknik gerekliliklerini karşılar. IronPDF, yerleşik erişilebilirlik özellikleri aracılığıyla bu karmaşıklığın çoğunu ele alır ve kütüphane temel PDF yapısını yönetirken sizin içeriğe odaklanmanıza olanak tanır.

Mevcut Bir PDF'yi C# ile PDF/UA Formatına Nasıl Dönüştürürüm?

Birçok organizasyon, erişilebilirlik öncelik haline gelmeden önce oluşturulmuş PDF belgeleri kütüphanelerine sahiptir. Bu belgeleri sıfırdan yeniden oluşturmak yerine, IronPDF standart PDF'leri PDF/UA formatına dönüştürmenizi sağlar. Bu dönüşüm süreci, yardımcı teknolojilerle uyumlu olması için gerekli etiketli yapıyı ve meta verileri ekler.

Dönüşüm, mevcut bir PdfDocument nesnesi alıp PDF/UA formatında dışa aktaran SaveAsPdfUA metodunu kullanır. İşte tamamen çalışan bir örnek.

Girdi PDF

Bu örnek için, bir dönüşüm gerektiren tipik bir eski belgeyi temsil eden erişilebilirlik özellikleri bulunmayan standart bir PDF olan sample-document.pdf kullanıyoruz.

Aşağıdaki kod, SaveAsPdfUA() çağrısını gerçekleştirerek, mevcut bir PDF dosyasını PdfDocument.FromFile() kullanarak yükler ve PDF/UA-1 uyumluluğu ile yeni bir versiyona dönüştürür. IronPDF, belge yapısını otomatik olarak analiz eder ve gerekli etiketli içeriği, meta verileri ve erişilebilirlik işaretlerini ekler.

: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

lang özelliği ile orijinal olarak HTML'den render edilmiş belgeler için, dil spesifikasyonu PDF/UA yapısında korunur. Aşağıdaki örnek, dil etiketlemenin HTML kaynağından nasıl devam ettiğini göstermektedir.

Girdi PDF

Bu örnek, orijinal HTML kaynağından dilin korunduğu erişilebilirlik dönüşümüne ihtiyaç duyan bir avantajlar belgesi olan benefits-summary.pdf'i kullanır.

Kod PDF'yi yükler ve onu dönüştürmek için SaveAsPdfUA() çağrısını yapar. Orijinal HTML lang özelliklerinden gelen dil spesifikasyonu PDF/UA yapısında korunarak, ekran okuyucularının doğru telaffuz kurallarını kullanmasını sağlar.

: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 varsayılan olarak, geniş çapta benimsenmiş olan PDF/UA-1'li çıktılar üretir. Dönüşüm süreci, mevcut PDF yapısını analiz eder ve başlıklar, paragraflar, listeler ve diğer içerik unsurları için uygun etiketleri ekler. Otomatik dönüşüm birçok belge için iyi çalışırken, karmaşık düzenler veya taranmış görüntüler tam uyumluluk sağlamak için ek manuel müdahaleye ihtiyaç duyabilir.

HTML'yi Erişilebilir Bir PDF/UA Belgesine Nasıl Doğrudan Dönüştürebilirim?

Mevcut PDF'lerin dönüştürülmesi eski içerikle ilgilenirken, yeni belgeler baştan itibaren erişilebilirlik düşünülerek oluşturulmanın avantajını sağlar. IronPDF'nin RenderHtmlAsPdfUA metodu, HTML girdisinden doğrudan standartlara uyumlu çıktı üretir. Bu yaklaşım, iyi yapılandırılmış PDF'ler oluşturmak için zaten var olan anlamsal yapıyı kullanır.

Aşağıdaki örnek, bir HTML dizisini erişilebilir bir PDF'ye nasıl dönüştürdüğünü gösterir.

Kod, başlıklar ve paragraflar gibi anlamsal öğeler içeren bir HTML dizesiyle ChromePdfRenderer örneği oluşturur ve RenderHtmlAsPdfUA() çağrısını yapar. İşleyici, HTML yapısını PDF etiketleri olarak korur, belgenin başlığını MetaData.Title aracılığıyla ayarlar ve uyumlu çıktıyı kaydeder. HTML öğesindeki lang='en' özelliği, ekran okuyucu dil tespiti için PDF'ye taşınır.

: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

Çıktı PDF

Yukarıdaki kod, anlamsal olarak yapılandırılmış bir PDF/UA belgesi oluşturur:

HTML'nin html öğesinde bir lang özelliği içerdiğini gözlemleyin. Bu özellik, PDF'ye aktarılır ve ekran okuyucuların belge dilini tanımlamasına yardımcı olur. anlamsal HTML elemanları gibi h1, h2 ve p, mantıklı bir belge yapısı oluşturarak yardımcı teknolojilerin gezinebildiği uygun PDF etiketlerine doğrudan çevrilir.

HTML dosyalarının veya URL'lerin dizinler yerine işlendiği durumda, IronPDF uygun yöntemler sağlar.

Aşağıdaki kod, iki yaklaşımı gösteriyor: RenderHtmlFileAsPdf() yerel bir dosya yolundan HTML yüklerken, RenderUrlAsPdf() web URL'sinden içerik alır ve render eder. Her iki yöntem de, ardından SaveAsPdfUA() kullanılarak PDF/UA formatına dönüştürülen standart PDF'ler üretir. Bu iki aşamalı yaklaşım, dönüştürmeden önce ek işlem yapmanız gerektiğinde iyi çalışır.

: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

Erişilebilirlik Uyumluluğu için Belge Meta Verilerini Nasıl Ayarlayabilirim?

PDF meta verileri, erişilebilirlikte birden çok amaca hizmet eder. Yardımcı teknolojiler, belgelerin başlık ve yazar gibi özelliklerini duyurarak kullanıcıların ne okuduğunu tanımlar. Arama motorları ve belge yönetim sistemleri, meta verileri indeksleme ve bulmak için kullanır. Uyum denetleyicileri, gerekli meta veri alanlarının dolu olup olmadığını kontrol eder.

IronPDF, PdfDocument nesnelerinin MetaData özelliği aracılığıyla meta verileri sunar. Aşağıdaki özellikler, erişilebilirlik için en önemlidir.

Girdi PDF

Bu örnek, erişilebilirlik uyumluluğu ve belge yönetimi için kapsamlı meta verilerine ihtiyaç duyan bir taslak avantajlar kaydı kılavuzu olan enrollment-guide-draft.pdf kullanır.

Kod, mevcut bir PDF'yi yükler ve tüm önemli meta veri özelliklerini yapılandırır: Title (ekran okuyucular tarafından duyurulur), Author (kaynağı tanımlar), Subject (kısa tanım), Keywords (arama için), Creator (başlangıç uygulaması) ve tarih damgaları. Son olarak, SaveAsPdfUA() belgeleri hem meta veriler hem de PDF/UA erişilebilirlik yapısıyla dışa aktarır.

: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

Başlık özelliği özel bir önemi hak eder. PDF görüntüleyicileri, başlık çubuğunda ve sekmelerinde ya dosya adını ya da belge başlığını görüntüleyebilir. Erişilebilirlik için daha anlamlı bir bağlam sağladığı için belge başlığı görüntülenmelidir. "Çalışan Avantajları Kayıt Kılavuzu 2024" gibi bir başlık, "doc_final_v3_revised.pdf" gibi bir dosya adından çok daha kullanışlıdır.

HTML'den yeni PDF'ler oluştururken, kaydetmeden önce meta verileri ayarlayabilirsiniz.

Kod RenderHtmlAsPdfUA() kullanarak HTML'yi doğrudan PDF/UA formatına render eder, ardından SaveAs() çağrısından önce elde edilen PdfDocument nesnesindeki tam meta veri özelliklerini yapılandırır. Bu yaklaşım, erişilebilirlik yapısını ve meta verileri tek bir iş akışında birleştirir, yeni uyumlu belgeler oluşturmak için idealdir.

: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

Ekran Okuyucular İçin Belge Dilini Nasıl Belirlerim?

Dil belirtimi, içeriğin nasıl seslendirileceğini doğrudan etkileyen temel bir erişilebilirlik gerekliliğidir. Yardımcı teknoloji metinle karşılaştığında, uygun telaffuz kurallarını, sesi ve okuma kalıplarını seçmek için belirtilen dili kullanır. Dil belirtimi olmayan bir belge, yazılımı tahmin etmeye zorlar, bu da genellikle anlaşılmaz ya da bozuk ses çıkışıyla sonuçlanır.

PDF/UA uyumu için, belge, ana dilini belirtmek zorundadır. IronPDF, HTML kaynağındaki lang özelliği aracılığıyla bunu ele alır ve bu, PDF/UA çıktısında korunur.

Kod, iki dil senaryosunu gösterir. Birincisi, html öğesi üzerinde lang='en' ile İngilizce HTML içeriği render eder ve ikincisi, lang='es' ile İspanyolca içeriğini ele alır. RenderHtmlAsPdfUA() yöntemi HTML'deki dil özelliğini korur ve SaveAsPdfUA() bunu çıktı üzerinde muhafaza eder. Bu, ekran okuyucuların belgenin ana dili için doğru telaffuz kurallarını uygulamalarını garanti eder.

: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, standart HTML lang özelliği aracılığıyla dil spesifikasyonunu destekler. Yaygın dil kodları şunları içerir: en (İngilizce), es (İspanyolca), fr (Fransızca), de (Almanca), pt (Portekizce), zh (Çince), ja (Japonca), ko (Korece) ve ar (Arapça), pek çok diğerinin yanında.

Birden çok dil içeren belgeler için, ana belge dili baskın içeriği yansıtmalıdır. Yardımcı teknolojiler, arada geçen yabancı kelime öbeklerini makul bir şekilde ele alır, ancak çoklu dilde önemli içerik içeren belgeler, daha karmaşık zorluklar sunar ve özel yaklaşımlar gerektirebilir.

HTML'den Erişilebilir Etiketli PDF Yapısını Nasıl Oluştururum?

Etiketli PDF yapısı, erişilebilirliğin bel kemiğini oluşturur. Etiketler, içeriklerin mantıksal organizasyonunu tanımlar, başlıkları paragraflardan ayırt eder, liste ve liste öğelerini tanımlar, tabloları işaretler ve okuma sırasını belirler. Doğru etiketlemeler olmadan, yardımcı teknolojiler belge yapısını kullanıcılara iletemez.

IronPDF ile iyi etiketlenmiş PDF'ler oluşturmanın en verimli yolu, anlamsal HTML ile başlamaktır. Chromium dönüştürme motoru, PDF'ye dönüştürürken HTML yapısını korur, HTML bileşenlerini uygun PDF etiketlerine çevirir. İyi HTML yazmak, otomatik olarak iyi PDF yapısı oluşturur.

İşte doğru anlamsal işaretleme gösteren aşağıdaki örneği gözden geçirin.

Kod, açık bir başlık hiyerarşisi (h1 ana başlık için, h2 bölümler için, h3 alt bölümler için), madde işaretleri için (li) sırasız listeler ve numaralandırılmış diziler için (li) sıralı listeler içeren bir HTML belgesi oluşturur. RenderHtmlAsPdfUA() yöntemi, yardımcı teknolojilerin gezinebileceği karşılık gelen PDF etiketlerine bu anlamsal öğeleri dönüştürür.

: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

Çıktı PDF

Bu PDF, gezinme için başlık hiyerarşisini ve liste yapısını korur:

Bu örnekteki başlık hiyerarşisini gözlemleyin. Belgede ana başlık için tek bir h1, ana bölümler için h2 ögeleri ve alt bölümler için h3 ögeleri bulunur. Bu hiyerarşi, erişilebilirlik için esastır. Yardımcı teknoloji kullanıcıları genellikle belgelerde başlıklar arasında dolaşarak gezinirler, bu yüzden mantıklı bir yapı onlara ihtiyaç duydukları içeriği hızlıca bulma olanağı tanır.

Listeler, sırasız listeler için ul ve sıralı listeler için ol kullanılarak anlamsal işleme tabi tutulur. Her li unsuru, PDF'de etiketli bir liste öğesi olur. Yardımcı teknolojiler, listedeki öğe sayısını belirtip ardından her bir öğeyi sırayla okuyarak listeleri ilan eder.

Görüntüler İçin Ekran Okuyucu Uyumluluğunu Sağlamak İçin Alternatif Metin Nasıl Eklerim?

Görüntüler temel bir erişilebilirlik zorluğu sunar. Görsel içerik, görme engelli veya düşük görme kapasitesine sahip kullanıcılar tarafından algılanamaz. Alternatif metin, genellikle alt metin olarak adlandırılır, resim yerine duyurulabilecek bir metinsel açıklama sağlar.

HTML'den PDF oluştururken, img elemanlarındaki alt özelliği, alternatif metin olarak PDF'ye taşınır.

Kod, iki grafik resmi içeren bir satış raporu oluşturur. Her img öğesi, sadece türünü değil, grafik veri detayını açıklayan ayrıntılı bir alt özelliği içerir. Örneğin, alt metin gerçek satış rakamlarını ve bölgesel karşılaştırmaları belirtir. RenderHtmlAsPdfUA() yöntemi, bu açıklamaları PDF'ye alternatif metin olarak yerleştirir ve ekran okuyucuların grafiklerden görebilen kullanıcıların gördüğü bilgileri aktarmasını sağlar.

: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

Etkili alt metin yazmak, resmin hangi bilgiyi ilettiğini anlamayı gerektirir. Grafikler ve grafikler için alt metin, sadece bir grafik olduğunu belirtmek yerine sunulan verileri tanımlamalıdır. "Çubuk grafik" demek, yararlı bir bilgi sağlamaz. "Dört bölgede karşılaştırılan ve Batı'nın 3,2 milyon dolarla lider olduğu Q3 satışlarını karşılaştıran çubuk grafik" açıklaması, görsel engelli kullanıcılara, grafik gören kullanıcıların elde ettiği aynı içgörüyü verir.

Bilgilendirici amaç gütmeyen dekoratif resimlerin boş alt özelliklerine sahip olması gerekir. Bu, ekran okuyuculara resmin atlanabileceğini bildirir:

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

PDF Belgelerinde Erişilebilir Tabloları Nasıl Oluştururum?

Tablolar, iki boyutta veri ilişkilerini kodladıkları için karmaşık erişilebilirlik hususlarını sunar. Görsel kullanıcılar, satırları ve sütunları tarayarak hücrelerin başlıklarıyla nasıl ilişkili olduğunu anlayabilir. Yardımcı teknolojilere güvenen kullanıcılar bu ilişkinin doğru biçimlendirme yoluyla açıkça tanımlanmasına ihtiyaç duyar.

HTML, erişilebilir tablolar için gereken yapısal elemanları sağlar. Anahtar elemanlar arasında başlık hücreleri için th, veri hücreleri için td ve başlıkların satırlara mı yoksa sütunlara mı uygulandığını açıklayan scope özellikleri bulunur.

Kod, doğru erişilebilirlik işaretlemesine sahip bir çalışan dizini tablosu oluşturur. caption öğesi, içerikten önce duyurulan bir tablo başlığı sağlar. Başlık hücreleri, sütunlarındaki tüm hücrelere uygulandığını belirtmek için th ile scope="col" kullanır. thead ve tbody öğeleri yapısal bölümleri ayırır. IronPDF'nin RenderHtmlAsPdfUA() bu ilişkileri PDF yapısında koruyarak, ekran okuyucuların veri hücrelerini sütun başlıklarıyla ilişkilendirmesine olanak tanır.

: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

Çıktı PDF

Çıktı, başlık ilişkileriyle düzgün yapılandırılmış bir tablo içerir:

th elemanlarındaki scope özelliği kritiktir. scope="col" ayarlamak, başlığın o sütundaki tüm hücrelere uygulandığını belirtir. Her satırın ilk hücresinin satır başlığı olarak hizmet verdiği tablolar için, bunun yerine scope="row" kullanırsınız. Hem satır hem de sütun başlıklarına sahip karmaşık tablolar iki özelliği de gerektirir.

caption elementi, tablo içeriği okunmadan önce duyurulan bir başlık sağlar. Bu, kullanıcıların duymak üzere oldukları veri hakkında bağlam sunar.

Birleşik hücrelere veya düzensiz yapılara sahip tablolar için, başlıklar ve id gibi ek özellikler veri hücrelerini karşılık gelen başlıklarına açıkça bağlamak için kullanılabilir. Ancak, tutarlı satır ve sütunlara sahip basit tablo yapıları, erişilebilirlik açısından tercih edilir.

Belge Erişilebilirliği için Nasıl Yer İmleri ve Gezinme Eklerim?

Yer imleri, tüm kullanıcıların uzun belgelerde gezinmesine yardımcı olan navigasyon belirteçleri sağlar, özellikle erişilebilirlik için değerlidirler. Sayfaları görsel olarak tarayamayan kullanıcılar, ilgili bölümleri bulmak için yer imlerine güvenirler. Bu yapılandırılmış taslaklar, belirli içeriğe doğrudan geçiş yapılmasını sağlar.

IronPDF, programlı olarak hiyerarşik yer imleri yapıları oluşturmayı destekler.

Kod, çok sayıda bölümden oluşan bir çalışan el kitabı render eder ve daha sonra Bookmarks koleksiyonu kullanılarak bir yer imi hiyerarşisi ekler. Ana düzey yer imleri, AddBookMarkAtEnd() aracılığıyla bölüm başlangıç sayfalarına işaret eder ve bir sayfa dizini içerir. Alt bölümler için alt yer imleri, üst bölümün Children özelliği yoluyla eklenir, böylece iç içe geçmiş bir gezinme ağacı oluşturulur. Sayfa indeksi parametresi sıfır tabanlıdır, bu yüzden sayfa 0 ilk sayfadır.

: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

Çıktı PDF

Oluşturulan PDF, hızlı bölüm erişimi için gezinilebilir bir yer imi paneli içerir:

AddBookMarkAtEnd içindeki sayfa indeksi parametresi, belgenin ilk sayfası olan sayfa 0'dan başlattığı bir sıfır tabanlı indeksleme kullanır. Children özelliği aracılığıyla oluşturulan gömülü yer imleri, belge yapısını yansıtan bir hiyerarşi oluşturur.

Doğru başlık yapısına sahip HTML belgeleri için, IronPDF bağlantılı bir gezinme içeren bir içerik tablosu oluşturabilir.

Kod, RenderingOptions.TableOfContents'i TableOfContentsTypes.WithPageNumbers olarak ayarlayarak otomatik TOC oluşturulmasına olanak tanır. HTML, oluşturulan içindekiler tablosunun ekleneceği id="ironpdf-toc" ile bir yer tutucu div içerir. IronPDF, başlık öğelerini (h1, h2, vs.) tarar, sayfa numaraları ile hiyerarşik bir TOC oluşturur ve onu yer tutucu konumuna ekler.

: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" olan div elementi, oluşturulan içerik tablosunun görüneceği yeri belirler. IronPDF, başlık elemanlarından TOC oluşturur, her bölüme atlayan tıklanabilir bağlantılar oluşturur.

Doğru Etiketlerle Erişilebilir PDF Formları Nasıl Oluşturabilirim?

Etkileşimli formlar erişilebilirlik için özel bir dikkat gerektirir. Her giriş alanının, beklenen girişin duyurulabilmesi için programlı olarak ilişkilendirilmiş bir etiketi olmalıdır. Yalnızca görsel etiketler yeterli değildir, çünkü yardımcı teknolojilerin formu doğru bir şekilde yorumlaması için gerekli olan temel bağlantıdan yoksundurlar.

IronPDF, HTML form elemanlarını etkileşimli PDF formu alanları olarak işler. Uygun HTML form biçimlendirmesi, erişilebilir PDF formlarına dönüşür.

Kod, RenderingOptions.CreatePdfFormsFromHtml = true ayarlayarak form alanı oluşturulmasını sağlar. HTML formu, uygun erişilebilirlik modellerini kullanır: her girişin, etiketinin for özelliği ile eşleşen benzersiz bir id özniteliği vardır, radyo düğmeleri bir tanımlayıcı legend ile bir fieldset içinde gruplandırılır ve onay kutularının bağlı etiketleri bulunur. RenderHtmlAsPdfUA() yöntemi, bu öğeleri, etiket ilişkilerinin ekran okuyucular için korunduğu etkileşimli PDF form alanlarına dönüştürür.

: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

Çıktı PDF

Oluşturulan PDF, doğru etiket ilişkileriyle etkileşimli form alanları içerir:

Bu form örneğinde birden fazla erişilebilirlik deseni görülmektedir. Her girişin, etiketinin for özelliğiyle eşleşen benzersiz bir id özelliği vardır. Bu bağlantı "Tam Ad, metni düzenle" cümlesinin, kullanıcı o alana tab tuşuyla geçtiğinde duyurulmasını sağlar. Radyo düğmeleri, grubun amacını tanımlayan bir efsane ile bir alan kümesi içinde gruplandırılır. Onay kutularının, standard form konvansiyonlarına göre, giriş elemanının ardından konumlandırılmış etiketleri vardır.

IronPDF'nin formun statik temsilleri yerine etkileşimli form alanları oluşturabilmesi için CreatePdfFormsFromHtml işleme seçeneği etkinleştirilmelidir.

Oluşturulduktan Sonra PDF/UA Uyumunu Nasıl Doğrularım?

Erişilebilirlik özellikleriyle PDF oluşturmak, sürecin yalnızca bir parçasıdır. Doğrulama, oluşturulan belgelerin gerçekten PDF/UA standardının teknik gereksinimlerini karşıladığını onaylar. Bu amaçla bir dizi araç bulunmaktadır ve veraPDF en yaygın tanınan açık kaynaklı doğrulayıcıdır.

IronPDF yerleşik doğrulama içermese de, doğrulamayı harici araçlar kullanarak iş akışınıza entegre edebilirsiniz. veraPDF doğrulayıcısı, C# kodundan çağrılabilecek komut satırı uygulaması olarak mevcuttur.

Kod, eksiksiz bir doğrulama iş akışı göstermektedir. İlk olarak, meta verileri yapılandırılmış olarak RenderHtmlAsPdfUA() kullanarak bir test PDF'si oluşturur. Sonra, PDF/UA-1 doğrulaması için --flavour ua1 bayrağı ile çalışacak şekilde işlemi yapılandırarak, C# kullanarak Process.Start()'i çağırır. Çıktı yakalanır ve çıkış kodu, belgenin doğrulamadan geçip geçmediğini belirler.

: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 ayrıca erişilebilirlik kontrolü özellikleri içerir. Acrobat Pro'daki Erişilebilirlik Kontrolü, okuyucu sırası doğrulaması, alternatif metin doğrulaması ve form alanı erişilebilirliği dahil kapsamlı testler gerçekleştirir. Ücretsiz olmasa da, Acrobat Pro çoğunlukla kurumsal ortamlarda mevcuttur ve erişilebilirlik sorunlarına ilişkin ayrıntılı raporlar sağlar.

Otomatik test boru hatları için, PDF/UA Vakfı'nın PAC (PDF Erişilebilirlik Kontrolörü) aracı başka bir doğrulama seçeneği sunar. PAC, sürekli entegrasyon iş akışlarına uygun hale getiren grafiksel bir arayüz ve komut satırı yetenekleri sağlar.

Kurumsal Uygulamalarda Erişilebilir PDF'leri Korumak için En İyi Uygulamalar Nelerdir?

Bireysel erişilebilir belgeleri oluşturmak, teknikleri anlamaya başladıktan sonra oldukça basittir. Kurumsal çapta erişilebilirliği korumak, sistematik yaklaşımlar ve kurumsal disiplin gerektirir.

Şablon standardizasyonu, değişkenliği azaltır ve tutarlılığı sağlar. Onaylı HTML şablonları kitaplığı oluşturmak ve semantik yapı, erişilebilir form desenleri ve tutarlı stillerle geliştiricilere varsayılan olarak uyumlu çıktılar üreten bir temel sağlar.

Kod, kurumsal rapor oluşturma desenini göstermektedir. Form oluşturma etkinleştirilmiş olarak bir ChromePdfRenderer başlatır, ardından güvenli içerik ekleme için HttpUtility.HtmlEncode() kullanarak şablon değişkenlerinden bir HTML raporu oluşturur. Rapor HTML, tutarlı stil ve semantik yapı içerir. RenderHtmlAsPdfUA() ile render işlemi yapıldıktan sonra, standart meta veri özellikleri (başlık, yazar, yaratıcı ve tarih) yapılandırılır ve kaydedilmeden önce tamamlanır. Bu desen, tüm oluşturulan belgelerde erişilebilirlik uyumunu sağlamak için yeniden kullanılabilir bir hizmete sarılabilir.

: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

Otomatik test, sürekli entegrasyon boru hattınızın bir parçası olmalıdır. PDF oluşturan herhangi bir süreç, erişilebilirlik gereksinimleri karşılanmadığında derlemeyi başarısız kılan doğrulama adımlarını içermelidir. Bu, erişilemez belgelerin üretime ulaşmasını önler.

Personel eğitimi, teknik uygulama kadar önemlidir. İçerik yazarlarının, erişilebilirliğin neden önemli olduğunu ve seçimlerinin nihai çıktıyı nasıl etkilediğini anlamaları gerekir. Yazarlara doğru başlık seviyelerini kullanmayı, anlamlı resim açıklamaları sağlamayı ve tabloları iyi yapılandırmayı öğretmek, uyumlu PDF'lere dönüşen daha iyi kaynak materyaller üretir.

Şablonlar için sürüm kontrolü ve düzenli erişilebilirlik denetimleri, uyumluluğu zamanla korur. İş gereksinimleri geliştikçe ve şablonlar değiştikçe, periyodik incelemeler, değişikliklerin dikkatsizce erişilebilirlik engelleri getirmediğinden emin olur.

Erişilebilirlik yaklaşımınızın belgelenmesi, personel değişimlerinden sonra bile kurumsal bilginin hayatta kalmasını sağlar. Hangi standartları izlediğinizi, hangi araçları doğrulama için kullandığınızı ve belirlenen sorunlar için hangi düzeltme prosedürlerinin mevcut olduğunu kaydetmek, organizasyon genelinde tutarlı uygulamaların sürdürülmesine yardımcı olur.

Erişilebilirlik, bir kerelik bir başarı değil, süregelen bir taahhüttür. Standartlar gelişir, yardımcı teknolojiler iyileşir ve kullanıcı ihtiyaçları değişir. Erişilebilirliği standart iş akışlarının içine dahil eden, onu sonradan düşünce olarak ele almaktan ziyade mükemmel konumda olan kuruluşlar, hem mevcut gereksinimleri hem de gelecekteki beklentileri en iyi şekilde karşılayabilirler.

Bu kılavuzda ele alınan teknikler, IronPDF kullanarak Section 508 uyumlu PDF'ler oluşturmak için sağlam bir temel sağlar. Uygun HTML yapısı, uygun meta veriler, gezinme yardımcıları ve doğrulama testlerini birleştirerek .NET geliştiricileri, erişilebilir içeriğe ihtiyaç duyan kullanıcılara gerçek anlamda hizmet ederken yasal gereklilikleri karşılayan belgeler üretebilir.

Sonuç

IronPDF, PDF erişilebilirlik standartlarının karmaşıklığını basitleştirir, böylece .NET geliştiricileri içeriğe odaklanabilirken kütüphane altta yatan PDF/UA yapısı gerekliliklerini halleder. Bu eğitimde mevcut PDF'leri PDF/UA formatına dönüştürme, HTML'yi doğrudan erişilebilir PDF'lere dönüştürme, ekran okuyucu uyumluluğu için belge meta verileri ve dil spesifikasyonları ayarlama, anlamsal HTMLden etiketlenmiş belge yapıları oluşturma, erişilebilir formlar ve yer imleri ile gezinme oluşturma, ve veraPDF gibi harici araçlar kullanarak uyumluluğu doğrulama ele alınmıştır.

Erişilebilirlik daha geniş bir belge yaşam döngüsünün parçası olduğunda, bu modeller uzun süreli koruma için PDF/A arşiv uyumluluğu ve hükümet veya sağlık sistemleri genelinde ölçekli erişilebilir belgeler üretmek için toplu işleme ile doğal olarak eşleşir.

Yapmaya hazır mısınız? IronPDF İndir ve ücretsiz deneme ile deneyin. Aynı kütüphane, tek bir erişilebilir belge üretiminden işletme genelinde PDF/UA uyumluluk hatlarına kadar her şeyle ilgilenir. Erişilebilirlik uygulaması veya Section 508 gereklilikleri hakkında sorularınız varsa, mühendislik destek ekibimize ulaşın.

Sıkça Sorulan Sorular

PDF'lerde Section 508 uyumluluğu nedir?

Section 508 uyumluluğu, PDF'ler gibi elektronik ve bilgi teknolojilerinin engelliliği olan insanlar için erişilebilir olmasını sağlar. IronPDF, alt metin eklemek, erişilebilir tablolar oluşturmak ve daha fazlasını yaparak bu standartlara uygun PDF'ler oluşturmanıza yardımcı olur.

IronPDF'yi kullanarak mevcut PDF'leri PDF/UA'ya nasıl dönüştürebilirim?

IronPDF, mevcut PDF'leri PDF/UA'ya dönüştürmek için özellikler sunar, böylece erişilebilirlik standartlarını karşılar. Bu, içeriğin erişilebilir olmasını sağlamak için gerekli meta verileri ve yapı elemanlarını eklemeyi içerir.

IronPDF erişilebilir HTML'yi işlemekte yardımcı olabilir mi?

Evet, IronPDF HTML içeriğini PDF/UA standartlarına uygun erişilebilir şekilde işleyebilir, böylece web içeriğinden erişilebilir belgeler oluşturmayı kolaylaştırır.

IronPDF kullanarak PDF'lerde resimlere alt metin nasıl eklerim?

IronPDF, erişilebilirlik açısından kritik olan PDF'ler içindeki resimlere alt metin eklemenizi sağlar. Bu özellik, ekran okuyuculara güvenen kullanıcılar için resimlerin açıklanmasını garanti eder.

IronPDF'nin erişilebilir tablolar ve formlar oluşturma için sunduğu özellikler nelerdir?

IronPDF, tüm kullanıcıların verileri ve giriş alanlarını gezinip anlayabilmesini garanti eden yapılandırılmış tablolar ve formlar oluşturmak için araçlar sağlar.

IronPDF'yi kullanarak PDF'lerimin devlet gereksinimlerine uygunluğunu nasıl doğrularım?

IronPDF, PDF'lerinizin Section 508 ve PDF/UA gerekliliklerine uyup uymadığını kontrol eden doğrulama araçları içerir ve belgelerinizin gerekli erişilebilirlik standartlarını karşıladığından emin olmanıza yardımcı olur.

IronPDF ile erişilebilir PDF'lerin oluşturulmasını otomatikleştirmek mümkün mü?

Evet, IronPDF, uyumluluk standartlarını karşılayacak şekilde sürekli erişilebilir PDF'ler üretmek için otomatik iş akışlarına entegre edilebilir.

IronPDF'yi kullanarak erişilebilir PDF'ler oluşturmak için hangi programlama dilleri uyumludur?

IronPDF, geliştiricilerin doğrudan .NET framework'ü içinde erişilebilir PDF'ler oluşturmasına olanak tanıyan C# ile çalışmak üzere tasarlanmıştır.

IronPDF'yi nasıl kullanacağınızı öğrenmek için herhangi bir öğretici mevcut mu?

Evet, IronPDF, erişilebilir PDF'ler oluşturma sürecinde size rehberlik eden kapsamlı öğreticiler ve dokümantasyon sağlar ve tüm özelliklerini etkili bir şekilde kullanmanızı sağlar.

IronPDF çok dilli PDF erişilebilirliğinde yardımcı olabilir mi?

IronPDF, Unicode metni ve dilleri işleyerek farklı dil belgelerinde erişilebilirliği sağlayarak çok dilli erişilebilir PDF'ler oluşturmayı destekler.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku
Başlamaya Hazır mısınız?
Nuget Indirmeler 18,332,619 | Sürüm: 2026.4 yeni yayınlandı
Still Scrolling Icon

Hala Kaydiriyor musunuz?

Hızlı bir kanit mi istiyorsunuz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizin PDF olduğunu izleyin.