Skip to content

タグ付きPDF(アクセシビリティ)

アクセシビリティモジュール(StructureTreeManagerRoleMapTaggedContentManager)は、スクリーンリーダーや支援技術向けのタグ付きPDF出力を有効にします。有効にすると、すべてのコンテンツがその意味的な役割を記述する構造要素でラップされます。すべてのタグ付けメソッドはチェーン用に static を返します。

クイックリファレンス

メソッド説明
setTaggedPdf()タグ付きPDFモードの有効化/無効化
setLanguage()ドキュメントの主要言語を設定(BCP 47)
openTag()タグ付き構造要素を開始
closeTag()タグ付き構造要素を終了
image(..., alt:)アクセシビリティ用の代替テキスト付きで画像を追加

タグ付きPDFの有効化

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->setTaggedPdf(true)
    ->setLanguage('en-US')
    ->addPage()
    ->setFont('Helvetica', '', 12);

setTaggedPdf(true) が呼び出されると、StructureTreeManager が遅延初期化され、Marked = true を持つ MarkInfo ディクショナリがPDFカタログに書き込まれます。

構造要素

TCPDF-NextはPDF 2.0標準の完全なタグセットをサポートしています:

カテゴリタグ
グループ化DocumentPartSectDivBlockQuoteCaptionNonStruct
見出しH1H2H3H4H5H6
段落PSpan
リストLLILblLBody
テーブルTableTRTHTDTHeadTBodyTFoot
インラインLinkEmStrongCode
イラストFigureFormulaForm

基本的なタグ付け

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->setTaggedPdf(true)
    ->setLanguage('en-US')
    ->addPage()
    ->setFont('Helvetica', '', 12)

    ->openTag('H1')
    ->cell(0, 10, 'Annual Report 2026', newLine: true)
    ->closeTag('H1')

    ->openTag('P')
    ->multiCell(0, 6, 'This document demonstrates tagged PDF output for accessibility compliance.')
    ->closeTag('P')

    ->save('tagged-basic.pdf');

タグは適切にネストする必要があります。StructureTreeManager はネストを検証し、不一致の場合は例外をスローします。

タグ付きテーブル

php
$pdf->openTag('Table')
    ->openTag('TR')
    ->openTag('TH')->cell(50, 8, 'Quarter')->closeTag('TH')
    ->openTag('TH')->cell(50, 8, 'Revenue')->closeTag('TH')
    ->closeTag('TR')
    ->openTag('TR')
    ->openTag('TD')->cell(50, 8, 'Q1')->closeTag('TD')
    ->openTag('TD')->cell(50, 8, '$1,200,000')->closeTag('TD')
    ->closeTag('TR')
    ->closeTag('Table');

タグ属性

タグを開くときに追加の属性を渡します:

php
$pdf->openTag('Figure', ['Alt' => 'Company logo', 'ActualText' => 'Acme Corp Logo'])
    ->image('/path/to/logo.png', 10, 50, 40, 40)
    ->closeTag('Figure');

一般的な属性:

属性説明
Alt非テキスト要素の代替テキスト
ActualText要素の正確なテキスト置換
Langこの要素の言語オーバーライド(BCP 47)
Title人間が読めるタイトル

image() メソッドはショートハンドとして alt パラメータも受け付けます。$pdf->image('chart.png', 10, 80, 120, 60, alt: 'Revenue chart') は自動的に画像を Figure タグでラップします。

ロールマッピング

RoleMap はカスタムタグ名を標準PDF構造タイプにマッピングします。これにより、PDF/UA互換性を維持しながらドメイン固有の名前を使用できます:

php
$pdf->openTag('Invoice', ['roleMap' => 'Sect'])
    ->openTag('LineItem', ['roleMap' => 'P'])
    ->cell(0, 8, 'Widget x 10 — $500.00', newLine: true)
    ->closeTag('LineItem')
    ->closeTag('Invoice');

ロールマップは構造ツリールートに書き込まれるため、バリデーターはカスタムタグを標準の同等タグに解決します。多言語コンテンツの場合は、要素ごとに言語をオーバーライドします:->openTag('P', ['Lang' => 'de-DE'])

PDF/UA準拠

完全にPDF/UA準拠のドキュメントを作成するには、以下を確認してください:

  1. タグ付きPDFが有効setTaggedPdf(true)
  2. ドキュメント言語が設定済みsetLanguage('en-US')
  3. すべてのコンテンツがタグ付き — 構造要素の外にタグなしコンテンツがないこと
  4. すべての画像に代替テキストalt: パラメータまたは Alt 属性付きの Figure タグ経由
  5. テーブルのヘッダーに TH を使用 — ヘッダーセルはデータセルと区別する必要あり
  6. フォントが埋め込み済み — TCPDF-Nextはデフォルトですべてのフォントを埋め込みます

PDF/A-4との統合

タグ付きPDFはPDF/A-4と完全に互換性があります。アーカイブ + アクセシブルなドキュメントには両方を有効にしてください:

php
$pdf = Document::create()
    ->setTaggedPdf(true)
    ->setPdfA(true)
    ->setLanguage('en-US')
    ->setTitle('Accessible Archival Document')
    ->addPage()
    ->setFont('Helvetica', '', 12)
    ->openTag('H1')
    ->cell(0, 10, 'PDF/A-4 + PDF/UA Document', newLine: true)
    ->closeTag('H1')
    ->save('accessible-archival.pdf');

LGPL-3.0-or-later ライセンスの下で公開されています。