コンテンツにスキップ

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 に準拠している」という一括した主張は行いません。準拠したファイルとは、準拠したリーダーが規格に従って処理できるファイルを指します。これは検証ツールが判定するものであり、ライブラリが設定するフラグではありません。

Terminal window
composer require nextpdf/core:^3

PDF 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) が同梱されています。これらは検証を補助するものであり、証明書ではありません。

シンボル効果
ConformanceMode::Plainデフォルト — 制約のない PDF 2.0 出力。
ConformanceMode::requiresPdf17(): boolPDF 2.0 モードでは false。ライターは %PDF-2.0 ヘッダーを出力。
NextPDF\Compliance\Validator\ArlingtonValidatorArlington 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 独自の言葉で要約しています。