ISO 19005-4(PDF/A-4): NextPDF の機能マッピング
ISO 19005-4:2020(PDF/A-4)は、PDF 2.0 のアーカイブ用プロファイルです。このページでは、この規格を NextPDF に対して率直にマッピングします。Core が出力するもの、nextpdf/pro 拡張が追加するもの、そして NextPDF が明示的に対象外とするものを示します。NextPDF は PDF/A-4 に関連する構造を出力しますが、ファイル が準拠していると主張できるのはバリデーターだけです。
インストール
「インストール」という見出しのセクションcomposer require nextpdf/core:^3# PDF/A-4 file authoring (OutputIntent + ICC + XMP) requires:# composer require nextpdf/pro概念的な概要
「概念的な概要」という見出しのセクションISO 19005-4:2020 は ISO 32000-2:2020(PDF 2.0)の上に構築されており、ISO 32000-1:2008(PDF 1.7)の上に構築される PDF/A-2 および PDF/A-3 とは異なります。NextPDF は、この系統の違いを ConformanceMode::requiresPdf17() でエンコードします。このメソッドは、PDF/A-4 のすべてのケースで false を返し、PDF/A-2 および PDF/A-3 では true を返します。
PDF/A-4 は 3 つの適合形態を定義します。ベースプロファイルには pdfa:conformance の文字がありません。PDF/A-4e(附属書 B、エンジニアリング / 3D コンテンツ)は pdfa:conformance = E を設定します。PDF/A-4f(附属書 A、埋め込みファイル)は pdfa:conformance = F を設定します。ISO 19005-4:2020 §6.7.3 は、AIIM 名前空間の PDF/A 識別スキーマを規定しています。PDF/A-4e にも PDF/A-4f にも適合しないファイルでは、pdfa:conformance エントリを提供しないよう指示しています。NextPDF は、これを ConformanceMode::pdfaConformanceLetter() で正確に反映します。PdfA4 は空文字列を、PdfA4e は E を、PdfA4f は F を返します。
重要なエディション境界として、PDF/A-4 の ファイルオーサリング(OutputIntent ディクショナリ、埋め込み ICC プロファイル、XMP 拡張スキーマ、フォントサブセットの保証、暗号化の禁止)は、Enterprise の PdfAManager に実装されています。Enterprise の PdfAManager は nextpdf/pro 拡張に含まれています。Core のみのインストールでは、security.pdfa 機能が登録されていないため、Document::enablePdfA() は InvalidConfigException をスローします。実行可能なサンプル(examples/32-pdfa4-icc.php)は、機能レジストリを調べ、スタックトレースではなく明確なメッセージを伴って縮退することで、これを示しています。
したがって、Core 単体で提供される PDF/A-4 のサーフェスは 識別子のみ です。NextPDF は、ドキュメントが宣言する PDF/A-4 バリアントを記録します。NextPDF は、スキーマが定義する pdfaid:part = 4 / pdfa:conformance マーカーを出力します。完全な PDF/A-4 ファイルを生成することと、それが準拠していることを検証することは、別々のステップです。最初のステップには nextpdf/pro が必要です。2 番目のステップには veraPDF が必要です。
API サーフェス
「API サーフェス」という見出しのセクション| サーフェス | エディション | 提供内容 |
|---|---|---|
ConformanceMode::PdfA4 / PdfA4e / PdfA4f | core | バリアント識別子 |
ConformanceMode::pdfaPart() → 4 | core | ISO 19005 のパート番号 |
ConformanceMode::pdfaConformanceLetter() → '' / 'E' / 'F' | core | §6.7.3 の適合文字 |
ConformanceMode::requiresPdf17() → false | core | PDF 2.0 系統のゲート |
Document::enablePdfA() | pro | OutputIntent + ICC + XMP のオーサリング。Core では InvalidConfigException スロー |
コードサンプル — クイックスタート
「コードサンプル — クイックスタート」という見出しのセクション<?php
declare(strict_types=1);
use NextPDF\Conformance\ConformanceMode;
// Core: introspect the declared PDF/A-4f contract.$mode = ConformanceMode::PdfA4f;$mode->pdfaPart(); // 4$mode->pdfaConformanceLetter(); // 'F' (ISO 19005-4:2020 §6.7.3 / Annex A)$mode->requiresPdf17(); // false (PDF/A-4 is PDF 2.0 lineage)コードサンプル — 本番
「コードサンプル — 本番」という見出しのセクション<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Exception\InvalidConfigException;use NextPDF\Support\CapabilityRegistry;
// PDF/A-4 file authoring requires the Premium extension. Probe first so a// Core-only install gets a clear rationale, not a stack trace.$registry = CapabilityRegistry::getInstance();if (!$registry->get('security.pdfa')->isAvailable()) { throw new InvalidConfigException( configKey: 'security.pdfa', givenValue: 'Core-only install', expectedType: 'nextpdf/pro extension (Enterprise PdfAManager)', );}
$doc = Document::createStandalone();$doc->enablePdfA(); // Emits OutputIntent + ICC + pdfaid XMP (Premium).// … write content …$doc->save(__DIR__ . '/out/archive-a4.pdf');
// The file now CARRIES PDF/A-4 structures. Conformance is still unproven// until veraPDF asserts it://// verapdf --flavour 4 out/archive-a4.pdfエッジケースと注意点
「エッジケースと注意点」という見出しのセクション- Core では PDF/A-4 ファイルをオーサリングできません。
enablePdfA()は Core ではスローします。Core で提供されるサーフェスは、識別子と XMP マーカーのみです。 - ベースの PDF/A-4 は
pdfa:conformanceを出力しません。 ISO 19005-4:2020 §6.7.3 に従い、文字を設定するのは PDF/A-4e と PDF/A-4f のみです。ConformanceMode::PdfA4は、設計上、空文字列を返します。 - PDF 1.7 ではなく PDF 2.0 系統です。 よくある誤りは、
%PDF-1.7を期待する PDF/A-3 のパイプラインを再利用することです。PDF/A-4 は PDF 2.0 であり、requiresPdf17()はすべての PDF/A-4 のケースでfalseを返します。 - ICC の検証は Premium です。 ISO 19005-4:2020 §6.2.2 の OutputIntent ICC 検証(
acspマジック、タグテーブル、D50 白色点)は、Core ではなく Enterprise のPdfAManagerが担います。 - ライブラリはファイルの適合性を認証しません。
PdfA4fを設定してマーカーを出力しても、その出力が有効な PDF/A-4f ファイルになるわけではありません。veraPDF を実行してください。
パフォーマンス
「パフォーマンス」という見出しのセクションCore の PDF/A-4 サーフェスは、純粋な値型のイントロスペクションです(enum の match ディスパッチ、O(1)、アロケーションなし)。Premium のオーサリングパスは、書き込み時に OutputIntent と ICC パケットを追加します。そのコストは埋め込みプロファイルのサイズ分であり、ライターの予算内で処理されます。veraPDF の検証は生成とは別のステップであり、生成処理の一部ではありません。
セキュリティに関する注意
「セキュリティに関する注意」という見出しのセクションPDF/A-4 は暗号化を禁止しています。Enterprise の PdfAManager は、暗号化禁止の不変条件を強制します。Enterprise の PdfAManager は、この不変条件を enablePdfA() に対して順序付けるため、呼び出し側が誤って AES-GCM をアーカイブモードと組み合わせることはできません。Core の HasSecurity::enablePdfA() にある前方ガードは、バイトが書き込まれる前に、サポートされていない組み合わせを拒否します。アーカイブパイプラインの詳細については、プロジェクトの脅威モデルを参照してください。
これは機能の マッピング であり、適合性の主張ではありません。
| ISO 19005-4:2020 の領域 | 箇条 | NextPDF の対応範囲 | ステータス |
|---|---|---|---|
| バリアント識別スキーマ | §6.7.3 | ConformanceMode による pdfaid:part = 4 と pdfa:conformance の文字の出力 | 主張あり(Core。tests/Unit/Conformance/ でユニットテスト済み) |
| PDF 2.0 系統のゲート | §6.7.3 / ベース | requiresPdf17() による、すべての PDF/A-4 のケースでの false 返却 | 検証済み(ユニットテスト済み) |
| OutputIntent + 埋め込み ICC | §6.2.2 | Enterprise の PdfAManager(nextpdf/pro) | Premium のみ(Core では非対応) |
| XMP 拡張スキーマ、フォントサブセット化、暗号化の禁止 | §6 および附属書 A/B | Enterprise の PdfAManager(nextpdf/pro) | Premium のみ(Core では非対応) |
| 適合性の判定 | 箇条 5 | NextPDF では非実行 — veraPDF | 明示的な対象外 |
サポートは適合性ではありません。このページでは、両者を意図的に区別しています。 (a) NextPDF Core は、バリアント識別のために ISO 19005-4:2020 §6.7.3 が定義する構造を 出力 します。これは実装であり、tests/Unit/Conformance/ConformanceModePdfAVariantTest.php(合格)によって裏付けられています。(b) ファイル が PDF/A-4 に適合していることは別個の主張であり、ISO 19005-4:2020 箇条 5 に従い、バリデーターのみが行えます。箇条 5 は、適合性の実際の判定が、チェックツールによって規定要件に照らして実行されることを述べています。NextPDF は主張 (a) を行います。NextPDF は主張 (b) を行いません。veraPDF(verapdf --flavour 4 …、またはオラクルハーネス用の php oracle/run.php。これは veraPDF バイナリが存在する場合にのみ実行される、オプトインのゲートです)で検証してください。
「PDF/A-4 準拠」「完全適合」「PDF/A-4 認証済み」といった表現は、このページから意図的に除外されています。NextPDF は PDF/A-4 に関連する構造を出力しますが、適合するファイルを保証するものではありません。
引用は NextPDF コンプライアンスコーパスからの言い換えです。完全な 64 文字の reference_id ダイジェストは、ページのフロントマターおよび docs/public/modules/core/_normative-evidence-conf.md に記録されています。
- 適合性モジュール —
ConformanceModeのルーティングと veraPDF オラクル - コンプライアンスモジュール — PDF/R-1 バリデーターと Arlington グラマー
- PDF/UA-2 仕様マッピング — アクセシビリティプロファイルの対応マッピング