C#'de PDF Erişilebilirliği: 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ı artık .NET geliştiricileri için gelecekte bir endişe değildir. Mevcut, son tarihler gerçek ve cezalar uygulanabilir. PDF/UA C# uyumu, erişilebilir PDF .NET üretimi, 508. Bölüm PDF C# uygunluğu ve WCAG PDF uyumu C# artık belge iş akışları üreten, dönüştüren veya dağıtan herhangi bir ekip için rutin gerekliliklerdir. IronPDF, eski arşivleri dönüştürürken veya çalışma zamanında HTML'den erişilebilir belgeler oluştururken, PDF çıktınızınPDF/UA-1vePDF/UA-2standartlarıyla uyumlu olmasını sağlamak için etiketli PDF motoru, SaveAsPdfUA ve RenderHtmlAsPdfUA yöntemleri, toplu dönüştürme yetenekleri ve çapraz platform .NET çalışma zamanı desteği sunar.

Kısa-Özet: Hızlı Başlangıç Kılavuzu

Bu öğretici, PDF/UA erişilebilirliği için düzenleyici bağlamdan uygulamaya, doğrulamaya ve ölçeklendirene kadar her şeyi kapsar.

  • Kimler için: Uygulamalarda belge erişilebilirliğinden sorumlu .NET geliştiricileri, mimarlar ve uyum liderleri. Bu, 508. Bölüm denetimlerine hazırlanan hükümet yüklenicilerini, erişilebilir raporlama hatları oluşturan SaaS ekiplerini ve ADA II. Başlık son tarihlerine karşı belge uyarlama projeleri planlayan girişim mimarlarını içerir.
  • Oluşturacağınız şeyler: SaveAsPdfUA ile mevcut PDF'lerdenPDF/UA-1vePDF/UA-2dönüştürme, RenderHtmlAsPdfUA ile erişilebilir HTML'den PDF oluşturma, ConvertToPdfUA ile bellek içi dönüştürme, paralel işleme ve hata yönetimi içeren toplu düzeltme boru hatları ve veraPDF ile Matterhorn Protokolünü kullanan doğrulama iş akışları.
  • Nerede çalışır: .NET 6+, .NET Framework 4.6.2+, .NET Standart 2.0. Windows, Linux, macOS, Docker, Azure ve AWS. Tüm render işlemleri, dış tarayıcı bağımlılığı olmaksızın IronPDF'in yerleşik Chromium motorunu kullanır.
  • Bu yaklaşımı ne zaman kullanmalısınız: PDF dosyalarınızın Section 508, ADA Title II (Nisan 2026/2027 son tarihleri), AB Erişilebilirlik Yasası (Haziran 2025) veya kurumsal WCAG 2.1 Seviye AA politikalarının belirlediği erişilebilirlik standartlarına uygun olması gerektiğinde.
  • Teknik olarak neden önemlidir: IronPDF'in Chromium render motoru, HTML semantik yapıyı dönüştürme yoluyla korur, başlıklar, listeler, tablolar ve alternatif metinleri PDF yapısal elemanlarına doğrudan eşleyerek etiketlenmiş PDF'ler üretir. Mevcut dosyalar için tek yöntemli SaveAsPdfUA dönüştürme ile birleştirildiğinde, manuel etiket manipülasyonu yapmadan hem oluşturma hem de düzeltme yoluna sahip olursunuz.

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

  1. IronPDF aşağıdaki NuGet Paket Yöneticisi ile yükleyin

    PM > Install-Package IronPdf
  2. Bu kod parçacığını kopyalayın ve ç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 için dağıtım yapın

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

    arrow pointer

IronPDF'yi satın aldıktan veya 30 günlük denemeye kaydolduktan sonra, başvurunuzda lisans anahtarınızı ekleyin.

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

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

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

İlk Adım:
green arrow pointer
NuGet NuGet ile yükleyin

PM >  Install-Package IronPdf

NuGet'te hızlı kurulum için https://www.nuget.org/packages/IronPdf'i kontrol edin. 10 milyonun üzerinde indirme ile, C# ile PDF geliştirmeyi dönüştürüyor. DLL veya Windows yükleyici'yi de indirebilirsiniz.

İçindekiler


PDF/UA nedir ve neden şimdi zorunlu?

PDF erişilebilirliği, ekiplerin er geç gerçekleştirdiği bir şeydi. En iyi uygulamalar arasında, kesin bir gereklilik değil. Bu değişti. Kesişen birden fazla düzenleme artık PDF/UA uyumunu acil hale getiriyor. Uyumsuzluğun sonuçları, aylar veya yıllar önce yazılımları tarafından üretilmiş belgeler üzerinden denetim bulgularından hukuki dava açılmasına kadar uzanır.

Yasal Dönüm Noktası

Üç yasal gelişme, PDF/UA uyumunu acil hale getirmek üzere birleşti.

PDF Erişilebilirlik Uyumluluk Son Tarihleri zaman çizelgesi, Bölüm 508'i devam eden bir gereklilik, AB Erişilebilirlik Yasası'nı Haziran 2025'te yürürlüğe girecek, ADA Başlık II'yi büyük yargı bölgeleri için Nisan 2026'da ve ADA Başlık II'yi küçük yargı bölgeleri için Nisan 2027'de yürürlüğe girecek olarak göstermektedir.

