PDF Erişilebilirliği C#: PDF/UA Belgeleri Oluşturma, Dönüştürme ve Doğrulama

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

Erişilebilirlik mevzuatı, .NET geliştiriciler için artık bir gelecek endişesi değil. Burada, son tarihler gerçek ve cezalar uygulanabilir. PDF/UA C# uygunluğu, erişilebilir PDF .NET oluşturma, Bölüm 508 PDF C# uygunluğu ve WCAG PDF uygunluğu C# artık hükümet, sağlık, eğitim, hukuk veya finansal hizmetlerle ilgili belge iş akışları oluşturan herhangi bir ekip için rutin gereksinimlerdir. IronPDF, etiketli PDF motoru, SaveAsPdfUA ve RenderHtmlAsPdfUA metodları, toplu dönüştürme yetenekleri ve çapraz platform .NET çalışma zamanı desteği sağlayarak PDF çıktınızıPDF/UA-1vePDF/UA-2standartlarına uyumlu hale getirir, ister eski arşivleri dönüştürüyor olun ister HTML'den çalışma zamanında erişilebilir belgeler üretiyor olun.

Kısa Başlangıç Rehberi

Bu eğitim, düzenleyici bağlamdan ölçekli uygulama, doğrulama ve düzeltmeye kadar C#'taki PDF/UA erişilebilirliğini kapsar.

  • Bu kimin için: Uygulamalarında PDF oluşturan, dönüştüren veya dağıtan belgelerin erişilebilirliğinden sorumlu .NET geliştiricileri, mimarlar ve uygunluk liderleri. Buna, Bölüm 508 denetimlerine hazırlanan hükümet yüklenicileri, erişilebilir raporlama hatları oluşturan SaaS ekipleri ve ADA Başlık II son tarihlerine karşı belge düzeltme projeleri planlayan kurumsal mimarlar dahildir.
  • Ne oluşturacaksınız: Mevcut PDF'lerin SaveAsPdfUA ilePDF/UA-1vePDF/UA-2dönüşümü, RenderHtmlAsPdfUA ile erişilebilir HTML-to-PDF üretimi, ConvertToPdfUA ile bellek içi dönüştürme, paralel işlem ve hata yönetimi ile toplu iyileştirme hatları, ve veraPDF ve Matterhorn Protokolü kullanarak doğrulama iş akışları.
  • Nerede çalıştırılır: .NET 6+, .NET Framework 4.6.2+, .NETStandart2.0. Windows, Linux, macOS, Docker, Azure ve AWS. Tüm işleme, dış tarayıcı bağımlılığı olmadan IronPDF'nin gömülü Chromium motorunu kullanır.
  • Bu yaklaşımı ne zaman kullanmalısınız: PDF'lerinizin, Bölüm 508, ADA Başlık II (Nisan 2026/2027 son tarihleri), AB Erişilebilirlik Yasası (Haziran 2025) veya örgütsel WCAG 2.1 Seviye AA politikaları tarafından belirtilen erişilebilirlik standartlarına uyması gerektiğinde.
  • Teknik olarak neden önemlidir: IronPDF'nin Chromium render motoru, dönüşüm yoluyla HTML semantik yapısını korur ve başlıklar, listeler, tablolar ve açıklama metni, PDF yapı unsurlarına doğrudan eşlenmiş etiketli PDF'ler üretir. Mevcut dosyalar için tek yöntemli SaveAsPdfUA dönüşümü ile bir üretim yolu ve bir iyileştirme yolu elde edersiniz, manuel etiket manipülasyonu olmadan.

Mevcut bir PDF'yi PDF/UA formatına iki satırda dönüştürün:

  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;
    
    PdfDocument pdf = PdfDocument.FromFile("quarterly-report.pdf");
    
    // Convert and save asPDF/UA-1compliant
    pdf.SaveAsPdfUA("quarterly-report-accessible.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


PDF/UA nedir ve neden şimdi zorunlu?

PDF erişilebilirliği, ekiplerin sonradan ele aldığı bir konuydu. En iyi uygulamalar değil, kesin gereklilik. Bu değişti. Artık çeşitli kesişen düzenlemeler ve sıkı son tarihler, geniş kategorilere sahip organizasyonlar için bunu yasal bir zorunluluk haline getiriyor ve uyumsuzluğun sonuçları denetim bulgularından davalara kadar uzanıyor.

Yasal Eşik Noktası

PDF/UA uygunluğunu acil hale getirmek için üç düzenleyici gelişme birleşti.

PDF Erişilebilirlik Uyum Son Tarihleri zaman çizelgesi, Sürekli bir gereklilik olarak 508. Bölüm, Haziran 2025'te yürürlüğe giren AB Erişilebilirlik Yasası, Nisan 2026 için büyük yargı bölgeleri için ADA Başlık II ve Nisan 2027 için küçük yargı bölgeleri için ADA Başlık II'yi gösteriyor

Bunlar teorik riskler değil. Erişilebilirlik davaları yıl geçtikçe artıyor ve mahkemeler, dijital belgelerin engellilik ayrımcılığı yasası kapsamına girdiğini sürekli olarak belirlemiş durumda. Erişilebilirliği gelecekte bir endişe olarak ele alan kuruluşlar, yazılımlarının aylar veya yıllar önce ürettiği belgeler nedeniyle sürekli olarak şikayet, denetim bulguları ve davalarla karşı karşıya kalmaktadır.

Rehabilitation Act'ın 508. Bölümü, yıllardır ABD federal ajansları ve yüklenicilerinden erişilebilir elektronik bilgi teknolojisi üretmelerini gerektirmiştir. PDF'ler açıkça kapsanıyor. Yazılımınız, bir federal ajans tarafından veya adına tüketilen belgeler üretiyorsa, bu belgeler erişilebilir olmalıdır. Adalet Bakanlığı, şikayetleri araştırır ve uyumsuz kuruluşlara karşı uygulama eylemleri başlatır.

ADA Title II, eyalet ve yerel yönetimlere erişilebilirlik yükümlülüklerini genişletir. 2024'te yayımlanan DOJ'un nihai kuralı, nüfusu 50.000 veya daha fazla olan kuruluşlar için uyum son tarihini Nisan 2026 olarak belirledi, daha küçük kuruluşlar için ise Nisan 2027 olarak belirledi. Kapsam geniş: bir hükümet web sitesinde yayınlanan, e-posta yoluyla dağıtılan veya vatandaşla yüzleşen bir uygulama aracılığıyla üretilen her PDF, WCAG 2.1 Seviye AA'ya uygun olmalıdır. Bu, toplantı gündemleri, bütçe belgeleri, izin başvuruları, mahkeme kayıtları, imar haritaları ve meclis toplantı tutanakları gibi birçok belge türünü içerir.

Avrupa Erişilebilirlik Yasası (EAA), Haziran 2025'te yürürlüğe girdi ve AB'de satılan ürün ve hizmetlerin erişilebilirlik gereksinimlerini karşılamasını gerektirir. AB müşterilerine hizmet veren yazılım şirketleri için, uygulamalarınızın ürettiği belgelerin erişilebilir olması gerekiyor. Bu hükümetle sınırlı değil; birçok kategori içinde özel sektör ürün ve hizmetlerine uygulanır.

PDF/UA Gerçekte Ne Gerektirir?

PDF/UA (ISO 14289), bir PDF'nin yardımcı teknolojilerin onu güvenilir bir şekilde işlemesi için karşılaması gereken teknik gereksinimleri tanımlar. Uyumlu bir belgede şunlar bulunmalıdır:

Tam bir etiket yapısı. Anlamlı içeriklerin her kısmı standart PDF etiketleri kullanarak mantıksal bir yapı ağacı içinde temsil edilmelidir: başlıklar için <h1> ile <h6>, paragraflar için <p>, veri tabloları için <Table>, görüntüler için <Figure> ve listeler için <l>. Ekran okuyucuların atlaması için tamamen dekoratif olan içerik bir eser olarak işaretlenmelidir.

Doğru bir okuma sırası. Etiket ağacı, içeriğin sayfada görüntülendiği görsel sırada değil, okunması gereken mantıksal sırada olmalıdır. Çok sutunlu yerlesimler veya kenar cubuklu dokümanlar icin, bu ayrim onemli olcude fark yaratir.

Metin dışı içerik için alternatif metin. Bilgi aktaran her görüntünün, grafiğin ve diyagramın <Figure> etiketine ekli alt metni olmalıdır. Süs resimleri eser olarak işaretlenmelidir.

Uygun meta veri. Belge, doğal dilini ("en" gibi İngilizce için), anlamlı bir başlık belirtmeli ve XMP meta verilerinde PDF/UA tanımlayıcısını içermelidir.

Unicode eşlemeleri ile gömülü yazı tipleri. Tüm yazı tipleri gömülü olmalı ve Unicode karakter eşlemeleri (ToUnicode CMap) metnin doğru bir şekilde çıkarılması ve sesli okunabilmesi için mevcut olmalıdır.

PDF/UA ve WCAG: Iki Standardin Birlikte Nasıl Çalıştığı

Geliştiriciler genellikle PDF/UA veya WCAG hedeflemeleri gerekip gerekmediğini sorar. Cevap her ikisidir, çünkü farklı katmanlarda çalışırlar.

WCAG (Web İçeriği Erişilebilirlik Yönergeleri), web içeriği için erişilebilirlik ilkelerini ve başarı kriterlerini tanımlar. Bu, 508. Bölüm, ADA Başlık II ve EAA tarafından referans alınan standarttır. WCAG, erişilebilir içeriğin neyi başarması gerektiğini belirtir: algılanabilir, çalıştırılabilir, anlaşılabilir ve sağlam.

PDF/UA, bu hedeflere bir PDF dosyası içinde nasıl ulaşılacağını belirtir. Bu, teknik uygulama standardıdır. PDF/UA'ya uygun bir PDF, doküman içeriğine uygulanabilir WCAG başarı kriterlerini karşılayacaktır. Iki standart birbiri ile tamamlayıcıdır, rekabet etmiyorlar. Pratikte, eğer iş akışınız etiketlenmiş, iyi yapılandırılmış ve PDF/UA doğrulamasına geçen PDF'ler üretiyorsa, WCAG uyumluluğu için de güçlü bir durumdasınız demektir.

Retroaktif Gereklilik

Kuruluşları hazırlıksız yakalayan bir detay: bu düzenlemeler sadece yeni belgelere uygulanmaz. Web sitelerinde yayımlanan veya uygulamalar aracılığıyla dağıtılan mevcut PDF'lerin de düzeltilmesi gerekebilir. ADA Başlık II, eyalet ve yerel yönetimler tarafından yayımlanan web içeriğinin (PDF'ler dahil) WCAG 2.1 Düzey AA'yı karşılamasını gerektirir. Eski belgeler icin genel bir muafiyet yoktur.

