İçeriğe geç

PDF/UA-2 uyumluluğu: NextPDF'in ISO 14289-2 için ürettiği etiketli yapı

Sı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.

Terminal window
composer require nextpdf/core:^3

PDF/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.

Document::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 Lang taşı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 Figure yapı öğ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.

YöntemEtki
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.
<?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";

Ü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.

  • Önce etkinleştirin. enableTaggedPdf() çağrısının writeHtml() ç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.

Yapı 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.

Eriş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 yükümlülüğüISO 14289-2 maddesiNextPDF çıktısı
Gerçek içerik mantıksal yapıda etiketlenir§8.2.2TaggedContentEmitter + StructureTree
Belge/yapı dili bildirilir§8.4.4katalog /Lang, doğrulayan: Bcp47Validator
Şekil alternatif açıklaması§8.5.1alt/Alt (Figure öğesinde)
Tablo header/data ilişkisi§8.2.5.26HTML tablolarından TR/TH/TD yapısı

PDF/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.

Etiketli 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.

PDF/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.

İddiaSpesifikasyonMaddereference_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.