PDF/UA-2 uyumluluğu: NextPDF'in ISO 14289-2 için ürettiği etiketli yapı
Bir bakışta
“Bir bakışta” başlıklı bölümSınır açıklaması. NextPDF, erişilebilir içerik üretimini destekleyen etiketli yapıyı oluşturur; PDF/UA-2 uyumluluğu iddiasında bulunmaz — bunu bir denetleyici belirler.
PDF/UA-2, ISO 14289-2:2024 standardıdır; etiketli Taşınabilir Belge Biçimi (PDF) 2.0 üzerine kurulan bir erişilebilirlik profilidir. NextPDF Core, yapı ağacını, işaretli içeriği, katalog ile yapı dilini ve pdfuaid işaretleyicisini Document::enableTaggedPdf() aracılığıyla oluşturur. Kütüphane erişilebilir yapıyı oluşturur; uyumluluğa ise verapdf --flavour ua2 gibi bir PDF/UA denetleyicisi karar verir. ISO 14289-2 §8.1, uyumluluğu üreticinin öne sürdüğü bir iddia olarak değil, belgenin karşılaması gereken ve bir denetleyici tarafından değerlendirilen dosya biçimi gereksinimleri olarak tanımlar.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/core:^3PDF/UA-2 etiketlemesi bir Core yeteneğidir (security.tagged_pdf). Etiketli yapının kendisini oluşturmak için bir Premium paketine ihtiyacınız yoktur.
Kavramsal genel bakış
“Kavramsal genel bakış” başlıklı bölümDocument::enableTaggedPdf(string $lang = 'en', ?ConformancePolicy $policy = null), ConformanceMode::PdfUa2 değerini ayarlar ve TaggedContentEmitter bileşenini bağlar. Belgenin spesifikasyona göre etiketlenip etiketlenmediği konusunda tek doğruluk kaynağı bu moddur; ardından yazıcı, ISO 14289-2 standardının dayattığı yapısal yükümlülükleri karşılar:
- Gerçek içerik etiketlenir — §8.2.2: gerçek, yapay olmayan her içerik parçası mantıksal yapıya dahil edilir ve yapay öğeler de yapay öğe olarak işaretlenir. Bu, ISO 32000-2 §14.7 etiketli PDF yapısı (
StructTreeRoot, yapı öğeleri, MCID’ler) üzerine inşa edilmiştir. - Doğal dil bildirilir — §8.4.4: belge ve dil geçişleri bir
Langtaşır.ConformancePolicy::strictUa2()ile, hatalı biçimlendirilmiş bir BCP-47 etiketi yazma anında sessizce atılmak yerine API sınırında, hızlı başarısızlık (fail-fast) yaklaşımıyla reddedilir. - Şekiller alternatif metin taşır — §8.5.1: her
Figureyapı öğesinin bir alternatif açıklaması vardır. - Tablolar başlıkları ve verileri ilişkilendirir — §8.2.5.26: tablodaki header/data hücre ilişkisi yapısal olarak ifade edilir.
NextPDF bu yapıları oluşturur. §8.1 uyumluluk değerlendirmesini yürütmez; bu, denetleyicinin görevidir ve standart bu görevi denetleyiciye ayırır.
API yüzeyi
“API yüzeyi” başlıklı bölüm| Yöntem | Etki |
|---|---|
enableTaggedPdf(string $lang = 'en', ?ConformancePolicy $policy = null): static | Şunu ayarlar: ConformanceMode::PdfUa2; şunu bağlar: TaggedContentEmitter; $lang değerini ilkeye göre doğrular. Şunu fırlatır: InvalidConfigException — ilke Lang doğrulamasını zorunlu kıldığında ve $lang geçersiz olduğunda. |
beginTag()/endTag() | HTML dışı içerikte elle yapı oluşturur; kapsayıcı türler gruplama öğelerine dönüşür, yaprak türler MCID alır. |
ConformanceMode::requiresPdfUa2PageTabs(): bool | Şu mod için true döndürür: PdfUa2 — sayfa düzeyinde /Tabs /S zorlamasını tetikler. |
Kod örneği — hızlı başlangıç
“Kod örneği — hızlı başlangıç” başlıklı bölüm<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;use NextPDF\Conformance\ConformancePolicy;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/accessible.pdf';
$doc = Document::createStandalone();$doc->enableTaggedPdf('en', ConformancePolicy::strictUa2()); // fail-fast Lang$doc->setTitle('Accessible report 2026');$doc->writeHtml('<h1>Quarterly report</h1><p>Body text.</p>' . '<img src="chart.png" alt="Revenue rose 12% quarter on quarter">');$doc->save($out);
echo "Wrote {$out} — validate: verapdf --flavour ua2 {$out}\n";Kod örneği — üretim
“Kod örneği — üretim” başlıklı bölümÜretim geçidi verapdf --flavour ua2 out.pdf komutunu çalıştırır ve denetleyici ihlal bildirdiğinde derlemeyi başarısız sayar. tests/Integration/Accessibility/VeraPdfUa2GoldenTest.php entegrasyon testi, HTML→etiketli PDF altın referansının veraPDF UA-2’yi geçtiğini doğrular (veraPDF mevcut değilse atlanır). Geçit, denetleyicinin kararıdır; oluşturucunun çıktısı ise onun girdisidir.
Uç durumlar ve dikkat noktaları
“Uç durumlar ve dikkat noktaları” başlıklı bölüm- Önce etkinleştirin.
enableTaggedPdf()çağrısınınwriteHtml()çağrısından sonra yapılması, zaten yazılmış içeriği geriye dönük olarak etiketlemez. - Katı dil. Hatalı biçimlendirilmiş bir BCP-47 etiketini yalnızca sonradan yapılan veraPDF doğrulamasında başarısız saymak yerine API sınırında reddetmek için
ConformancePolicy::strictUa2()değerini geçirin. - Bağımsız (idempotent) yeniden etkinleştirme. İki kez çağrılması, dolu bir yapı ağacını yeniden oluşturmadan dili günceller.
- Boş etiketli belge. Boş bir etiketli belge PDF/UA-2 iddiasında bulunmaz (
EmptyTaggedPdfDoesNotAdvertisePdfUa2Test): gerçek içeriği olmayan bir belge için işaretleyici oluşturulmaz, böylece dosya gerçeğin ötesinde bir iddiada bulunmaz.
Performans
“Performans” başlıklı bölümYapı ağacı oluşturma, öğe sayısıyla orantılıdır. Tipik bir rapor için bütçe, duvar saati ≤ 1500 ms ve tepe bellek ≤ 64 MB şeklindedir.
Güvenlik notları
“Güvenlik notları” başlıklı bölümErişilebilirlik etiketlemesi yapısaldır; bir güvenlik denetimi değildir. Tasarım gereği belgenin mantıksal yapısını yardımcı teknolojilere açar. Etiket ağacının gizlilik boyutu yoktur.
PDF/UA-2 eşlemesi
“PDF/UA-2 eşlemesi” başlıklı bölüm| PDF/UA-2 yükümlülüğü | ISO 14289-2 maddesi | NextPDF çıktısı |
|---|---|---|
| Gerçek içerik mantıksal yapıda etiketlenir | §8.2.2 | TaggedContentEmitter + StructureTree |
| Belge/yapı dili bildirilir | §8.4.4 | katalog /Lang, doğrulayan: Bcp47Validator |
| Şekil alternatif açıklaması | §8.5.1 | alt → /Alt (Figure öğesinde) |
| Tablo header/data ilişkisi | §8.2.5.26 | HTML tablolarından TR/TH/TD yapısı |
Etiket → ISO 32000-2 §14.9 çapraz başvurusu
“Etiket → ISO 32000-2 §14.9 çapraz başvurusu” başlıklı bölümPDF/UA-2, ISO 32000-2 etiketli PDF modeli üzerine katmanlanır. NextPDF’in ürettiği yapı öğeleri, ISO 32000-2 §14.7 mantıksal yapısına (StructTreeRoot, yapı öğeleri, MCID’ler) — chunk — ve PDF 2.0 için tanımlanan standart yapı ad alanına karşılık gelir. Rol haritası, bir UA-2 denetleyicisinin tanıyabilmesi için HTML öğelerini (h1, p, table) standart yapı türlerine bağlar.
WCAG 2.2 eşlemesi
“WCAG 2.2 eşlemesi” başlıklı bölümEtiketli yapı, Web İçeriği Erişilebilirlik Kılavuzu (WCAG) 2.2 başarı ölçütleri için teknik altyapıdır — 1.1.1 (metin olmayan alternatifler, §8.5.1 Figure /Alt aracılığıyla), 1.3.1 (bilgi ve ilişkiler, yapı ağacı aracılığıyla) ve 1.3.2 (anlamlı sıralama, okuma sırası aracılığıyla). Yapının oluşturulması WCAG uyumluluğu için gereklidir ancak yeterli değildir; bu kararı kütüphane değil bir erişilebilirlik denetimi verir.
FIPS modu davranışı
“FIPS modu davranışı” başlıklı bölümPDF/UA-2 çıktısı hiçbir kriptografi işlemi gerçekleştirmez. Federal Bilgi İşleme Standartları (FIPS) modunun etiketli yapı yolu üzerinde hiçbir etkisi yoktur.
Uyumluluk
“Uyumluluk” başlıklı bölüm| İddia | Spesifikasyon | Madde | reference_id |
|---|---|---|---|
PDF/UA sürümü pdfuaid şema ad alanı tarafından tanımlanır (Tablo 1). | ISO 14289-2 | §5 | |
| PDF/UA-2 ile uyumluluk, bir belgenin karşılaması gereken dosya biçimi gereksinimleri getirir (uyumluluğu bir denetleyici değerlendirir; üretici bunu öne sürmez). | ISO 14289-2 | §8.1 | |
| Gerçek içerik mantıksal yapıda etiketlenmelidir. | ISO 14289-2 | §8.2.2 | |
| Belgenin doğal dili bildirilmelidir. | ISO 14289-2 | §8.4.4 | |
| Figure öğeleri için bir alternatif açıklama gerekir. | ISO 14289-2 | §8.5.1 | |
| Tablo yapısı, başlık ve veri hücrelerini ilişkilendirmelidir. | ISO 14289-2 | §8.2.5.26 | |
| Erişilebilir yapı, ISO 32000-2 etiketli PDF mantıksal yapısı üzerine inşa edilir. | ISO 32000-2 | §14.7.2 |
Atıflar, doğrulama bütüncesine yönelik madde kimliği ve reference_id işaretçileridir. Hiçbir standart metni yeniden yayımlanmaz.