Bunlar teorik riskler değildir. Erişilebilirlik davaları her yıl artıyor ve mahkemeler sürekli olarak dijital belgelerin engellilik ayrımcılığı yasası kapsamına girdiğine karar verdi. Erişilebilirliği gelecekteki bir mesele olarak ele alan kuruluşlar, yazılımlarının aylar ya da yıllar önce ürettiği belgelerle ilgili olarak şikayetlere, denetim bulgularına ve davalara karşı kendilerini savunmak zorunda kalıyorlar.

Rehabilitation Act Bölüm 508, ABD federal kurumlarının ve sözleşmeli işçilerinin yıllardır erişilebilir elektronik bilgi teknolojisi üretmelerini zorunlu kıldı. PDF'ler açıkça kapsanır. Yazılımınız bir federal kurum tarafından tüketilen veya adına üretilen belgeler oluşturuyorsa, bu belgeler erişilebilir olmalıdır. Adalet Bakanlığı, şikayetleri araştırır ve uyumsuz kuruluşlara karşı yaptırım uygulamalarını yürütür.

ADA Başlık II, erişilebilirlik yükümlülüklerini eyalet ve yerel yönetimlere uzatır. Adalet Bakanlığı'nın 2024'te yayımladığı son kural, 50.000'den fazla nüfusa sahip varlıklar için 2026 Nisan, daha küçük varlıklar için 2027 Nisan son tarihlerini belirledi. Kapsam geniştir: hükümet web sitesinde yayımlanan, e-posta ile dağıtılan veya bileşen odaklı bir uygulama yoluyla oluşturulan her PDF, WCAG 2.1 Seviye AA'yı karşılamalıdır. Buna toplantı gündemleri, bütçe belgeleri, izin başvuruları, mahkeme kayıtları, imar haritaları ve konsey tutanakları gibi birçok belge türü dahildir.

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ı zorunlu kıldı. AB müşterilerine hizmet veren yazılım şirketleri için, uygulamalarınızın ürettiği belgelerin erişilebilir olması gerekir. Bu yalnızca hükümetle sınırlı değildir; geniş bir kategori yelpazesindeki özel sektör ürün ve hizmetleri için geçerlidir.

PDF/UA'nın Gerçekten Gerektirdikleri

PDF/UA (ISO 14289), destek teknolojilerinin bir PDF'yi güvenilir bir şekilde işlemesini sağlamak için bir PDF'nin tatmin etmesi gereken teknik gereklilikleri tanımlar. Uyumlu bir belgede şunlar olmalıdır:

Eksiksiz bir etiket yapısı. Anlamlı her içerik parçası, standart PDF etiketleri kullanılarak mantıksal bir yapı ağacında temsil edilmelidir: başlıklar için <h1> ile <h6> başlıklar için, <p> paragraflar için, <Table> veri tabloları için, <Figure> resimler için ve <l> listeler için. Tamamen dekoratif olan içerikler, ekran okuyucuların atlaması için bir eser olarak işaretlenmelidir.

Doğru okuma sırası. Etiket ağacı, içeriğin okunması gereken mantıksal sırayı yansıtmalı, sayfadaki görsel sırası değil. Çok kolonlu düzenler veya kenar çubukları olan belgeler için bu ayrım önemli ölçüde önemlidir.

Metin dışı içerik için alternatif metin. Bilgi aktaran her resim, grafik ve diyagramın <Figure> etiketine alternatif metin eklenmelidir. Dekoratif resimler eser olarak işaretlenmelidir.

Doğru meta veriler. Belge, doğal dilini (örneğin, İngilizce için "en") açıklamalı, anlamlı bir başlık olmalı ve XMP meta verisinde PDF/UA tanımlayıcısına sahip olmalıdır.

Unicode eşlemeleriyle gömülü yazı tipleri. Tüm yazı tipleri gömülü olmalı ve Unicode karakter eşlemeleri (ToUnicode CMap) mevcut olmalıdır, böylece metin doğru bir şekilde çıkarılıp yüksek sesle okunabilir.

PDF/UA ve WCAG: İki Standart Nasıl Birlikte Çalışır

Geliştiriciler sıklıkla PDF/UA mı, yoksa WCAG mi hedeflemeleri gerektiğini soruyor. Cevap her ikisi, çünkü farklı katmanlarda çalışırlar.

WCAG (Web İçeriği Erişilebilirlik Yönergeleri), web içeriği için erişilebilirlik ilke ve başarı kriterlerini tanımlar. Section 508, ADA Title II ve EAA tarafından başvurulan standarttır. WCAG, erişilebilir içeriklerin ne başarması gerektiğini söyler: algılanabilir, işletilebilir, anlaşılabilir ve sağlam.

PDF/UA, bu hedeflere PDF dosyasının içinde nasıl ulaşılacağını söyler. Bu, teknik uygulama standardıdır. PDF/UA'ya uygun bir PDF, belge içeriğine uygulanan WCAG başarı kriterlerini karşılayacaktır. İki standart birbirini tamamlayıcıdır, rekabetçi değildir. Pratikte, iş akışınızın etiketlenmiş, iyi yapılandırılmış PDF'ler ürettiği ve PDF/UA doğrulamasını geçtiği sürece, WCAG uyumluluğu açısından güçlü bir durumda olursunuz.

Gerçekçi Geriye Dönük Gereklilik

