コンテンツにスキップ

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 に関連する構造を出力しますが、ファイル が準拠していると主張できるのはバリデーターだけです。

Terminal window
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 は空文字列を、PdfA4eE を、PdfA4fF を返します。

重要なエディション境界として、PDF/A-4 の ファイルオーサリング(OutputIntent ディクショナリ、埋め込み ICC プロファイル、XMP 拡張スキーマ、フォントサブセットの保証、暗号化の禁止)は、Enterprise の PdfAManager に実装されています。Enterprise の PdfAManagernextpdf/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 が必要です。

サーフェスエディション提供内容
ConformanceMode::PdfA4 / PdfA4e / PdfA4fcoreバリアント識別子
ConformanceMode::pdfaPart()4coreISO 19005 のパート番号
ConformanceMode::pdfaConformanceLetter()'' / 'E' / 'F'core§6.7.3 の適合文字
ConformanceMode::requiresPdf17()falsecorePDF 2.0 系統のゲート
Document::enablePdfA()proOutputIntent + 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.3ConformanceMode による pdfaid:part = 4pdfa:conformance の文字の出力主張あり(Core。tests/Unit/Conformance/ でユニットテスト済み)
PDF 2.0 系統のゲート§6.7.3 / ベースrequiresPdf17() による、すべての PDF/A-4 のケースでの false 返却検証済み(ユニットテスト済み)
OutputIntent + 埋め込み ICC§6.2.2Enterprise の PdfAManagernextpdf/proPremium のみ(Core では非対応)
XMP 拡張スキーマ、フォントサブセット化、暗号化の禁止§6 および附属書 A/BEnterprise の PdfAManagernextpdf/proPremium のみ(Core では非対応)
適合性の判定箇条 5NextPDF では非実行 — 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 に記録されています。