Bu, programlanabilir dönüştürme araçlarını önemli kılar. Binlerce PDF dosyasını manuel olarak düzeltmek pratik değildir. Bu eğitimde toplu düzeltme desenlerini daha sonra ele alacağız.


PDF/UA Sürümleri Arasındaki Farklar Nelerdir?

PDF/UA-1 (ISO 14289-1, PDF 1.7 Tabanli)

PDF/UA-1, 2012'de yayımlandı ve standartın en yaygın olarak benimsenen versiyonu olarak kalmaktadır. PDF 1.7 spesifikasyonu üzerine inşa edilmiştir ve etiketlenmiş PDF yapısı, meta veriler, yazı tipleri ve yardımcı teknoloji uyumluluğu için kapsamlı bir gereksinim seti tanımlar. VeraPDF ve Adobe Acrobat'ın erişilebilirlik denetleyicisi dahil olmak üzere, çoğu doğrulama aracı, ana hedef olarak PDF/UA-1'i destekler.

Eger yeni bir erisilebilirlik projesine basliyor ve mevcut araclar ve is akislari ile genis uyumluluga ihtiyaçiniz varsa,PDF/UA-1guvenli varsıyılan secenektir. 508. Bölüm, ADA Başlık II ve AB Erişilebilirlik Yasası gereksinimlerini karşılar.

PDF/UA-2 (ISO 14289-2:2024, PDF 2.0 Tabanlı)

PDF/UA-2, 2024 yılında yayımlandı ve önemli bir güncelleme temsil etmektedir. PDF 2.0 spesifikasyonuna (ISO 32000-2:2020) dayanan bu yapı, ek açıklamalar, form alanları, multimedya içeriği ve karmaşık belge yapıları dâhil olmak üzere modern PDF özelliklerinin daha iyi işlenmesini sunar.PDF/UA-2ayrıca gelişen web erişilebilirlik standartlarıyla daha iyi uyum sağlar.

IronPDF her iki sürümü de destekler. Hedeflemek istediginizi ihracat yaparken belirtebilirsiniz, asagida kod örneklerinde gösterecegiz.

WTPDF (İyi Etiketlenmiş PDF) ve İlişkisi

WTPDF'yi ifade eden Well-Tagged PDF'e atıflarla karşılaşabilirsiniz. PDF Association tarafından yayımlanan WTPDF, doğru bir şekilde etiketlenmiş PDF dosyaları oluşturma konusunda teknik kılavuz sağlayan bir dizi belge içermektedir. Bu, ayrı bir standart değil, aksinePDF/UA-2ve PDF 2.0 için pratik bir tamamlayıcıdır. WTPDF, etiket kullanımı, yapı elemanı eşlemesi ve içerik etiketlemesi için, PDF/UA spesifikasyonunun kendisinin tanımladıklarının ötesine geçen ayrıntılı kurallar sağlar. Bu durumu resmi standardin yaninda yer alan uygulama rehberi olarak dusunun.

Hangi Sürümü Hedeflemelisiniz?

PDF/UA-1 PDF/UA-2
Yayınlandı 2012 2024
Temel spesifikasyon PDF 1.7 (ISO 32000-1) PDF 2.0 (ISO 32000-2)
Düzenleyici kapsam 508. Bölüm, ADA Başlık II, AB Erişilebilirlik Yasası Aynı düzenlemelere ileriye dönük uyumlu
Doğrulama araclari veraPDF, Adobe Acrobat Pro, PAC 2024 veraPDF (artan destek)
Form alanı anlamları Standart Geliştirilmiş (daha zengin erişilebilirlik meta verileri)
En iyisi Bugün çoğu proje PDF 2.0 özelliklerini gerektiren yeni sistemler

Günümüzdeki çoğu proje için PDF/UA-1 en doğru seçenektir. En geniş araç desteğine, en olgun doğrulama ekosistemine sahiptir ve mevcut tüm düzenleyici gereksinimleri karşılar. Geliştirilmiş form alanı semantiği, iyileştirilmiş açıklama işleme veya gelişmekte olan standartlarla ileriye dönük uyumluluk gibi PDF 2.0 özelliklerine özel olarak ihtiyaçınız varsaPDF/UA-2seçin.

IronPDF varsayılan olarak PDF/UA-1 kullanır ve PDF/UA-2'ye geçiş yapmayı hazır olduğunuzda son derece kolay hale getirir.


HTML'den Erişilebilir PDF'ler Nasıl Oluşturulur?

Uygulamanız HTML içeriğinden PDF üretiyorsa (raporlar, faturalar, ekstreler, yazışmalar), baştan erişilebilirlik oluşturma fırsatınız var demektir; bu, sonradan hataları düzeltmek yerine baştan çözüm sağlamanızı sağlar. IronPDF'nin RenderHtmlAsPdfUA metodu HTML'yi doğrudan PDF/UA uyumlu çıktıya dönüştürür, ve sonucu kalitesi büyük ölçüde HTML girişinizin kalitesine bağlıdır.

Erişilebilirlik Uyumlu HTML Yazma

Erisilebilir HTML, erisilebilir etiketlenmis PDF yapisina dogal olarak donusur. İşte en önemli uygulamalar:

Semantik HTML öğeleri kullanın. İçeriğinizi başlıklar için <h1> ile <h6>, paragraflar için <p>, listeler için <ul> ve <ol>, veri tabloları için <table> ile <thead>, <tbody> ve <th>, ve sayfa yapısı için <nav>, <main>, <article> ve <section> ile yapılandırın.

Her anlamlı görüntü için alternatif metin sağlayın. Tüm <img> etiketlerinde alt özniteliğini kullanın. Süs görüntüleri için görüntünün bir eser olarak kabul edilmesi gerektiğini belirtmek üzere boş bir alt="" kullanın.

