HTML'den erişilebilir, etiketli bir PDF oluşturma
Bir bakışta
“Bir bakışta” başlıklı bölümBu tarifi, anlamsal HTML’den etiketli bir PDF oluşturmak için kullanın. NextPDF, mantıksal yapı ağacını, katalog dilini ve PDF/UA-2 işaretleyicilerini yazar. Uygunluk kararını bir denetleyici verir. Bu tarif, examples/31-pdfua2-tagged.php dosyasını temel alır.
Ön koşullar
“Ön koşullar” başlıklı bölüm- Core’u kurun:
composer require nextpdf/core:^3. - Doğrulama için bir PDF/UA doğrulayıcısı kullanın; örnekte veraPDF kullanılır.
- Belgeyi oluşturun.
- Önce
enableTaggedPdf()işlevini bir Best Current Practice (BCP) 47 dil etiketiyle çağırın; bu çağrı önce,writeHtml()ise sonra gelmelidir. HTML işlem hattı ayrıştırıcıyı oluştururken etiketli modu algılar ve ardından etiketli içerik yayıcısını bağlar. - Belge meta verilerini (başlık, dil) ayarlayın.
setLanguage()işlevinienableTaggedPdf()ile birlikte güvenle çağırabilirsiniz, çünkü bu işlev idempotent’tir. - Anlamsal HTML yazın. Ayrıştırıcı, her blok öğesini bir yapı öğesiyle eşler:
h1öğesiniH1ile,pöğesiniPile,ul/liöğeleriniL/LIile vetableöğesiniTable/TR/TDile eşler. - Kaydedin ve ardından bir PDF/UA denetleyicisiyle doğrulayın.
Tam örnek
“Tam örnek” başlıklı bölüm<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = Document::createStandalone();
// Step 2 — enable tagged mode BEFORE writeHtml(). The lang argument// drives the catalog /Lang entry and the structure tree root language.$doc->enableTaggedPdf(lang: 'en');
// Step 3 — metadata. setLanguage() restates intent; it is idempotent here.$doc->setTitle('Accessible Report');$doc->setLanguage('en');
$doc->addPage();
// Step 4 — semantic HTML. Each block element becomes a StructElem; text// runs are wrapped in BDC/EMC operators with stable MCIDs.$html = <<<'HTML'<h1>Quarterly Accessibility Report</h1><p>This document opts into tagged PDF so assistive technology can exposea meaningful reading order.</p><h2>Findings</h2><ul> <li>Headings carry semantic roles.</li> <li>Lists keep their item structure.</li></ul>HTML;
$doc->writeHtml($html);
$doc->save(__DIR__ . '/accessible.pdf');
echo "Wrote accessible.pdf — validate with: verapdf --flavour ua2 accessible.pdf\n";Beklenen çıktı
“Beklenen çıktı” başlıklı bölümWrote accessible.pdf — validate with: verapdf --flavour ua2 accessible.pdfÇıktı bir yapı ağacı, /MarkInfo << /Marked true >> ifadesi, katalog /Lang girdisi ve pdfuaid:part XMP işaretleyicisi içerir. Bu öğelerin var olduğunu ve kendi içinde tutarlı kaldığını doğrulamak için denetleyiciyi çalıştırın.
Uç durumlar
“Uç durumlar” başlıklı bölüm- Çağrı sırası.
enableTaggedPdf()işleviniwriteHtml()çağrısından sonra çağırmak, daha önce yazılmış olan içeriği geriye dönük olarak etiketlemez. Önce etiketli modu etkinleştirin. - Dil etiketi. Hatalı biçimlendirilmiş bir BCP-47 etiketinin yazma sırasında sessizce atılması yerine API sınırında reddedilmesi için ikinci argüman olarak
ConformancePolicy::strictUa2()değerini geçirin. - İdempotent yeniden etkinleştirme.
enableTaggedPdf()işlevini iki kez çağırırsanız, NextPDF halihazırda doldurduğunuz yapı ağacını yeniden oluşturmadan dili günceller. - Elle etiketleme. HTML olmayan içerik için öğeleri
beginTag()/endTag()ile sarmalayın. Kapsayıcı türleri (Table,TR,L,LI) işaretli içeriği olmayan gruplama öğelerine dönüşür. Yaprak türleri (P,H1–H6,TD) MCID alır. - Destek, uygunluk anlamına gelmez. NextPDF, PDF/UA-2’nin gerektirdiği yapısal meta verileri yayar. Ayrıca düşürülmüş eşlik uyarısını da gösterir: üretim onayı için harici oracle doğrulaması çağıran tarafın sorumluluğundadır. Bir dosyanın uygun olduğunu belirtmeden önce bir denetleyici çalıştırın.
Uygunluk
“Uygunluk” başlıklı bölüm| İfade | Standart | Madde | reference_id |
|---|---|---|---|
| Gerçek içerik, mantıksal bir yapı gerektirir. | ISO 14289-2 | §8.2.2 | |
| Yapı öğeleri, tanımlı bir iç içe geçme ve okuma sırasını izler. | ISO 14289-2 | §8.2.3 |
Bu tarif, erişilebilir içerik üretimini destekleyen etiketli yapıyı nasıl oluşturacağınızı gösterir. PDF/UA-2 uygunluk iddiasında bulunmaz; kararı bir denetleyici verir.