Kuruluşları şaşırtan bir detay: bu yönetmelikler yalnızca yeni belgeler için geçerli değildir. Web sitelerinde yayımlanan veya uygulamalar aracılığıyla dağıtılan mevcut PDF'ler de onarılmayabilir. ADA Title II, eyalet ve yerel yönetimler tarafından yayımlanan web içeriğinin (PDF'ler dahil) WCAG 2.1 Seviye AA'yı karşılamasını gerektirir. Eski belgeler için tek bir muafiyet yoktur.

Bu nedenle programatik dönüştürme araçları önemlidir. Binlerce PDF'nin elle onarılması pratik değildir. Bu eğitimin ilerleyen bölümlerinde toplu düzeltme şablonlarını ele alacağız.


PDF/UA Versiyonları Arasındaki Farklar Neler?

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

PDF/UA-1, 2012'de yayımlandı ve hala en geniş şekilde benimsenmiş versiyondur. PDF 1.7 spesifikasyonu üzerine kurulur ve etiketli PDF yapısı, meta veriler, yazı tipleri ve destek teknolojisi uyumluluğu için kapsamlı bir gereklilik seti tanımlar. Çoğu doğrulama aracı, veraPDF ve Adobe Acrobat'ın erişilebilirlik denetleyicisi dahil, temel hedef olarak PDF/UA-1'i destekler.

Yeni bir erişilebilirlik projesine başlıyorsanız ve mevcut araçlar ve iş akışları ile geniş kapsamlı uyumluluk gerekiyorsa,PDF/UA-1güvenli bir varsayılan değerdir. Section 508, ADA Title II ve Avrupa Erişilebilirlik Yasası'nın gerekliliklerini karşılar.

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

PDF/UA-2, 2024'te yayımlandı ve önemli bir güncelleme temsil eder. PDF 2.0 spesifikasyonu (ISO 32000-2:2020) üzerine kurulu olup, modern PDF özelliklerinin geliştirilmiş yönetimini tanıtır, örneğin açıklamalar, form alanları, multimedya içeriği ve karmaşık belge yapıları.PDF/UA-2ayrıca gelişen web erişilebilirliği standartlarıyla daha iyi uyum sağlar.

IronPDF her iki versiyonu da destekler. Hangi birini hedefleyeceğinizi, aşağıda kod örneklerinde gösterileceği gibi, dışa aktarma sırasında belirleyebilirsiniz.

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

WTPDF'ye, yani İyi Etiketlenmiş PDF'ye referanslar görebilirsiniz. PDF Association tarafından yayımlanan WTPDF, doğru şekilde etiketlenmiş PDF'ler oluşturma konusunda teknik rehberlik içeren bir belgedir. Ayrı bir standart değildir, fakatPDF/UA-2ve PDF 2.0'ın pratik bir yardımcısıdır. WTPDF, etiket kullanımı, yapı elemanı eşlemesi ve içerik etiketlemesi konusunda PDF/UA spesifikasyonunun kendisinin tanımladıklarının ötesine geçen ayrıntılı kurallar sağlar. Bunu, resmi standardın yanı sıra oturan uygulama rehberi olarak düşünün.

Hangi Versiyonu Hedeflemelisiniz?

PDF/UA-1 PDF/UA-2
Yayımlandı 2012 2024
Temel spesifikasyon PDF 1.7 (ISO 32000-1) PDF 2.0 (ISO 32000-2)
Mevzuat kapsamı Section 508, ADA Başlık II, AB Erişilebilirlik Yasası Aynı yönetmeliklerle ileriye dönük uyumlu
Doğrulama araçları veraPDF, Adobe Acrobat Pro, PAC 2024 veraPDF (gelişen destek)
Form alanı semantikleri Standart Gelişmiş (daha zengin erişilebilirlik meta verileri)
En iyi Bugünkü projelerin çoğu için PDF 2.0 özellikleri gerektiren yeni sistemler için

Bugün çoğu proje için, PDF/UA-1 doğru seçimdir. En geniş araç desteğine sahiptir, en olgun doğrulama ekosistemine sahiptir ve mevcut tüm yasal gereklilikleri karşılar. PDF 2.0 özelliklerine, örneğin geliştirilen form alanı anlamı, geliştirilmiş açıklama yönetimi veya ortaya çıkmakta olan standartlarla ileri uyumluluk ihtiyaç duyuyorsanız PDF/UA-2'yi seçin.

IronPDF varsayılan olarak PDF/UA-1'i varsayıyor ve PDF/UA-2'ye geçişi kolaylaştırıyor.


HTML'den Erişilebilir PDF'ler Nasıl Üretirsiniz?

Uygulamanız HTML içeriğinden PDF üretiyorsa (raporlar, faturalar, açıklamalar, yazışmalar), bu işi en baştan erişilebilirliğe uygun yapmak için bir fırsatınız var. IronPDF'nin RenderHtmlAsPdfUA yöntemi, HTML'yi doğrudan PDF/UA uyumlu çıktıya dönüştürür ve sonucun kalitesi büyük ölçüde HTML girdinizin kalitesine bağlıdır.

Erişilebilirliğe Hazır HTML Yazımı

Erişilebilir HTML, erişilebilir etiketli PDF yapısına doğal olarak çevrilir. En çok önemli olan uygulamalar şunlardır:

Anlamsal 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>'yi, veri tabloları için <nav>, <main>, <article> ve <section> sayfa yapısı için.

Anlamlı her resim için alternatif metin sağlayın. Tüm alt etiketlerinde <img> özniteliğini kullanın. Dekoratif görüntüler için, görüntünün bir artefakt olarak değerlendirilmesi gerektiğini belirtmek üzere boş bir alt="" kullanın.