Mantıksal bir başlık hiyerarşisi koruyun. Tek bir <h1> ile başlayın ve seviyeleri atlamayın. PDF çıktısında <h1> 'dan <h3> 'ya atlama yapan bir belge, kırık bir başlık ağacı oluşturacaktır.

Form alanlarını etiketleyin. HTML'nize form elemanları dahilse, her girişi for özniteliğini kullanarak bir <label> elementiyle ilişkilendirin.

Belge dilini ayarlayın. <html> elemanınıza lang özniteliğini ekleyin (örneğin, <html lang="en">).

RenderHtmlAsPdfUA ile HTML'den PDF/UA'ya Dönüşüm

İşte doğrudan PDF/UA olarak erişilebilir bir HTML belgesi oluşturan eksiksiz bir örnek:

Semantik başlıklar, veri tablosu, sıralı liste ve alt metinli görüntüyü doğrudan PDF/UA uyumlu bir belgeye dönüştüren bir HTML dizesi renderlar.

:path=/static-assets/pdf/content-code-examples/tutorials/pdf-accessibility-csharp-pdfua-tutorial/pdfua-render-html.cs
using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

string accessibleHtml = @"
<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'>
    <title>Quarterly Accessibility Report</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            line-height: 1.6;
            color: #333;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
        }
        h1 {
            color: #1a1a1a;
            border-bottom: 2px solid #0066cc;
            padding-bottom: 8px;
        }
        h2 {
            color: #2a2a2a;
            margin-top: 24px;
        }
        table {
            border-collapse: collapse;
            width: 100%;
            margin: 16px 0;
        }
        th, td {
            border: 1px solid #ccc;
            padding: 10px;
            text-align: left;
        }
        th {
            background-color: #f0f0f0;
            font-weight: bold;
        }
        .summary {
            background-color: #f9f9f9;
            padding: 16px;
            border-left: 4px solid #0066cc;
            margin: 16px 0;
        }
    </style>
</head>
<body>
    <h1>Q3 2025 Accessibility Compliance Report</h1>

    <div class='summary'>
        <p>This report summarizes the accessibility remediation progress
        for all public-facing PDF documents across the organization.</p>
    </div>

    <h2>Document Inventory</h2>
    <p>The following table shows the current status of document
    remediation by department.</p>

    <table>
        <thead>
            <tr>
                <th scope='col'>Department</th>
                <th scope='col'>Total Documents</th>
                <th scope='col'>Compliant</th>
                <th scope='col'>Pending</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Legal</td>
                <td>1,247</td>
                <td>892</td>
                <td>355</td>
            </tr>
            <tr>
                <td>Finance</td>
                <td>3,891</td>
                <td>3,102</td>
                <td>789</td>
            </tr>
            <tr>
                <td>Human Resources</td>
                <td>567</td>
                <td>401</td>
                <td>166</td>
            </tr>
        </tbody>
    </table>

    <h2>Key Findings</h2>
    <p>Three areas require immediate attention before the
    April 2026 deadline:</p>
    <ol>
        <li>Legacy court filing templates lack heading
        structure entirely.</li>
        <li>Financial statement PDFs generated before 2023
        have no tagged content.</li>
        <li>HR onboarding packets contain scanned images
        without OCR text layers.</li>
    </ol>

    <h2>Remediation Timeline</h2>
    <p>The project team recommends prioritizing public-facing
    documents first, followed by internal documents accessed by
    more than 50 employees.</p>

    <img src='timeline-chart.png'
         alt='Gantt chart showing remediation phases: Phase 1
         covers public documents from October through December
         2025, Phase 2 covers internal documents from January
         through March 2026.' />
</body>
</html>";

// Render directly to PDF/UA-compliant output
PdfDocument pdf = renderer.RenderHtmlAsPdfUA(accessibleHtml);

// Set document metadata (required by PDF/UA)
pdf.MetaData.Title  = "Q3 2025 Accessibility Compliance Report";
pdf.MetaData.Author = "Compliance Department";

pdf.SaveAs("accessibility-report-pdfua.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

Dim accessibleHtml As String = "
<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'>
    <title>Quarterly Accessibility Report</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            line-height: 1.6;
            color: #333;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
        }
        h1 {
            color: #1a1a1a;
            border-bottom: 2px solid #0066cc;
            padding-bottom: 8px;
        }
        h2 {
            color: #2a2a2a;
            margin-top: 24px;
        }
        table {
            border-collapse: collapse;
            width: 100%;
            margin: 16px 0;
        }
        th, td {
            border: 1px solid #ccc;
            padding: 10px;
            text-align: left;
        }
        th {
            background-color: #f0f0f0;
            font-weight: bold;
        }
        .summary {
            background-color: #f9f9f9;
            padding: 16px;
            border-left: 4px solid #0066cc;
            margin: 16px 0;
        }
    </style>
</head>
<body>
    <h1>Q3 2025 Accessibility Compliance Report</h1>

    <div class='summary'>
        <p>This report summarizes the accessibility remediation progress
        for all public-facing PDF documents across the organization.</p>
    </div>

    <h2>Document Inventory</h2>
    <p>The following table shows the current status of document
    remediation by department.</p>

    <table>
        <thead>
            <tr>
                <th scope='col'>Department</th>
                <th scope='col'>Total Documents</th>
                <th scope='col'>Compliant</th>
                <th scope='col'>Pending</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Legal</td>
                <td>1,247</td>
                <td>892</td>
                <td>355</td>
            </tr>
            <tr>
                <td>Finance</td>
                <td>3,891</td>
                <td>3,102</td>
                <td>789</td>
            </tr>
            <tr>
                <td>Human Resources</td>
                <td>567</td>
                <td>401</td>
                <td>166</td>
            </tr>
        </tbody>
    </table>

    <h2>Key Findings</h2>
    <p>Three areas require immediate attention before the
    April 2026 deadline:</p>
    <ol>
        <li>Legacy court filing templates lack heading
        structure entirely.</li>
        <li>Financial statement PDFs generated before 2023
        have no tagged content.</li>
        <li>HR onboarding packets contain scanned images
        without OCR text layers.</li>
    </ol>

    <h2>Remediation Timeline</h2>
    <p>The project team recommends prioritizing public-facing
    documents first, followed by internal documents accessed by
    more than 50 employees.</p>

    <img src='timeline-chart.png'
         alt='Gantt chart showing remediation phases: Phase 1
         covers public documents from October through December
         2025, Phase 2 covers internal documents from January
         through March 2026.' />
</body>
</html>"

' Render directly to PDF/UA-compliant output
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdfUA(accessibleHtml)

' Set document metadata (required by PDF/UA)
pdf.MetaData.Title = "Q3 2025 Accessibility Compliance Report"
pdf.MetaData.Author = "Compliance Department"

pdf.SaveAs("accessibility-report-pdfua.pdf")
$vbLabelText   $csharpLabel

Çıktı


Gördüğünüz gibi, semantik HTML öğeleri (başlıklar, sütun başlıklarına sahip bir veri tablosu, sıralı bir liste ve bir alt metin resmi) oluşturulan çıktıda uygun PDF/UA yapı etiketleri olarak korunmaktadır.

Dönüşüm Sırasında Yapıyı Korumak

IronPDF, Google Chrome ve Microsoft Edge'e güç veren aynı teknoloji olan gömülü bir Chromium işleme motoru kullanır. Bu, erişilebilirlik açısından önemlidir çünkü Chromium zaten HTML ifadelerini anlamaktadır. IronPDF, HTML'i PDF/UA'ya dönüştürdüğünde, HTML öğelerini PDF etiketi karşılıklarına eşler:

<h1> ile <h6>, <h1> ile <h6> başlık etiketlerine dönüşür. <p>, <p> paragraf etiketlerine dönüşür. <table>, <tr>, <th> ve <td>, <Table>, <tr>, <th> ve <td> yapı elemanlarına dönüşür. <ul> ve <ol>, <l> (Liste) öğesine ve <li> (Liste Elemanı) çocuklarına dönüşür. <img> alt metinle birlikte <Figure> ile /Alt girişi haline dönüşür.

