コンテンツにスキップ

PDF/UA-2 適合性: ISO 14289-2 向けに NextPDF が出力するタグ付き構造

境界の明示。 NextPDF は、アクセシブルなオーサリングを支えるタグ付き構造を出力します。PDF/UA-2 適合性を主張するものではなく、判定するのはチェッカーです。

PDF/UA-2 は ISO 14289-2:2024 で定義される、タグ付き PDF 2.0 を基盤としたアクセシビリティプロファイルです。NextPDF Core は、構造ツリー、マーク付きコンテンツ、catalog/structure の言語、および pdfuaid マーカーを、Document::enableTaggedPdf() を通じて出力します。ライブラリが生成するのはアクセシブルな構造です。適合性を判断するのは PDF/UA チェッカー(たとえば verapdf --flavour ua2)です。ISO 14289-2 §8.1 では、適合性は文書が満たすべき一連のファイル形式要件として位置付けられています。これはチェッカーによって評価されるものであり、生成側が宣言するものではありません。

Terminal window
composer require nextpdf/core:^3

PDF/UA-2 のタグ付けは Core の機能です(security.tagged_pdf)。タグ付き構造そのものに Premium パッケージは必要ありません。

Document::enableTaggedPdf(string $lang = 'en', ?ConformancePolicy $policy = null)ConformanceMode::PdfUa2 を設定し、TaggedContentEmitter を接続します。このモードは、「この文書が仕様どおりタグ付けされているか」を示す信頼できる唯一の情報源です。以降、ライターは ISO 14289-2 が課す構造上の義務を満たします。

  • 実コンテンツがタグ付けされる — §8.2.2: 実(非アーティファクト)コンテンツのすべての要素が論理構造に含まれ、アーティファクトはアーティファクトとしてマークされます。これは ISO 32000-2 §14.7 のタグ付き PDF 構造(StructTreeRoot、構造要素、MCID)を基盤としています。
  • 自然言語が宣言される — §8.4.4: 文書全体および言語の切り替え箇所には Lang が伴います。ConformancePolicy::strictUa2() を使用すると、不正な形式の BCP-47 タグは、書き込み時に黙って破棄されるのではなく、API 境界で拒否されます(フェイルファスト)。
  • 図には代替テキストが付く — §8.5.1: すべての Figure 構造要素には代替説明が設定されます。
  • 表はヘッダーとデータを関連付ける — §8.2.5.26: 表の header/data セルの関連付けが構造として表現されます。

NextPDF はこれらを出力します。§8.1 の適合性評価は実行しません。それはチェッカーの役割であり、規格はその役割をチェッカーに留保しています。

メソッド効果
enableTaggedPdf(string $lang = 'en', ?ConformancePolicy $policy = null): staticこのメソッドは ConformanceMode::PdfUa2 を設定し、TaggedContentEmitter を接続し、ポリシーに従って $lang を検証します。InvalidConfigException をスローするのは、ポリシーが Lang の検証を必須とし、かつ $lang が無効な場合です。
beginTag()/endTag()HTML 以外のコンテンツに対する手動構造化です。コンテナ型はグループ化要素になり、リーフ型は MCID を取得します。
ConformanceMode::requiresPdfUa2PageTabs(): bool戻り値は PdfUa2 の場合に true となり、/Tabs /S のページ強制を制御します。
<?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";

本番環境のゲートは verapdf --flavour ua2 out.pdf を実行し、違反が報告された場合はビルドを失敗させます。統合テスト tests/Integration/Accessibility/VeraPdfUa2GoldenTest.php は、HTML→タグ付き PDF のゴールデンフィクスチャが veraPDF UA-2 に合格することを検証します(veraPDF が存在しない場合はスキップされます)。チェッカーの判定がゲートであり、エミッターの出力はその入力です。

  • 最初に有効化する。 enableTaggedPdf()writeHtml() の後に呼び出しても、すでに書き込まれたコンテンツへ遡及的にタグが付くことはありません。
  • 厳格な言語チェック。 veraPDF 検証の段階で初めて失敗させるのではなく、API 境界で不正な形式の BCP-47 タグを拒否するには、ConformancePolicy::strictUa2() を渡します。
  • 冪等な再有効化。 2 回呼び出しても、内容が入った構造ツリーを再構築せずに言語を更新します。
  • 空のタグ付き文書。 空のタグ付き文書は PDF/UA-2 を宣言しません(EmptyTaggedPdfDoesNotAdvertisePdfUa2Test)。実コンテンツを含まない文書にはマーカーが出力されないため、ファイルが過剰な主張を行うことはありません。

構造ツリーの出力コストは要素数に比例します。一般的なレポートでは、実時間 ≤ 1500 ms、ピーク ≤ 64 MB を予算としています。

アクセシビリティのタグ付けは構造情報であり、セキュリティ制御ではありません。設計上、文書の論理構造を支援技術に対して公開するものであり、タグツリーには機密性を担保する役割はありません。

PDF/UA-2 の義務ISO 14289-2 の箇条NextPDF の出力
論理構造でタグ付けされた実コンテンツ§8.2.2TaggedContentEmitter + StructureTree
宣言された文書/構造の言語§8.4.4catalog の /Lang。検証には Bcp47Validator を使用
Figure の代替説明§8.5.1alt/Alt を Figure 要素に付与
表の header/data の関連付け§8.2.5.26HTML テーブルから生成される TR/TH/TD 構造

PDF/UA-2 は ISO 32000-2 のタグ付き PDF モデルを基盤としています。NextPDF が出力する構造要素は、ISO 32000-2 §14.7 の論理構造(StructTreeRoot、構造要素、MCID)— chunk — および PDF 2.0 向けに定義された標準構造名前空間に対して解決されます。ロールマップは、HTML 要素(h1ptable)を標準構造型に結び付け、UA-2 チェッカーがそれらを認識できるようにします。

タグ付き構造は、WCAG 2.2 の達成基準を支える技術的基盤です。対象は 1.1.1(非テキストの代替、§8.5.1 の Figure /Alt 経由)、1.3.1(情報と関係、構造ツリー経由)、および 1.3.2(意味のある順序、読み上げ順序経由)です。構造を出力することは WCAG 適合性に必要ですが、それだけでは十分ではありません。その判定を行うのはライブラリではなくアクセシビリティ監査です。

PDF/UA-2 の出力では暗号処理は行われません。FIPS モードはタグ付き構造の処理経路に影響を与えません。

主張仕様箇条リファレンス ID
PDF/UA のバージョンは pdfuaid スキーマ名前空間で識別されます(Table 1)。ISO 14289-2§5
PDF/UA-2 への適合は、文書が満たすべきファイル形式要件を課します(適合性を評価するのはチェッカーであり、生成側が宣言するものではありません)。ISO 14289-2§8.1
実コンテンツは論理構造内でタグ付けされなければなりません。ISO 14289-2§8.2.2
文書の自然言語は宣言されなければなりません。ISO 14289-2§8.4.4
Figure 要素には代替説明が必要です。ISO 14289-2§8.5.1
表構造はヘッダーセルとデータセルを関連付けなければなりません。ISO 14289-2§8.2.5.26
アクセシブルな構造は ISO 32000-2 のタグ付き PDF 論理構造の上に構築されています。ISO 32000-2§14.7.2

引用は、検証コーパスへの clause-id と reference_id のポインターです。規格本文は転載していません。