Mantıklı bir başlık hiyerarşisi koruyun. Tek bir <h1> ile başlayın ve seviyeleri atlamayın. <h1>'den <h3>'e atlayan bir belge, PDF çıktısında bozuk bir başlık ağacı oluşturacaktır.

Form alanlarını etiketleyin. HTML'nizde form öğeleri varsa, her girişi for özniteliğini kullanarak bir <label> öğesiyle ilişkilendirin.

Belge dilini ayarlayın. lang özniteliğini <html> öğenize ekleyin (ör. <html lang="en">).

RenderHtmlAsPdfUA ile HTML'yi PDF/UA'ya dönüştürme

İşte erişilebilir bir HTML belgesini doğrudan PDF/UA'ya render eden tam bir örnek:

Semantic başlıklar, veri tablosu, sıralı liste ve alternatif metinli bir resim içeren bir HTML dizesini doğrudan bir PDF/UA uyumlu belgeye render eder.

: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örüldüğü gibi, semantik HTML elemanları (başlıklar, sütun başlıkları ile veri tablosu, sıralı liste ve alternatif metinli resim), üretilen çıktıda uygun PDF/UA yapı etiketleri olarak korunur.

Dönüştürme Yoluyla Yapıyı Korumak

IronPDF, Google Chrome ve Microsoft Edge'i destekleyen teknoloji olan gömülü bir Chromium render motoru kullanır. Bu erişilebilirlik için önemlidir, çünkü Chromium zaten HTML semantiklerini anlar. IronPDF HTML'nizi PDF/UA'ya render ettiğinde, HTML elemanlarını onların PDF etiket eşdeğerlerine eşler:

<h1> ile <h6> arası, <h1> ile <h6> arası başlık etiketlerine dönüştürülmelidir. <p>, <p> paragraf etiketlerine dönüşür. <table>, <tr>, <th> ve <td>, <Table>, <tr>, <th> ve <td> yapı öğelerine dönüştürülmelidir. <ul> ve <ol>, <l> (Liste) olur ve <li> (Liste Öğesi) alt öğelerine sahip olur. <img> alternatif metin ile <Figure> olur ve /Alt girişi eklenir.

Anlamsal HTML öğelerinin (h1, table, ul, alt özniteliğine sahip img) karşılık gelen PDF etiket ağacı yapısına (H1, Table, List, Figure) nasıl eşlendiğini gösteren HTML'den PDF/UA Yapı Eşleme diyagramı

Bu eşleme otomatik olarak gerçekleşir. PDF etiket ağacını manuel olarak oluşturmanız veya herhangi bir yapı elemanı kodu yazmanız gerekmez.

Erişilebilirliği Bozan Yaygın HTML Şablonları

Genellikle temiz HTML yazan geliştiriciler bile bazen erişilebilir olmayan PDF çıktısı üreten şablonlar kullanır. Bunlara dikkat edin:

Her şey için <div> kullanımı. Tamamen stilsiz <div> öğelerinden oluşturulan bir belge, düz ve yapılandırılmamış bir etiket ağacı oluşturur. Ekran okuyucular bunu anlamlı bir şekilde gezemez. Bunun yerine semantik elemanlar kullanın.

CSS ızgaraları veya flexbox ile tabloların simülasyonu. CSS kullanılarak görsel bir ızgara düzeninde sunulan ancak gerçek <table> öğeleri içermeyen veriler, PDF'de doğru tablo etiketleri oluşturmaz. İçerik tablo verisiyse, gerçek <table> kullanın.

Başlık düzeyleri atlanıyor. <h1>'den <h3>'e atlamak, başlık hiyerarşisinde bir boşluk yaratır ve erişilebilirlik denetleyicileri bunu bir hata olarak işaretler.

Alt metni olmayan resimler. <img> özniteliği eksik olan herhangi bir alt etiketi, alternatif metni olmayan bir <Figure> etiketi oluşturur ve bu da doğrudan bir PDF/UA ihlalidir.

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


PDF/UA-1vePDF/UA-2Arasından 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 belirgin bir nedeniniz yoksa, varsayılanı kullanmaya 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 şimdiPDF/UA-1uyumlu, tam etiket yapısı ve XMP meta verisindeki ISO 14289-1 tanımlayıcısı gömülü.

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

PDF/UA-2 gerektiğinde, 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/UA-2olarak, form alanları için daha zengin erişilebilirlik meta verileri ile PDF 2.0 iç yapı kullanılarak dışa aktarılmış.

Lütfen dikkate alınYukarıdaki önizleme iframe'inde belgenin görsel içeriği görüntülenir.PDF/UA-2uygunluk tanımlayıcısı ve ISO 14289-2 XMP meta verileri, göstericide görünür değildir. Meta verilerin mevcut olduğunu doğrulamak için harici bir PDF/UA doğrulayıcı kullanın.

Ayrıca bellekte dönüştürüp ayrı 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. Aşağı akış araçlarınızın PDF 2.0'ı desteklediğini doğrulamadan geçiş yapmayın.

PDF/UA-2Ne Zaman Kullanılır?