HTML'den PDF/UA'ya Yapı Eşleme diyagramı, semantik HTML elemanlarının (h1, tablo, ul, alt metinli img) ilgili PDF etiket ağacı yapısına (H1, Tablo, Liste, Şekil) nasıl eşleştiğini gösteriyor

Bu eşleme otomatik olarak gerçekleşir. Bir PDF etiket ağacı oluşturmak veya herhangi bir yapı-elemanı kodu yazmak için manuel çalışmaya gerek yoktur.

Erişilebilirliği Bozan Yaygın HTML Kalıpları

Genel olarak temiz HTML yazan geliştiriciler bile bazen erişilemez PDF çıktısı üreten kalıplar kullanabilir. Bunlara dikkat edin:

<div> her şey için kullanma. Tamamen biçimlendirilmemiş <div> elemanlarından oluşan bir belgede düz, yapılandırılmamış bir etiket ağacı ortaya çıkar. Ekran okuyucular bunu anlamli bir sekilde gezinebilir. Onun yerine anlamsal öğeler kullanın.

CSS ızgaraları veya flexbox ile tabloları simüle etme. CSS kullanılarak görsel bir ızgara düzeninde sunulan veriler, ancak gerçekte <table> elemanları olmayanlar, PDF'de uygun tablo etiketleri oluşturmayacaktır. Eğer içerik tablolu veri ise, gerçek bir <table> kullanın.

Başlık seviyelerini atlama. <h1> 'den <h3> 'ye atlama, erişilebilirlik denetleyicilerinin başarısızlık olarak işaretleyeceği bir boşluk yaratır.

Alternatif metni olmayan görüntüler. <img> etiketlerinde alt özniteliği bulunmayan herhangi bir etiket <Figure> etiketiyle karşılaşacaktır, bu doğrudan bir PDF/UA ihlalidir.

Resimlerde gömülü metinler. HTML'niz resim olarak işlenen metin (tabloların ekran görüntüleri, rasterleştirilmiş grafikler) içeriyorsa, bu içerik ekran okuyucuları için görünmezdir. Her mümkün olduğunda gerçek HTML metni kullanın ve kalan resimler için kapsamlı alt metin sağlayın.


PDF/UA-1vePDF/UA-2arasında nasıl seçim yapılır?

Varsayılan Çıktı (PDF/UA-1)

Varsayılan olarak, IronPDFPDF/UA-1çıktısı üretir. PDF/UA-2'yi hedeflemek için özel bir nedeniniz yoksa, varsayılanı ile devam edin.

:path=/static-assets/pdf/content-code-examples/tutorials/pdf-accessibility-csharp-pdfua-tutorial/pdfua-default-output.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("standard-report.pdf");

// Default: saves as PDF/UA-1
pdf.SaveAsPdfUA("accessible-report.pdf");
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("standard-report.pdf")

' Default: saves as PDF/UA-1
pdf.SaveAsPdfUA("accessible-report.pdf")
$vbLabelText   $csharpLabel

Çıktı


Aynı rapor artıkPDF/UA-1uyumlu, tam bir etiket yapısına ve XMP meta verilerinde gömülü ISO 14289-1 belirleyicisine sahiptir.

Versiyon Parametresi ilePDF/UA-2olarak Dışa Aktarma

PDF/UA-2'ye ihtiyaçınız olduğunda, versiyon parametresini belirtin:

:path=/static-assets/pdf/content-code-examples/tutorials/pdf-accessibility-csharp-pdfua-tutorial/pdfua-export-pdfua2.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("modern-form.pdf");

// Export as PDF/UA-2 (based on PDF 2.0)
pdf.SaveAsPdfUA("accessible-form-ua2.pdf", PdfUAVersions.PdfUA2);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("modern-form.pdf")

' Export as PDF/UA-2 (based on PDF 2.0)
pdf.SaveAsPdfUA("accessible-form-ua2.pdf", PdfUAVersions.PdfUA2)
$vbLabelText   $csharpLabel

Çıktı


Form, PDF alanları için daha zengin erişilebilirlik meta verileriyle PDF 2.0 iç yapısını kullanarakPDF/UA-2olarak dışa aktarıldı.

Lütfen dikkate alinYukarıda görülen iframe önizlemesi, belgenin görsel içeriğini gösterir. Dosyaya gömülüPDF/UA-2uyum belirleyicisi ve ISO 14289-2 XMP meta verileri görüntüleyicide görünmez. Meta verilerin mevcut olduğunu doğrulamak için bir dış PDF/UA doğrulayıcı kullanın.

Ayrıca bellekte dönüştürüp ayrı olarak kaydedebilirsiniz:

:path=/static-assets/pdf/content-code-examples/tutorials/pdf-accessibility-csharp-pdfua-tutorial/pdfua-in-memory-pdfua2.cs
using IronPdf;

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

// Convert to PDF/UA-2 in memory
pdf.ConvertToPdfUA(PdfUAVersions.PdfUA2);

// Perform additional modifications
pdf.MetaData.Title = "Complex Document - Accessible Version";

// Save the converted document
pdf.SaveAs("complex-document-accessible.pdf");
Imports IronPdf

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

' Convert to PDF/UA-2 in memory
pdf.ConvertToPdfUA(PdfUAVersions.PdfUA2)

' Perform additional modifications
pdf.MetaData.Title = "Complex Document - Accessible Version"

' Save the converted document
pdf.SaveAs("complex-document-accessible.pdf")
$vbLabelText   $csharpLabel

Çıktı


Bellekte dönüştürülen belgePDF/UA-2olarak kaydedildi. Not: PDF/UA-2, içsel olarak PDF 2.0 formatını kullanır. Araçlarınızın PDF 2.0'ı destekleyip desteklemediğini kontrol etmeden geçiş yapmayın.

PDF/UA-2'yi Ne Zaman Kullanmalısınız

Belgelerinizin PDF/UA-1'in tam olarak ele alamayacağı PDF 2.0 özelliklerine dayanması gerektiğinde PDF/UA-2'yi düşünün. Bu, daha zengin semantik bilgiyle geliştirilmiş form alanı erişilebilirliği, yorumlar, işaretlemeler ve inceleme iş akışları için geliştirilmiş ek açıklama desteği, PDF'lere gömülü multimedya içerik desteği ve PDF 2.0 üzerine inşa edilmiş ortaya çıkan erişilebilirlik standartları ile ileri uyumluluk içerir.

Günümüzdeki çoğu uyum projesi içinPDF/UA-1işi halleder. PDF/UA-2, çıktıyı eski araçlarla işlemeye ihtiyaç duymayacak yeni sistemler için ileriye dönük seçimdir.


PDF/UA Uyumunu Nasıl Doğrularsınız?

PDF/UA belgesi oluşturmak, işin sadece yarısıdır. Çıkışın gerçekten standarda uygun olduğunu doğrulamanız gerekir. Doğrulama, geliştirme sırasında gözden kaçırılması kolay olan sorunları yakalar ve uyum denetimleri için ihtiyaç duyduğunuz belgelenmiş kanıtları sağlar.

veraPDF ile Doğrulama

veraPDF, PDF'leri PDF/UA ve PDF/A standartlarına göre kontrol etmek için ücretsiz, açık kaynak bir komut satırı ve GUI aracıdır. Dönüştürülen dosyayı ve ua1 profili kontrol etmek için geçirin:

Giriş

IronPDF tarafından oluşturulan PDF/UA belgesi, doğrulama için hazır. Bu, SaveAsPdfUA 'dan gelen çıktıdır.

verapdf --profile ua1 output-quarterly-report-accessible.pdf
verapdf --profile ua1 output-quarterly-report-accessible.pdf
SHELL

Çıktı

veraPDF Uygunluk Denetleyici,PDF/UA-1doğrulamasının geçtiğini gösteriyor: 136 kontrol, 0 başarısızlık, output-quarterly-report-accessible.pdf

136 kontrol geçti, 0 başarısızlık. IronPDF çıktısı, ISO 14289-1 ile tamamen uyumludur. HTML raporu her bir Matterhorn Protokol kontrol noktasını ve sonucunu listeler. CLI'yi CI/CD sürecinize entegre edin ve üretime ulaşmadan önce gerilemeleri yakalayın.

Matterhorn Protokolünü Anlama

