PDF 2.0 ベースライン: NextPDF が実装する ISO 32000-2 の箇条
境界の明示。 NextPDF は引用対象の箇条を実装します。完全な ISO 32000-2 準拠を一括した主張として表明することはありません。
ISO 32000-2:2020 は PDF 2.0 の基本規格です。NextPDF Core のデフォルト出力 (ConformanceMode::Plain) は、制約のない PDF 2.0 です。つまり、%PDF-2.0 ヘッダー、ドキュメントカタログ、相互参照構造、および準拠したトレーラーを備えています。このページでは、NextPDF が実装するベースラインの箇条と、その明示的な限界を説明します。このライブラリは引用対象の箇条を実装しますが、「完全に ISO 32000-2 に準拠している」という一括した主張は行いません。準拠したファイルとは、準拠したリーダーが規格に従って処理できるファイルを指します。これは検証ツールが判定するものであり、ライブラリが設定するフラグではありません。
インストール
「インストール」という見出しのセクションcomposer require nextpdf/core:^3PDF 2.0 ベースライン出力は Core のデフォルトです。プロファイルを呼び出す必要はありません。ConformanceMode::Plain がデフォルトの判別子です。PDF/A-4、PDF/UA-2、PDF/X、および ZUGFeRD の各プロファイルは、このベースラインに重ねられる制約付きサブセットです。
概念的な概要
「概念的な概要」という見出しのセクションすべての NextPDF ドキュメントは、プロファイルが適用される前の段階では PDF 2.0 ファイルです。ライターは、ISO 32000-2 が準拠ファイルに課す構造上の義務を満たします。
- ドキュメントカタログ — §7.7.2: トレーラーの
/Rootから参照されるルートオブジェクトで、すべての出力に存在します。 - 相互参照構造 — §7.5.8: すべてのオブジェクトの位置を示す相互参照テーブルまたはストリームです。
- トレーラー — §7.5.5: 準拠ファイルが備えるべきトレーラー辞書で、ファイルの
/ID識別子を含みます。/IDはファイルごとに一意であり、比較時には正規化によって除外されます。そのため、ほとんどの複数オブジェクト出力はビット単位ではなくreproducibility_profile: structuralになります。 - 論理構造 — §14.7.2: タグ付きモードが有効な場合に、PDF/UA-2 プロファイルの基盤となる
StructTreeRootのベースラインです。 - バージョン拡張 — §7.12: 開発者拡張が宣言される場合に使われる、Extensions 辞書 / 開発者プレフィックスの仕組みです。
NextPDF はこれらの箇条を実装しますが、完全な ISO 32000-2 準拠評価は実行しません。それは外部のバリデーター (たとえば Arlington 文法チェッカーや veraPDF) の役割です。NextPDF\Compliance には、構造上の不一致を表面化させるバイトストリームのクロスチェック (ArlingtonValidator) が同梱されています。これらは検証を補助するものであり、証明書ではありません。
API サーフェス
「API サーフェス」という見出しのセクション| シンボル | 効果 |
|---|---|
ConformanceMode::Plain | デフォルト — 制約のない PDF 2.0 出力。 |
ConformanceMode::requiresPdf17(): bool | PDF 2.0 モードでは false。ライターは %PDF-2.0 ヘッダーを出力。 |
NextPDF\Compliance\Validator\ArlingtonValidator | Arlington PDF モデルに対する文法のクロスチェック (検証補助)。 |
コードサンプル — クイックスタート
「コードサンプル — クイックスタート」という見出しのセクション<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/baseline.pdf';
$doc = Document::createStandalone(); // ConformanceMode::Plain — PDF 2.0$doc->setTitle('PDF 2.0 baseline');$doc->writeHtml('<h1>Hello PDF 2.0</h1><p>Unconstrained baseline output.</p>');$doc->save($out);
echo "Wrote {$out} (%PDF-2.0). Validate structure with an external checker.\n";コードサンプル — 本番環境
「コードサンプル — 本番環境」という見出しのセクションベースラインの本番運用方針は、代表的な出力に対して外部の構造バリデーター (Arlington / veraPDF) を CI で実行し、そのレポートをゲートにすることです。ライブラリは構造を出力し、チェッカーが準拠しているかどうかを判定します。ライブラリは一括した準拠の主張を行いません。
エッジケースと注意点
「エッジケースと注意点」という見出しのセクション/IDはファイルごとに一意です。 トレーラーの/ID、/CreationDate、またはフォントサブセットのプレフィックスを含むベースライン出力は、バイト単位では安定しません。生の sha256 ではなく、構造プロファイル (qpdf-normalize) で比較してください。- Plain ≠ アーカイブ用。
ConformanceMode::Plainは PDF/A ではありません。OutputIntent やpdfaidマーカーは含みません。アーカイブ用として扱わないでください。 - 実装 ≠ 完全準拠。 このページでは、NextPDF が実装する箇条を一覧にしています。これは、すべてのドキュメントについてすべての ISO 32000-2 箇条が満たされているという記述ではありません。それはドキュメントごとに検証ツールが下す判定です。
- 拡張には名前空間が付きます。 開発者拡張は、登録済みのプレフィックスを伴う §7.12 の Extensions 辞書を使用します。プレフィックスのない private キーはベースラインからの逸脱です。
パフォーマンス
「パフォーマンス」という見出しのセクションベースライン出力は、エンジンの中核となる処理経路です。一般的なドキュメントでは、実時間 ≤ 1500 ms、ピーク ≤ 64 MB を予算としています。ベースラインライターは、バックポートマトリックス (PHP 8.1–8.4) をサポートしています。
セキュリティに関する注意
「セキュリティに関する注意」という見出しのセクションPDF 2.0 ベースライン出力は、明示的に追加しない限り、暗号化や署名を含みません。暗号化は機密性のためのものです (別のレシピで扱います)。ISO の権限ビットはリーダーの協力に依存するものであり、アクセス制御ではありません。ベースラインはセキュリティを一切保証しません。
| 主張 | 仕様 | 箇条 | リファレンス ID |
|---|---|---|---|
| 準拠した PDF 2.0 ファイルは、準拠したトレーラー / ファイル構造を備えなければならない。 | ISO 32000-2 | §7.5.5 | |
| すべてのオブジェクトは、相互参照テーブルまたはストリームで位置を特定できる。 | ISO 32000-2 | §7.5.8 | |
| ファイルはルートオブジェクトとしてドキュメントカタログを持つ。 | ISO 32000-2 | §7.7.2 | |
| 準拠は、準拠したライターおよびリーダーの観点で定義される。 | ISO 32000-2 | §7.2 | |
| バージョン拡張は、Extensions 辞書 / 開発者プレフィックスを使用する。 | ISO 32000-2 | §7.12 | |
| タグ付き出力は、ISO 32000-2 の論理構造ベースラインを基盤とする。 | ISO 32000-2 | §14.7.2 |
引用は、検証コーパスを指す clause-id + reference_id のポインターです。規格本文は転載しません。箇条は NextPDF 独自の言葉で要約しています。