Belgelerinizin PDF/UA-1'in tam olarak ele alayamayacağı PDF 2.0 özelliklerine dayanıyorsa PDF/UA-2'yi düşünün. Bu, daha zengin semantik bilgi ile gelişmiş form alanı erişilebilirliği, yorumlar, işaretleme ve inceleme iş akışları için geliştirilmiş açıklama yönetimi, PDF'lere gömülü multimedya içeriği için daha iyi destek ve PDF 2.0 üzerinde inşa edilen gelişen erişilebilirlik standartları ile ileriye dönük uyumluluk içerir.

Bugün çoğu uyumluluk projesi içinPDF/UA-1işi halleder. PDF/UA-2, çıktıyı eski araçlarda işlemek zorunda kalmayacak 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. Çıktının aslında standarda uyduğunu doğrulamanız gerekir. Doğrulama, geliştirme sırasında gözden kaçması kolay sorunları yakalar ve uyum denetimleri için gereken belgelenmiş kanıtları sağlar.

veraPDF ile Doğrulama

veraPDF, PDF/UA ve PDF/A standartlarına karşı PDF'leri kontrol etmek için ücretsiz, açık kaynaklı bir komut satırı ve GUI aracıdır. Dönüştürülen dosyayı ve ua1 profilini kontrol etmek için iletin:

Girdi

IronPDF ile oluşturulan PDF/UA belgesi doğrulamaya hazır. Bu, SaveAsPdfUA'den alınan çıktıdır.

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

Çıktı

PDF/UA doğrulamasını geçtiğini gösteren veraPDF Uygunluk Denetleyicisi: output-quarterly-report-accessible.pdf dosyasında 136 kontrol, 0 hata

136 kontrol başarıyla geçti, 0 hata. IronPDF çıktısı ISO 14289-1 ile tamamen uyumludur. HTML rapor, her Matterhorn Protokol kontrol noktasını ve sonucunu listeler. Üretime ulaşmadan önce gerilemeleri yakalamak için CLI'yi CI/CD boru hattınıza entegre edin.

Matterhorn Protokolünü Anlama

Matterhorn Protokolü,PDF/UA-1uyumu için bir PDF'nin nasıl kontrol edileceğini tam olarak tanımlayan PDF Derneği tarafından yayınlanan bir dizi test koşuludur. Kontrolleri 136 özel hata durumunu kapsayan 31 kontrol noktasına ayırır. Her hata durumuPDF/UA-1spesifikasyonundaki bir maddeyle eşleşir.

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

PDF/UA Doğrulama İş Akışı diyagramı, veraPDF Validator'a beslenen bir PDF Belgesini göstermektedir; başarılı olduğunda PDF/UA Uyumlu'ya, başarısız olduğunda ise Matterhorn Protokolü Analizi'ne yönlenir; burada Kontrol Noktaları 01 Belge Meta Verileri, 06 Yazı Tipi Gömme ve 13 Alternatif Metin bulunur; ardından Düzeltmeleri Uygula ve İyileştirme ile yeniden doğrulama döngüsü gelir

Matterhorn Protokolünü anlamak, doğrulama sonuçlarını yorumlamanıza ve düzeltme önceliğini belirlemenize yardımcı olur. Tüm hata durumları eşit derecede kritik değildir. Eksik bir belge başlığı beş dakikalık bir düzeltmedir. Tamamen etiketlenmemiş bir belge tam dönüştürme gerektirir.

Ortak Uyumsuzluk Hataları ve Bunları Nasıl Düzeltiriz

PDF/UA çıkışı doğrulanırken en sık karşılaşılan sorunlar şunlardır:

Eksik belge başlığı. Belge metadata Giriş kutucuğu bir Başlık içermelidir ve ViewerPreferences sözlüğü başlığın (dosya adı değil) pencere başlık çubuğunda gösterilmesi gerektiğini belirtmelidir. Kaydetmeden önce metaveriyi ayarlayarak bunu 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ünden geçiyor, başlık PDF görüntüleyici penceresinin başlık çubuğunda gösteriliyor, dosya adı yerine.

Figürlerde eksik alt metin. Anlam ileten herhangi bir görüntü alternatif metne sahip olmalıdır. Kaynak HTML'ye almadan önce ekleyin veya kaynak PDF'ye doğrudan düzeltmeler yapın.

Yanlış başlık hiyerarşisi. Atlanmış veya sıra dışı başlık seviyelerine sahip bir belge doğrulamayı geçemez. Dönüştürmeden önce kaynağınızdaki başlık yapısını düzeltin.

Gömülmemiş veya eksik Unicode eşlemeleri olan yazı tipleri. Bu genellikle eski PDF'ler ile çalışanlar için oluşur. IronPDF, dönüştürme sırasında font gömme işlerini ele alır, ancak çok eski veya bozuk kaynak dosyalar özel dikkat gerektirebilir.

Fontlar, Renk Uzayları ve Metadata Gereksinimleri

PDF/UA, otomatik araçların kontrol ettiği görsel sunumla ilgili belirli 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 uzayları, cihazdan bağımsız olmalı veya bir ICC profiline sahip olmalıdır. Form alanları doğru etiketler ve açıklamalar içermelidir.

IronPDF, dönüştürme sırasında yazı tipi gömme, renk uzayı ve yapısal gereksinimleri otomatik olarak ele alır. Dil ve metadata, bu öğretici boyunca örneklerde gösterildiği gibi kodda ayarlamak için basittir.

Otomasyonla Yakalanamayan Manuel Kontroller