Matterhorn Protokolü,PDF/UA-1uyumluluğunu kontrol etmenin tam olarak nasıl yapılacağını tanımlayan PDF Association tarafından yayınlanan bir dizi test koşuludur. 136 belirli başarısızlık koşulunu kapsayan 31 kontrol noktasına bölünmüştür. Her başarısızlık koşulu,PDF/UA-1spesifikasyonunda bir maddeyle eşleştirilir.

Örneğin, Kontrol Noktası 01, belge kataloğunun gerekli PDF/UA belirleyicisini içerip içermediğini kapsar. Kontrol Noktası 06, tüm yazı tiplerinin geçerli Unicode eşlemeleriyle gömülü olup olmadığını kapsar. Kontrol Noktası 13, grafiklerin uygun alternatif metinlere sahip olup olmadığını kapsar.

PDF/UA Doğrulama İş Akışı diyagramı, bir PDF Belgesini veraPDF Doğrulayıcıya besleyen, PDF/UA Uyumluluk için geçişte branşlanan ve başarısızlıkta Kontrol Noktaları 01 Belge Meta Verisi, 06 Yazı Tipi Gömme ve 13 Alternatif Metin Analizine üzerinde yerleştirilen Matterhorn Protokolü ile, Düzeltme Uygulama ve yeniden doğrulama döngüsüyle birlikte gösteren diyagram

Matterhorn Protokolünü anlamak doğrulama sonuçlarını yorumlamanıza ve düzeltmeleri önceliklendirmenize yardımcı olur. Tüm başarısızlık koşulları aynı ağırlığı taşımaz. Belge başlığı eksikliği beş dakikalık bir düzeltmedir. Tamamen etiketlenmemiş bir belge tam bir dönüştürme gerektirir.

Yaygın Uyumluluk Hataları ve Bunları Nasıl Düzeltirsiniz

Bunlar, PDF/UA çıktılarını doğrularken en sık karşılaşılan sorunlardır:

Eksik belge başlığı. Belge meta verileri, bir Başlık girdisini içermelidir ve ViewerPreferences sözlüğü, başlığın (dosya adı değil) pencere başlık çubuğunda gösterilmesini belirtmelidir. Bunu, kaydetmeden önce meta verileri ayarlayarak düzeltin:

:path=/static-assets/pdf/content-code-examples/tutorials/pdf-accessibility-csharp-pdfua-tutorial/pdfua-fix-document-title.cs
using IronPdf;

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

// Set the required document title
pdf.MetaData.Title = "Annual Budget Report - FY2025";

pdf.SaveAsPdfUA("budget-report-accessible.pdf");
Imports IronPdf

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

' Set the required document title
pdf.MetaData.Title = "Annual Budget Report - FY2025"

pdf.SaveAsPdfUA("budget-report-accessible.pdf")
$vbLabelText   $csharpLabel

Çıktı


Çıktı artık belge başlığı kontrolünü geçiyor, başlık PDF görüntüleyicisinin pencere başlık çubuğunda dosya adı yerine gösteriliyor.

Şekillerde eksik alt metin. Anlam ifade eden herhangi bir resim, alternatif metin içermelidir. Render işleminden önce kaynak HTML'e ekleyin veya doğrudan kaynak PDF'yi düzeltin.

Yanlış başlık hiyerarşisi. Atlanmış veya sırasız başlık seviyeleri olan bir belge doğrulamadan geçmez. Dönüştürmeden önce kaynak yapısında başlık yapısını düzeltin.

Yerleştirilmemiş yazı tipleri veya eksik Unicode eşleşmeleri. Genellikle standart dışı yazı tipi kodlamaları kullanan eski PDF'lerle olur. IronPDF, dönüştürme sırasında yazı tipi gömmeyi halleder, ancak son derece eski veya bozuk kaynak dosyalar özel dikkat gerektirebilir.

Yazı Tipleri, Renk Alanları ve Meta Veriler Gereksinimleri

PDF/UA, otomatik araçların kontrol ettiği görsel sunumla ilgili özel gereksinimlere sahiptir. Tüm yazı tipleri, doğru ToUnicode eşlemeleri ile gömülmelidir. Metin, Unicode karakterleri olarak çıkarılabilir olmalıdır. Renk alanları, cihazdan bağımsız olmalı veya bir ICC profiline sahip olmalıdır. Form alanları, uygun etiketlere ve açıklamalara sahip olmalıdır.

IronPDF dönüştürme sırasında yazı tipi gömme, renk alanı ve yapısal gereksinimleri otomatik olarak ele alır. Dil ve meta veriler kodda ayarlaması kolaydır, bu öğreticinin boyunca örneklerde gösterildiği gibi.

Otomasyonun Yakalayamayacağı Elle Kontrol Gerektiren Kontroller

Erişilebilirliğin bazı yönleri insan incelemesi gerektirir. Otomatik doğrulayıcılar bir resmin alt metne sahip olduğunu söyleyebilir, ancak alt metnin gerçekten yararlı olup olmadığını yargılayamaz. Başlıkların mevcut olduğunu doğrulayabilirler, ancak başlık metninin ardından gelen içeriği doğru bir şekilde tanımlayıp tanımlamadığını doğrulayamazlar.

Yüksek öncelikli belgeleriniz için iş akışınıza elle inceleme adımı ekleyin. Alt metnin resim içeriğini doğru bir şekilde tanımlayıp tanımlamadığına, okuma sırasının mantıklı bir şekilde sıralamalı olup olmadığına, bağlantı metninin açıklayıcı (sadece "buraya tıklayın" değil) olup olmadığına ve dil beyanının belgenin gerçek içeriğine uyup uymadığına odaklanın.

Ek Doğrulama Araçları

veraPDF, PDF/UA uyumluluğu otomatik kontrol için standarttır, ancak diğer araçlar onunla birlikte yararlıdır:

Adobe Acrobat Pro içinde Araçlar > Erişilebilirlik > Tam Kontrol altında bir erişilebilirlik denetleyicisi içerir. Geliştirme sırasında hızlı görsel kontrol yerinde değerlendirilmeleri için kullanışlıdır ve insan tarafından okunabilir bir rapor oluşturur.PDF/UA-1için veraPDF'e göre kapsama daha az kapsamlıdır, ancak çoğu ekipte yaygın olarak bulunabilir.

PAC 2024 (PDF Erişilebilirlik Denetleyicisi, Windows için ücretsiz) PDF Association tarafından görsel etiket ağacı denetimini PDF/UA ve WCAG'ye karşı uyum denetimleriyle birlikte sunar. Okuma sırası ve başlık yapısını metin raporları yerine görsel olarak incelemek için özellikle kullanışlıdır.

Acrobat Reader ile Doğrudan Görünüm > Göster/Gizle > Navigasyon Panoları > Etiketler altında Etiketler panelini açabilirsiniz. Bu bir doğrulayıcı değil, ancak yapısal ağacı hızlı bir görsel inceleme sağlar ve Acrobat Pro gerektirmeden kullanılabilir.

En güvenilir yaklaşım, farkında PDF/UA uyumluluğu için otomatik CI/CD denetimleri için veraPDF'i manuel bir kontrolle Acrobat veya PAC'ta yüksek öncelikli belgeler için birleştirmektir.


Uyumsuz PDF'leri Ölçekte Nasıl Düzeltirsiniz?

Büyük belge kütüphaneleri olan organizasyonlar için bireysel dosya dönüştürme pratik değildir. Bir denetim arşivinizin erişilebilirlik standartlarını karşılamadığını ortaya çıkarırsa veya bir son tarih yaklaşıyor ve binlerce belgeniz işlemeyi bekliyorsa, minimum elle müdahale ile hacmi işleyebilecek programlı bir yaklaşıma ihtiyaçınız var.

Belge Kütüphanelerini PDF/UA'ya Toplu Olarak Dönüştürme

IronPDF, iş parçacıklarına güvenlidir, bu nedenle birden fazla belgeyi paralel olarak işleyebilirsiniz. İşte eşzamanlılık kontrolü, hata işleme ve ilerleme raporlama ile üretim kalitesinde bir toplu dönüştürme uygulaması:

:path=/static-assets/pdf/content-code-examples/tutorials/pdf-accessibility-csharp-pdfua-tutorial/pdfua-batch-conversion.cs
using IronPdf;
using System;
using System.Collections.Concurrent;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

public class PdfUaBatchConverter
{
    private readonly SemaphoreSlim _semaphore;
    private readonly ConcurrentBag<string> _failures;
    private int _processed;

    public PdfUaBatchConverter(int maxConcurrency = 4)
    {
        _semaphore = new SemaphoreSlim(maxConcurrency);
        _failures  = new ConcurrentBag<string>();
        _processed = 0;
    }

    public async Task ConvertDirectoryAsync(
        string inputDirectory,
        string outputDirectory,
        NaturalLanguages language = NaturalLanguages.English)
    {
        Directory.CreateDirectory(outputDirectory);

        string[] pdfFiles  = Directory.GetFiles(inputDirectory, "*.pdf");
        int      totalFiles = pdfFiles.Length;

        Console.WriteLine($"Starting PDF/UA conversion: {totalFiles} files");
        Console.WriteLine($"Concurrency: {_semaphore.CurrentCount} parallel operations");
        Console.WriteLine($"Language: {language}");
        Console.WriteLine(new string('-', 50));

        var stopwatch = System.Diagnostics.Stopwatch.StartNew();

        var tasks = pdfFiles.Select(async inputPath =>
        {
            await _semaphore.WaitAsync();
            try
            {
                string fileName  = Path.GetFileName(inputPath);
                string outputPath = Path.Combine(outputDirectory, fileName);

                using (PdfDocument pdf = PdfDocument.FromFile(inputPath))
                {
                    pdf.SaveAsPdfUA(outputPath, NaturalLanguage: language);
                }

                int count = Interlocked.Increment(ref _processed);

                // Log progress every 10 files
                if (count % 10 == 0 || count == totalFiles)
                {
                    double rate = count / stopwatch.Elapsed.TotalSeconds;
                    Console.WriteLine(
                        $"  [{count}/{totalFiles}] " +
                        $"{rate:F1} files/sec");
                }
            }
            catch (Exception ex)
            {
                _failures.Add(
                    $"{Path.GetFileName(inputPath)}: {ex.Message}");
                Interlocked.Increment(ref _processed);
            }
            finally
            {
                _semaphore.Release();
            }
        });

        await Task.WhenAll(tasks);

        stopwatch.Stop();

        // Summary report
        Console.WriteLine(new string('-', 50));
        Console.WriteLine($"Completed in {stopwatch.Elapsed.TotalSeconds:F1}s");
        Console.WriteLine(
            $"Succeeded: {totalFiles - _failures.Count}  " +
            $"Failed: {_failures.Count}");

        if (_failures.Any())
        {
            Console.WriteLine("\nFailed files:");
            foreach (string failure in _failures)
                Console.WriteLine($"  - {failure}");

            // Write failures to log file for later review
            File.WriteAllLines(
                Path.Combine(outputDirectory, "_failures.log"),
                _failures);
        }
    }
}

// Usage
var converter = new PdfUaBatchConverter(
    maxConcurrency: Environment.ProcessorCount);

await converter.ConvertDirectoryAsync(
    inputDirectory:  @"C:\Documents\Legacy",
    outputDirectory: @"C:\Documents\Accessible",
    language: NaturalLanguages.English
);
Imports IronPdf
Imports System
Imports System.Collections.Concurrent
Imports System.IO
Imports System.Linq
Imports System.Threading
Imports System.Threading.Tasks

Public Class PdfUaBatchConverter
    Private ReadOnly _semaphore As SemaphoreSlim
    Private ReadOnly _failures As ConcurrentBag(Of String)
    Private _processed As Integer

    Public Sub New(Optional maxConcurrency As Integer = 4)
        _semaphore = New SemaphoreSlim(maxConcurrency)
        _failures = New ConcurrentBag(Of String)()
        _processed = 0
    End Sub

    Public Async Function ConvertDirectoryAsync(inputDirectory As String, outputDirectory As String, Optional language As NaturalLanguages = NaturalLanguages.English) As Task
        Directory.CreateDirectory(outputDirectory)

        Dim pdfFiles As String() = Directory.GetFiles(inputDirectory, "*.pdf")
        Dim totalFiles As Integer = pdfFiles.Length

        Console.WriteLine($"Starting PDF/UA conversion: {totalFiles} files")
        Console.WriteLine($"Concurrency: {_semaphore.CurrentCount} parallel operations")
        Console.WriteLine($"Language: {language}")
        Console.WriteLine(New String("-"c, 50))

        Dim stopwatch = System.Diagnostics.Stopwatch.StartNew()

        Dim tasks = pdfFiles.Select(Async Function(inputPath)
                                        Await _semaphore.WaitAsync()
                                        Try
                                            Dim fileName As String = Path.GetFileName(inputPath)
                                            Dim outputPath As String = Path.Combine(outputDirectory, fileName)

                                            Using pdf As PdfDocument = PdfDocument.FromFile(inputPath)
                                                pdf.SaveAsPdfUA(outputPath, NaturalLanguage:=language)
                                            End Using

                                            Dim count As Integer = Interlocked.Increment(_processed)

                                            ' Log progress every 10 files
                                            If count Mod 10 = 0 OrElse count = totalFiles Then
                                                Dim rate As Double = count / stopwatch.Elapsed.TotalSeconds
                                                Console.WriteLine($"  [{count}/{totalFiles}] {rate:F1} files/sec")
                                            End If
                                        Catch ex As Exception
                                            _failures.Add($"{Path.GetFileName(inputPath)}: {ex.Message}")
                                            Interlocked.Increment(_processed)
                                        Finally
                                            _semaphore.Release()
                                        End Try
                                    End Function)

        Await Task.WhenAll(tasks)

        stopwatch.Stop()

        ' Summary report
        Console.WriteLine(New String("-"c, 50))
        Console.WriteLine($"Completed in {stopwatch.Elapsed.TotalSeconds:F1}s")
        Console.WriteLine($"Succeeded: {totalFiles - _failures.Count}  Failed: {_failures.Count}")

        If _failures.Any() Then
            Console.WriteLine(vbCrLf & "Failed files:")
            For Each failure As String In _failures
                Console.WriteLine($"  - {failure}")
            Next

            ' Write failures to log file for later review
            File.WriteAllLines(Path.Combine(outputDirectory, "_failures.log"), _failures)
        End If
    End Function
End Class

' Usage
Dim converter As New PdfUaBatchConverter(maxConcurrency:=Environment.ProcessorCount)

Await converter.ConvertDirectoryAsync(inputDirectory:="C:\Documents\Legacy", outputDirectory:="C:\Documents\Accessible", language:=NaturalLanguages.English)
$vbLabelText   $csharpLabel

Çıktı


Bir işlenmiş dosya içinPDF/UA-1çıktısı. Desen, eşzamanlılık kontrolü için SemaphoreSlim 'i, dosya başına hata yakalamayı, bellek sızıntılarını önlemek için using 'a dayalı boşaltımı ve çalışan dosya-başına-saniye ilerleme oranını kullanır.

%80-%90 Otomatik Erişilebilirlik Dönüşümü Elde Etme

Uyumluluk işinin kalan %10-20'si insan yargısı gerektirir: karmaşık resimler için anlamlı alt metin, sıra dışı düzenler için okuma sırası düzeltmeleri ve kaynakta düzgün şekilde yapılandırılmayan belgeler için anlamsal başlık atamaları. Otomatik geçiş tamamlandıktan sonra, en yüksek öncelikli belgeleriniz için manuel bir inceleme adımı planlayın.

Düzeltmeleri Önceliklendirme

Tüm belgeler eşit uyumluluk riski taşımaz. Düzeltme çabalarınızı stratejik olarak odaklayın:

Öncelikle halka açık belgeler. Web sitenizde yayınlanan, müşterilere dağıtılan veya bir devlet kurumuna sunulan her şey en yüksek önceliğe sahiptir. Bunlar, şikayet veya denetimleri tetikleme olasılığı en yüksek belgeler.

Sık erişilen dahili belgeler ikinci sırada. Eğitim materyalleri, politika el kitapları ve birçok çalışanın düzenli olarak kullandığı İK formları hemen düzeltilmelidir.

Arsiv ve dusuk trafikli belgeler en son. Daha once, minimal erişim alan eski belgeler, asama asama düzeltilebilir veya birisi istediginde talep uzerine dönüştürulebilir.