Erişilebilirliğin bazı yönleri insan incelemesi gerektirir. Otomatik doğrulayıcılar bir görüntünün alt metne sahip olduğunu söyleyebilir, ancak alt metnin gerçekten yararlı olup olmadığını yargılayamaz. Başlıkların var 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 belgeler için iş akışınıza manuel bir inceleme adımı ekleyin. Alt metnin görüntü içeriğini doğru bir şekilde tanımlayıp tanımlamadığını, okuma sırasının satır bazında tüketildiğinde mantıksal bir anlam içerip içermediğini, bağlantı metninin tanımlayıcı olup olmadığını (sadece "buraya tıkla" değil) ve dil bildirimlerinin belgenin gerçek içeriğiyle eşleşip eşleşmediğini kontrol edin.

Ek Doğrulama Araçları

veraPDF otomatik PDF/UA uyumluluk kontrolü için standarttır, ancak diğer araçlar yanında yararlı olabilir:

Adobe Acrobat Pro Araçlar > Erişilebilirlik > Tam Kontrol altında bir erişilebilirlik kontrolörü içerir. Geliştirme sırasında hızlı görsel nokta kontrolleri için faydalıdır ve insan tarafından okunabilir bir rapor oluşturur.PDF/UA-1için veraPDF kadar kapsamlı değildir, ancak çoğu ekipte yaygın olarak bulunur.

PAC 2024 (PDF Erişilebilirlik Denetleyicisi, Windows için ücretsiz) PDF Derneği'nden görsel etiket ağaç kontrolü ve PDF/UA ve WCAG'a karşı uyumluluk kontrolü sunar. Okuma sırasını görsel olarak kontrol etmek ve başlık yapısını metin raporu yerine görsel olarak incelemek için özellikle faydalıdır.

Acrobat Reader, Doğrudan görüntüleyiciden Etiketler panelini Görünüm > Göster/Gizle > Navigasyon Panelleri > Etiketler altında açmanıza olanak tanır. Bu bir doğrulayıcı değil, ancak Acrobat Pro'yu kullanmadan yapı ağacının hızlı bir görsel incelemesini sağlar.

En güvenilir yaklaşım, yüksek öncelikli belgeler için manuel bir geçişte veraPDF'i otomatik CI/CD kontrolleri için PAC veya Acrobat ile birleştirmektir.


Aykırı PDF'leri Ölçekli Olarak Nasıl Düzeltirsiniz?

Büyük belge kütüphanelerine sahip kuruluşlar için bireysel dosya dönüştürme pratik değildir. Bir denetim, arşivinizin erişilebilirlik standartlarına uymadığını ortaya çıkardığında veya bir teslim tarihi yaklaşırken ve binlerce belgeleri işlemeniz gerektiğinde, minimum manuel müdahale ile hacmi ele alabilen programatik bir yaklaşım gereklidir.

Belge Kütüphanelerini PDF/UA'ya Yığın Dönüştürme

IronPDF inişli çıkışlı çalışmayı destekler, yani birden fazla belgeyi paralel olarak işleyebilirsiniz. Birlikte çalışabilirlik kontrolü, hata yönetimi ve ilerleme raporlaması içeren bir üretim aşamasında yığın dönüştürme uygulaması burada:

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


İşlenmiş bir dosya içinPDF/UA-1çıktısı. Desen, eşzamanlılık kontrolü, dosya başına hata yakalama, bellek sızıntılarını önlemek için using tabanlı imha ve saniye başına çalışan dosya ilerleme hızı için SemaphoreSlim kullanır.

%80-90 Otomatik Erişilebilirlik Dönüştürme Sağlama

Kalan %10-20 uyum çalışması insan yargısı gerektirir: karmaşık görüntüler için anlamlı alt metin, olağandışı düzenler için okuma sırası düzeltmeleri ve kaynaktan uygun yapısı olmayan belgeler için anlamsal başlık atamaları. Otomatik geçiş tamamlandıktan sonra en öncelikli belgelerinizde manuel bir inceleme adımı planlayın.

Düzeltme Öncelikleri Belirleme

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

Kamuya açık belgeler öncelikli. Web sitenizde yayınlanan, müşterilere dağıtılan veya bir hükümet ajansına gönderilen her şey en yüksek önceliğe sahiptir. Bu belgeler muhtemelen şikayetleri veya denetimleri tetikleyen belgelerdir.

Sıkça Erişilen İç Mevzu kuralları İkinci Sırada. Eğitim materyalleri, politika kitapçıkları ve birçok çalışanın düzenli olarak kullandığı İK formları hızla düzeltilmelidir.

Arşiv ve Düşük Trafikli Belgeler En Sonda. Minimum erişim alan eski belgeler, döngüsel olarak düzeltilebilir veya birileri taleplerini dile getirdiğinde ihtiyaç duyulduğunda dönüştürülebilir.

Bu triye yaklaşımı, arşivinizin uzun kuyruğunu zaman içinde işlerken en görünür belgelerde uyum ilerlemesini göstermenize olanak tanır.

PDF/UA'i Birleştirme, İmza ve Metadata İş Akışları ile Birleştirme

Üretim boru hatlarında PDF/UA dönüştürme nadiren izole olarak gerçekleşir. Bunu diğer belge işlemleri ile birleştirmeniz sıklıkla gerekir. IronPDF bunları birleştirmeyi destekler:

Girdi

İki kaynak belge: bir kapak sayfası ve her biri tek bir erişilebilir dosyaya birleştirilmiş PDF/UA'ya dönüştürülen bir mali rapor.

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