Bu triaj yaklasimi, en çok gorulen belgelerde uyum ilerlemesini gösterirken, zamanla arsivinizin uzun kuyrugunu calismaniza olanak tanir.

PDF/UA ile Birlestirme, Imza ve Meta Veri Is Akislarini Birlestirme

Uretim hatlarinda, PDF/UA donusumu genellikle izolasyonda gerceklesmez. belge işlemleri ile genellikle birlestirilmesi gerekir. IronPDF, bunlari birlikte baglamayi destekler:

Giriş

Iki kaynak belge: kapak sayfasi ve mali rapor, her biri PDF/UA'ya dönüştürulmus ve tek bir erisilebilir dosyada birlestirilmis.

:path=/static-assets/pdf/content-code-examples/tutorials/pdf-accessibility-csharp-pdfua-tutorial/pdfua-merge-metadata.cs
using IronPdf;

// Load and convert to PDF/UA in memory
PdfDocument report = PdfDocument.FromFile("financial-report.pdf");
report.ConvertToPdfUA();

// Set comprehensive metadata
report.MetaData.Title   = "Annual Financial Report 2025";
report.MetaData.Author  = "Finance Department";
report.MetaData.Subject = "Year-end financial summary and analysis";

// Merge with a cover page (also converted to PDF/UA)
PdfDocument coverPage = PdfDocument.FromFile("cover-page.pdf");
coverPage.ConvertToPdfUA();

PdfDocument finalDocument = PdfDocument.Merge(coverPage, report);

// Save the combined, accessible document
finalDocument.SaveAs("annual-report-final-accessible.pdf");

// Dispose of intermediate documents
report.Dispose();
coverPage.Dispose();
Imports IronPdf

' Load and convert to PDF/UA in memory
Dim report As PdfDocument = PdfDocument.FromFile("financial-report.pdf")
report.ConvertToPdfUA()

' Set comprehensive metadata
report.MetaData.Title = "Annual Financial Report 2025"
report.MetaData.Author = "Finance Department"
report.MetaData.Subject = "Year-end financial summary and analysis"

' Merge with a cover page (also converted to PDF/UA)
Dim coverPage As PdfDocument = PdfDocument.FromFile("cover-page.pdf")
coverPage.ConvertToPdfUA()

Dim finalDocument As PdfDocument = PdfDocument.Merge(coverPage, report)

' Save the combined, accessible document
finalDocument.SaveAs("annual-report-final-accessible.pdf")

' Dispose of intermediate documents
report.Dispose()
coverPage.Dispose()
$vbLabelText   $csharpLabel

Çıktı


Gordugunuz gibi, iki kaynak belge simdi tek bir PDF/UA-uyumlu dosyada (kapak sayfasi mali raporun oncesinde) dijital imza ve kapsamli meta verilerle birlikte birlesmistir.

Lütfen dikkate alinYukaridaki iframe onizlemesi, birlesik belgenin gorunur icerigini gösterir. PDF/UA uyum kimligi, dijital imza ve gomulu meta veriler göstericide gorunmez. Birlesik cikisin yapisal uyumunu doğrulamak icin harici bir PDF/UA doğrulama araci kullanin.

PDF/UA donusumu, dijital imzalar, parola koruma ve PDF/A arsiv formatlamasi ile de uyumludur.


Gerçek-Dunya PDF/UA Uyum Kullanimi Örnek Olaylari Nelerdir?

PDF erisilebilirlik gereksinimleri her sektorde karsiniza cikar, ve ozel zorluklar sektorden sektore degisir.

Hukumet ajanslari en somut son tarihlerle karsi karsiyadir. ADA Baslik II'ye tabi eyalet ve yerel hukumetler, Nisan 2026 ve Nisan 2027 son tarihlerine karsi on binlerce miras belgelerini (toplanti gundemleri, izin basvurulari, zonlama haritalari ve daha fazlasi) işleme koymaktadir. Daha once ele alinan toplu düzeltme oruntuleri burada dogrudan uygulanabilir.

Hukuk organizasyonlari son derece buyuk miktarda PDF uretir: dosyalamalar, savunmalar, dava kayitlari, sözleşmeler ve kesif materyalleri. Belgeler elektronik olarak dosyalandiginda veya ozurlu olabilecek taraflarla paylasildiginda, erisilebilirlik gereksinimleri uygulanir. PDF/UA donusumunu bir belge yonetim sisteminin cikis asamasina dahil etmek, icerigin nasıl oluşturulmus olursa olsun uyumu saglar.

Yuksek eğitim kurumlari ders malzemeleri, syllabi, araştırma makaleleri, idari forumlar ve kurumsal raporlar uretmektedir. 508. Bölüm altinda (federal fon alicisi kurumlar icin) ve ADA 2. Bölüm (kamu kurumlari icin), bu belgelerin erisilebilir olmasi gerekmektedir. HTML'den PDF/UA'ya is akisi burada özellikle yararlidir, cunku cogu akademik içerik web icerigi olarak başlatilir veya sablonlardan uretilir.

Saglik organizasyonlari hasta beyanlari, sigorta aciklamalari, test sonuclari ve eğitim materyalleri uretir ve 508. Bölüm ve çeşitli eyalet yasalarina gore erisilebilir olmalidir. Bu belgeler genellikle tabular veri ve grafikler icerir, bu nedenle uygun tablo etiketlemesi ve görüntü alt metni özellikle onemlidir.

Finansal hizmetler firmalari hesap beyanlari, aciklama belgeleri, duzenleyici dosyalamalar ve raporlar uretir. Musterilere dağıtildiginda veya hukemet ajanslariyla dosyalandiginda bunlarin cogu erisilebilir olmalidir. Yuksek hacim toplu işlemeyi gerekli kilar.


Ikili PDF/UA ve PDF/A Uyumu Nasıl Elde Edersiniz?

Hem Arsiv Hem Erisilebilirlik Gerektiginde

PDF/A, belgelerin uzun vadede görüntülenebilir ve kopyalanabilir kalmasini saglayan arsiv standardidir. PDF/UA ise erisilebilirlik standardidir. Bazı organizasyonlar her ikisini de ister: kalıcı olarak korunan ve erişilebilir belgeler. Bu, kamu kayıt tutma, yasal arşivleme ve sağlık dokümantasyonu gibi alanlarda yaygındır.

PDF/A-3a uyum seviyesinin özellikle hem arşiv uyumu hem de tam erişilebilirlik gerektirdiğini unutmayın ("a" "erişilebilir" anlamına gelir). PDF/A-3a'ya ulaşırsanız, aslında hem PDF/A hem de PDF/UA gereksinimlerini karşılarsınız.

IronPDF her iki standardı da destekler:

:path=/static-assets/pdf/content-code-examples/tutorials/pdf-accessibility-csharp-pdfua-tutorial/pdfua-dual-compliance.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("government-record.pdf");

// Convert to PDF/UA for accessibility
pdf.ConvertToPdfUA();

// Set required metadata
pdf.MetaData.Title  = "Public Hearing Minutes - January 2025";
pdf.MetaData.Author = "City Clerk's Office";

// Convert to PDF/A for archival compliance
pdf.SaveAsPdfA("government-record-archive.pdf");
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("government-record.pdf")

' Convert to PDF/UA for accessibility
pdf.ConvertToPdfUA()

' Set required metadata
pdf.MetaData.Title = "Public Hearing Minutes - January 2025"
pdf.MetaData.Author = "City Clerk's Office"

' Convert to PDF/A for archival compliance
pdf.SaveAsPdfA("government-record-archive.pdf")
$vbLabelText   $csharpLabel

Çıktı


Belge, aynı anda hem arşiv (PDF/A) hem de erişilebilirlik (PDF/UA) gereksinimlerini karşılayan bir uyum seviyesi olan PDF/A-3a olarak kaydedildi.

PDF/UA ile Dijital İmzaları Birleştirme

Kimlik doğrulaması da gerektiren erişilebilir belgeler, PDF/UA dönüşümünü dijital imzalarla birleştirebilir. Önce PDF/UA dönüşümünü uygulayın, ardından belgeyi imzalayın:

:path=/static-assets/pdf/content-code-examples/tutorials/pdf-accessibility-csharp-pdfua-tutorial/pdfua-digital-signature.cs
using IronPdf;
using IronPdf.Signing;

PdfDocument pdf = PdfDocument.FromFile("contract.pdf");
pdf.ConvertToPdfUA();

pdf.MetaData.Title = "Service Agreement - Executed Copy";

// Apply a digital signature to the accessible document
var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);

pdf.SaveAs("contract-accessible-signed.pdf");
Imports IronPdf
Imports IronPdf.Signing

Dim pdf As PdfDocument = PdfDocument.FromFile("contract.pdf")
pdf.ConvertToPdfUA()

pdf.MetaData.Title = "Service Agreement - Executed Copy"

' Apply a digital signature to the accessible document
Dim signature As New PdfSignature("certificate.pfx", "password")
pdf.Sign(signature)

pdf.SaveAs("contract-accessible-signed.pdf")
$vbLabelText   $csharpLabel

Evrimleşen Standartlar için Belgeleri Geleceğe Hazırlama

Erişilebilirlik standartları evrimleşmeye devam ediyor. WCAG 2.2 2023'te yayımlandı ve WCAG 3.0 üzerinde çalışmalar sürüyor. PDF/UA-2, modern web standartlarına PDF/UA-1'den daha yakın hizalanıyor. Belgelerinizin akışlarında şimdi PDF/UA uyumunu yerleştirerek, standartlar gelişirken güncellenebilecek bir temel oluşturuyorsunuz, daha sonrasında tam bir yeniden kurulum yapmaktan kaçınıyorsunuz.

Erişilebilir belge altyapısına yapılan yatırım, uyumluluğun ötesinde getiriler sağlar. Uygun şekilde etiketlenmiş PDF'ler daha fazla aranabilir, mobil cihazlarda daha iyi yeniden akış sağlar, daha iyi metin çıkarma sonuçları üretir ve çeşitli PDF görüntüleyiciler ve platformlar arasında daha güvenilir çalışır. Erişilebilirlik sadece yasal bir gereklilik değildir. Daha iyi mühendisliktir.


Sonraki Adımlar

PDF/UA uyumu tek bir onay kutusu değildir. Düzenleyici anlayışı, uygun HTML yazımı, programlı dönüştürme, otomatik doğrulama ve mevcut arşivlerin ölçeklenmiş düzeltmesi arasında geniş bir alanı kapsar. Ancak, büyük belge kütüphanelerine ve sıkı son teslim tarihlerine sahip kuruluşlar için bile yönetilebilir hale getiren araçlar ve şemalar vardır. IronPDF, etiketli PDF motoru, SaveAsPdfUA ve RenderHtmlAsPdfUA metodları, toplu işleme yetenekleri, ve herhangi bir erişilebilir PDF .NET hattının temelini oluşturan çapraz platform .NET desteği sağlar. İster bir hükümet sözleşmesi için 508. Bölüm PDF C# uyumuna, kurumsal bir raporlama platformu için WCAG PDF uyumluluğu C# 'ya, ister zorlu bir teslim tarihi olan bir belge iyileştirme projesi için PDF/UA C# dönüşümüne ihtiyaçınız olsun, bu eğitimdeki desenler size kanıtlanmış bir çerçeve sunar.

SaveAsPdfUA 'in oluşturduğu şeyi anlamak için tek dosya dönüşümüyle başlayın. Çıktıyı veraPDF ve Matterhorn Protokolü ile doğrulayın. Semantik öğeler ve uygun başlık hiyerarşisi kullanan erişilebilir HTML şablonları oluşturun. Ardından mevcut arşiviniz için toplu dönüştürme hattı ile ölçeklendirin. PDF/UA'yı PDF/A arşiv uyumluluğu, dijital imzalar, meta veri yönetimi ve PDF sıkıştırma ile birleştirerek kuruluşunuzun karşılaştığı her gereksinimi karşılayan belge iş akışları oluşturun.

Daha derin bir referans için, IronPDF PDF/UA kılavuzu API yüzeyini ayrıntılı olarak kapsar ve her iki standarda aynı anda ihtiyaçınız varsa PDF/A arşivleme eğitimi tam uyum iş akışını adım adım gösterir.

Yapmaya hazır mısınız? IronPDF İndir ve ücretsiz deneme ile deneyin. Aynı kütüphane, tek dosya erişilebilirlik dönüşümünden kurumsal ölçekli düzeltme hatlarına kadar her şeyi işler. Belirli kullanım durumunuz için uygulama, uyum stratejisi veya mimari hakkında sorularınız varsa, mühendislik destek ekibimize ulaşın. Her ölçekten ekiplerin belge erişilebilirliğini doğru yapmalarına yardımcı olduk ve size de aynısını yapmaktan memnuniyet duyarız.

Sıkça Sorulan Sorular

PDF/UA nedir ve neden önemlidir?

PDF/UA (Evrensel Erişilebilirlik), engellilerin PDF içeriğine erişim sağladığından ve onunla etkileşime girebildiğinden emin olmak için erişilebilir PDF belgeleri için bir ISO standardıdır. 508. Bölüm ve AB Erişilebilirlik Yasası gibi erişilebilirlik düzenlemeleri ile uyumluluk için çok önemlidir.

Mevcut PDF'leri C# kullanarak PDF/UA'ya nasıl dönüştürebilirim?

Var olan PDF'leri, gerekli etiket ve yapıları gömerek belgelerinizin erişilebilirlik standartlarına uyduğunu garanti eden IronPDF'in SaveAsPdfUA metodunu kullanarak C# dilinde PDF/UA'ya dönüştürebilirsiniz.

IronPDF, HTML'yi erişilebilir PDF/UA'ya dönüştürmek için hangi araçları sağlar?

IronPDF, geliştiricilerin HTML içeriğini PDF/UA erişilebilirlik standartlarına uyumlu etiketli PDF'lere dönüştürmesine olanak tanıyan RenderHtmlAsPdfUA metodunu sunar.

IronPDF, büyük ölçekli PDF/UA iyileştirme projelerini yürütebilir mi?

Evet, IronPDF, büyük belge arşivlerini paralel işlem hatları aracılığıyla toplu bir şekilde iyileştirmeyi destekleyerek kapsamlı PDF/UA iyileştirme projelerini verimli bir şekilde yönetmenizi sağlar.

IronPDF kullanarak PDF/UA uyumluluğunu nasıl doğrularım?

IronPDF, Matterhorn Protokolü'ne karşı PDF/UA uyumluluğunu doğrulamanıza yardımcı olan bir araç olan veraPDF ile entegre edilir ve belgelerinizin erişilebilirlik standartlarına uyduğunu garanti eder.

IronPDF hangi yaygın PDF/UA uyumluluk sorunlarını çözmenize yardımcı olabilir?

IronPDF, PDF/UA belgelerinde eksik belge başlıkları, eksik yazı tipi gömülmeleri ve bozuk başlık hiyerarşileri gibi yaygın uyumluluk sorunlarını düzeltmenize yardımcı olabilir.

IronPDF, farklı .NET ortamları ile uyumlu mu?

Evet, IronPDF, .NET 6+, .NET Framework 4.6.2+ ve .NET Standard 2.0 ile uyumludur ve Windows, Linux, macOS, Docker, Azure ve AWS'de dağıtımı destekler.

IronPDF kullanarak PDF/UA belgeleri dijital imzalarla nasıl birleştirilebilir?

Iron PDF, PDF/UA uyumlu belgeleri dijital imzalarla birleştirmenizi, böylece belge güvenliğini ve uyumluluğu artırmanızı sağlar.

Nisan 2026 ve 2027 ADA Başlık II son tarihleri ne kadar önemlidir?

Bu son tarihler, belirli kamuya açık uygulamaların ADA Başlık II altında güncellenmiş erişilebilirlik standartlarına uyması gerektiği zamanı belirler ve bu nedenle IronPDF gibi araçlar geliştiricilerin belgelerinin bu gerekliliklere uygun olmasını sağlamak için önemlidir.

IronPDF, PDF/UA belgelerinde meta veri iş akışlarına yardımcı olabilir mi?

Evet, IronPDF, erişilebilirlik ve uyumluluk sağlamak adına meta veri iş akışlarını PDF/UA belgelerine entegre etmeyi 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.