Gördüğünüz gibi, iki kaynak belge şimdi tek bir PDF/UA uyumlu dosya (kapak sayfası ardından mali rapor) dijital imza ve kapsamlı metadata uygulandı birleştirilmiştir.

Lütfen dikkate alınYukarıdaki iframe önizleme birleşmiş belgenin görsel içeriğini gösteriyor. PDF/UA uyumluluk tanımlayıcısı, dijital imza ve gömülü metadata görüntüleyicide görünmez. Birleşik çıktının yapısal uyumluluğunu doğrulamak için harici bir PDF/UA doğrulayıcı kullanın.

PDF/UA dönüştürme aynı zamanda dijital imzalar, parola koruması ve PDF/A arşiv formatı ile uyumludur.


Gerçek Dünyada PDF/UA Uyumluluk Vakaları Nelerdir?

PDF erişilebilirlik gereksinimleri her sektörde ortaya çıkar ve özgül zorluklar sektöre göre değişir.

Hükümet ajansları somut son tarihlerle karşı karşıya gelir. ADA Title II'ye tabi devlet ve yerel hükümetler, Nisan 2026 ve Nisan 2027 son tarihlerine karşı on binlerce eski belgeyi (toplantı gündemleri, izin başvuruları, imar haritaları ve daha fazlası) işliyor. Önceki bölümlerde ele alınan toplu düzenleme şablonları burada doğrudan uygulanabilir.

Hukuk kuruluşları büyük hacimde PDF üretir: dilekçeler, savunmalar, dava kayıtları, sözleşmeler ve keşif materyalleri. Belgeler elektronik olarak dosyalandığında veya engelli taraflarla paylaşıldığında, erişilebilirlik gereksinimleri uygulanır. PDF/UA dönüştürmesini belge yönetim sisteminin çıktı aşamasına inşa etmek, içeriğin nasıl oluşturulduğundan bağımsız olarak uyumu sağlar.

Yükseköğretim kurumları ders materyalleri, müfredatlar, araştırma makaleleri, idari formlar ve kurum raporları üretir. Section 508 (federal fon alan kurumlar için) ve ADA Title II (kamu kurumları için) altında, bu belgeler erişilebilir olmalıdır. HTML-CSV'ya PDF/UA dönüştürme iş akışı burada özellikle faydalıdır, çünkü birçok akademik içerik web içeriği olarak başlar veya şablonlardan üretilir.

Sağlık kuruluşları hasta beyanları, sigorta açıklamaları, test sonuçları ve yerel yasalar uyarınca erişilebilir olması gereken eğitici materyaller üretir. Bu belgeler sıklıkla tablo verileri ve grafikler içerir, bu nedenle doğru tablo etiketleme ve görüntü alt metni özellikle önemlidir.

Finansal hizmetler firmalar hesap dökümleri, açık belgeler, düzenleyici başvurular ve raporlar üretir. Bunların birçoğu müşterilerle dağıtıldığında veya hükümet ajanslarına dosyalandığında erişilebilir olmalıdır. Yüksek hacim nedeniyle toplu işlem yapmak gereklidir.


Çift PDF/UA ve PDF/A Uyumluluğu Nasıl Sağlanır?

Hem Arşivleme Hem de Erişilebilirliğe Ne Zaman İhtiyacınız Varsa

PDF/A, belgelerin uzun vadede görüntülenebilir ve yeniden üretilebilir olmasını garantileyen arşivleme standardıdır. PDF/UA, erişilebilirlik standardıdır. Bazı kuruluşlar her ikisine de ihtiyaç duyar: kalıcı olarak korunan ve erişilebilir belgeler. Bu, hükümet kayıt tutma, yasal arşivleme ve sağlık belgelerinde yaygındır.

PDF/A-3a uyumluluk seviyesi özellikle arşiv uyumluluğu ve tam erişilebilirlik gerektirir ("a" "erişilebilir" anlamına gelir). PDF/A-3a uyumluluğuna ulaştığınızda, esasen hem PDF/A hem de PDF/UA gereksinimlerini karşılıyorsunuz demektir.

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 PDF/A-3a olarak kaydedildi, aynı anda hem arşiv (PDF/A) hem de erişilebilirlik (PDF/UA) gereksinimlerini karşılayan bir uyumluluk seviyesi.

Dijital İmzalarla PDF/UA'yi Birleştirme

Doğrulama gerektiren erişilebilir belgeler, PDF/UA dönüştürmesini dijital imzalar ile birleştirebilir. İlk olarak 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

Belgeleri Gelişen Standartlara Hazır Hale Getirme

Erişilebilirlik standartları gelişmeye devam ediyor. WCAG 2.2 2023'te yayınlandı ve WCAG 3.0 üzerinde çalışılmaktadır.PDF/UA-2modern web standartlarına, PDF/UA-1'den daha yakından uyuyor. Belgelerinize PDF/UA uyumluluğunu şimdi ekleyerek, standartlar geliştikçe tamamen yeniden yapmaya gerek kalmadan güncellenebilecek bir temel oluşturursunuz.

Erişilebilir belge altyapısına yapılan yatırım, uyumun ötesinde getiriler sağlar. Uygun olarak etiketlenmiş PDF'ler daha aranabilir, mobil cihazlarda daha iyi akış sağlar, daha iyi metin çıkarma sonuçları üretir ve farklı PDF görüntüleyici ve platformlarında daha güvenilir çalışır. Erişilebilirlik sadece yasal bir gereklilik değil. Daha iyi mühendisliktir.


Sonraki Adımlar

PDF/UA uyumluluğu tek bir onay kutusu değildir. Regülatif anlayışı, doğru HTML oluşturma, programatik dönüştürme, otomatik doğrulama ve mevcut arşivlerin ölçekli düzenlenmesini kapsar. Ancak araçlar ve modeller, büyük belge kütüphanelerine ve sıkı son tarihlere sahip kuruluşlar için bile yönetilebilir hale getirir. IronPDF, erişilebilir herhangi bir PDF .NET iş akışının temelini oluşturan etiketli PDF motoru, SaveAsPdfUA ve RenderHtmlAsPdfUA yöntemleri, toplu işleme yetenekleri ve çapraz platform .NET desteği sağlar. İster bir devlet sözleşmesi için Section 508 PDF C# uyumluluğuna, ister bir kurumsal raporlama platformu için WCAG PDF uyumluluğuna veya kesin bir son teslim tarihi olan bir belge düzeltme projesi için PDF/UA C# dönüştürmeye ihtiyacınız olsun, bu öğreticideki kalıplar size üzerine inşa edebileceğiniz kanıtlanmış bir çerçeve sunar.

SaveAsPdfUA'nin ne ürettiğini anlamak için tek dosya dönüştürme işlemiyle başlayın. Çıktıyı veraPDF ve Matterhorn Protokolü ile doğrulayın. Anlamsal öğeler kullanan ve doğru başlık yapısına sahip erişilebilir HTML şablonları oluşturun. Ardından mevcut arşiviniz için yığın dönüştürme boru hattıyla ölçeklendirin. Her gereksinimi karşılayan belge iş akışları oluşturmak için PDF/UA'yı PDF/A arşiv uyumluluğu, dijital imzalar, metadata yönetimi ve PDF sıkıştırma ile birleştirin.

Daha derinlemesine bir referans için IronPDF PDF/UA nasıl yapılır kılavuzu API yüzeyini ayrıntılı olarak kapsar ve ihtiyacınız olan tam uyumluluk iş akışını yürütmek için PDF/A arşivleme öğreticisi her iki standardı aynı anda ihtiyacınız varsa adım adım gösterir.

İşe başlamaya hazır mısınız? IronPDF'i İndirin ve ücretsiz bir deneme ile deneyin. Aynı kütüphane tek dosya erişilebilirliği dönüşümünden kurumsal ölçekli düzenleme hatlarına kadar her şeyi ele alır. 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çekteki ekiplere belge erişilebilirliğini doğru yapmaları konusunda yardımcı olduk ve size de yardımcı olmaktan mutluluk duyarız.

Sıkça Sorulan Sorular

PDF/UA nedir ve neden önemlidir?

PDF/UA (Evrensel Erişilebilirlik), engelli bireylerin PDF içeriklerine erişip etkileşimde bulunabilmesini sağlayan erişilebilir PDF belgeleri için bir ISO standardıdır. Bölüm 508 ve AB Erişilebilirlik Yasası gibi erişilebilirlik düzenlemeleri ile uyumluluğu sağlamak için önemlidir.

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

IronPDF'nin SaveAsPdfUA yöntemi ile C#'da mevcut PDF'leri PDF/UA'ya dönüştürebilirsiniz. Bu yöntem, belgelerinizin gerekli etiketler ve yapılarla erişilebilirlik standartlarına uymasını sağlar.

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 uyan etiketlenmiş PDF'lere dönüştürmelerine olanak tanıyan RenderHtmlAsPdfUA yöntemini sunar.

IronPDF, büyük ölçekli PDF/UA düzenleme projelerini yönetebilir mi?

Evet, IronPDF, paralel işleme hatları aracılığıyla büyük dökuman arşivlerini toplu olarak düzenleyerek kapsamlı PDF/UA düzenleme projeleri için oldukça verimli hale getirir.

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

IronPDF, belgelerinizin erişilebilirlik standartlarına uygun olmasını sağlamak için Matterhorn Protokolü'ne karşı PDF/UA uyumluluğunu doğrulayan veraPDF ile entegre olur.

IronPDF'nin çözebileceği yaygın PDF/UA uyum sorunları nelerdir?

IronPDF, PDF/UA belgelerinde eksik belge başlıkları, eksik font gömmeler ve bozuk başlık hiyerarşileri gibi yaygın uyumluluk sorunlarını düzeltmeye yardımcı olabilir.

IronPDF farklı .NET ortamları ile uyumlu mudur?

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

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

IronPDF kullanarak, PDF/UA uyumlu belgeleri dijital imzalarla birleştirerek belge güvenliğini ve uyumluluğunu artırabilirsiniz.

Nisan 2026 ve 2027 ADA Başlık II son tarihlerinin önemi nedir?

Bu son tarihler, belirli kamuya açık uygulamaların ADA Başlık II kapsamındaki güncellenmiş erişilebilirlik standartlarına uyum sağlaması gereken zamanları işaret eder. IronPDF gibi araçlar, geliştiricilerin PDF'lerinin bu gereklilikleri karşılamasını sağlamak için hayati öneme sahiptir.

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

Evet, IronPDF, PDF/UA belgelerinde meta veri iş akışlarının entegrasyonunu destekler ve bu da erişilebilirlik ve uyumluluğu sürdürmek için önemlidir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 19,014,616 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizi bir PDF'ye dönüştüğünü izleyin.