PDF/A-4 適合性: NextPDF が ISO 19005-4 向けに出力するもの
境界に関する声明。 NextPDF は PDF/A-4 への適合を意図した出力を生成します。 ライブラリ自体は適合性を主張しません。判定するのはバリデーター (たとえば veraPDF) です。
PDF/A-4 は ISO 19005-4:2020 であり、PDF 2.0 ベースのアーカイブ用プロファイルです。NextPDF Core は ConformanceMode 判別子 (PdfA4、PdfA4e、PdfA4f) を保持します。Premium の nextpdf/pro エンジンは、OutputIntent、埋め込み ICC プロファイル、および XMP の pdfaid 識別スキーマを、save() の実行時に出力します。ライブラリはアーティファクトを生成します。適合性を判定するのは veraPDF です。ISO 19005-4 §6.7.3 はこの点を明確にしています。pdfaid:part/pdfaid:rev プロパティは「それ自体では適合性を決定しない」とされています。
インストール
「インストール」という見出しのセクションcomposer require nextpdf/core:^3composer require nextpdf/pro # OutputIntent + ICC + XMP authoringCore の security.pdfa 機能は登録されていますが、nextpdf/pro がない場合は利用不可として報告されます。その場合、enablePdfA() は非適合ファイルを出力せず、アップグレード手順を示す InvalidConfigException をスローします。
概念的な概要
「概念的な概要」という見出しのセクションDocument::enablePdfA(?object $version = null) は、PdfAVersion 列挙型の入力を ConformanceMode のケースにマッピングします。認識できない入力では ConformanceMode::PdfA4 が既定です ('4e' → PdfA4e、'4f' → PdfA4f)。このモードは、適合ファイルに対して規格が求める 3 つの出力義務を駆動します。
- OutputIntent + ICC — §6.2.3 では、適合ファイルが
DestOutputProfileICC ストリームを参照する PDF/A-4 OutputIntent で色特性を指定できるとされています。§6.2.4.1 によれば、これはデバイス非依存色への 2 つの許容ルートのうちの 1 つです (もう 1 つはデバイス非依存色空間を直接指定する方法)。したがって OutputIntent は NextPDF が採用するルートであり、規格による無条件の要件ではありません。 pdfaid識別 — §6.7.3 は、ドキュメントレベルの XMP (AIIM のpdfaid名前空間) にpdfaid:part/pdfaid:revを保持する PDF/A 識別スキーマを含めることを要求します。PDF/A-4e と PDF/A-4f はさらにpdfa:conformance(E / F) を設定します。§6.7.3 はまた、いずれにも適合しないファイルは決してpdfa:conformance値を提供できないと定めています。- フォントの埋め込み — §6.2.10 は、レンダリングに使用するすべてのフォントを埋め込むことを要求します。
NextPDF はこれらを出力しますが、§5 の適合性判定は実行しません。それは veraPDF の役割であり、§6.7.3 はその判定をそのプロセスに委ねています。
API サーフェス
「API サーフェス」という見出しのセクション| メソッド | 効果 |
|---|---|
enablePdfA(?object $version = null): static | ConformanceMode::PdfA4/PdfA4e/PdfA4f へルーティングし、save() で OutputIntent + ICC + XMP をスケジュールします。nextpdf/pro が存在しない場合は InvalidConfigException|PageLayoutException|CompressionException が発生します。 |
ConformanceMode::pdfaPart(): ?int | アクティブなモードに対応する ISO 19005 のパートを返します (PdfA4* では 4)。 |
ConformanceMode::pdfaConformanceLetter(): string | 戻り値は pdfa:conformance の文字 (E / F) です。該当しない場合は空文字列を返します。 |
コードサンプル — クイックスタート
「コードサンプル — クイックスタート」という見出しのセクション<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;use NextPDF\Exception\InvalidConfigException;use NextPDF\Support\CapabilityRegistry;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/archival.pdf';
$registry = CapabilityRegistry::getInstance();if (!$registry->get('security.pdfa')->isAvailable()) { fwrite(STDERR, "PDF/A-4 requires nextpdf/pro.\n"); exit(1);}
try { $doc = Document::createStandalone(); $doc->enablePdfA(); // ConformanceMode::PdfA4 $doc->setTitle('Archival Record 2026-0042'); $doc->setLanguage('en'); $doc->writeHtml('<h1>Archival record</h1><p>Body.</p>'); $doc->save($out); // OutputIntent + ICC + XMP scheduled here} catch (InvalidConfigException $e) { fwrite(STDERR, $e->getMessage() . "\n"); exit(1);}
echo "Wrote {$out} — validate: verapdf --flavour 4 {$out}\n";コードサンプル — 本番
「コードサンプル — 本番」という見出しのセクションバリデーターの判定をビルドゲートとして扱います。出力に対して verapdf --flavour 4 を実行し、非ゼロの終了コードでビルドを失敗させます。バリデーターの判定がゲートです。ライブラリの出力はその入力であって、判定そのものではありません。完全なゲート付きパイプラインについては /cookbook/php/pdfa4-conformance-gate/ のレシピ を参照してください。
エッジケースと注意点
「エッジケースと注意点」という見出しのセクション- コンテンツの前に有効化する。 コンテンツを追加する前に
enablePdfA()を呼び出してください。後で有効化しても、すでに書き込まれたオブジェクトは再処理されません。 - 暗号化なし。 PDF/A は
Encryptキーを禁止します。PDF/A ドキュメントに対してsetEncryption()を呼び出さないでください。暗号化が提供するのは機密性であり、アーカイブの完全性ではありません。ここでは両者は相互に排他的です。 pdfa:conformanceは条件付き。 これを設定するのは PDF/A-4e と PDF/A-4f のみです。通常の PDF/A-4 ファイルにこれを出力すること自体が適合性違反 (§6.7.3) であり、ConformanceModeのケースが構造上それを防ぎます。- PDF/A-4f の添付ファイル。 PDF/A-4f ファイル内の埋め込みファイルは、
FおよびUFキー (Desc は推奨) を §6.7.5 に従って保持する必要があります。これは ZUGFeRD/Factur-X のハイブリッドパスを支えています。
パフォーマンス
「パフォーマンス」という見出しのセクションOutputIntent + ICC の埋め込みは、save() 時に固定サイズの ICC ストリーム (作業空間プロファイル) と XMP パケットを追加します。一般的なドキュメントでは、ウォール時間 ≤ 1500 ms、ピークメモリ ≤ 128 MB を予算としています。
セキュリティに関する注意
「セキュリティに関する注意」という見出しのセクションPDF/A-4 は暗号化を禁止します。このプロファイルは archival/longevity の制約であって、セキュリティ制御ではありません。鍵の管理や検証者のポリシーはこのプロファイルの対象外です。トラストセンターを参照してください。
データレジデンシーと PII の緩和策
「データレジデンシーと PII の緩和策」という見出しのセクションPDF/A-4 の出力はプロセス内で行われ、ドキュメント、埋め込み ICC プロファイル、および XMP パケットのみを書き込みます。コンテンツがプロセス外に出ることはありません。ソースコンテンツ内の PII はインテグレーターの責任です。このプロファイルは秘匿化を行いません。
安全なテレメトリとログのスクラビング
「安全なテレメトリとログのスクラビング」という見出しのセクションこの例は、出力パスとバリデーターコマンドのみを STDERR に書き込みます。ドキュメントのバイトは記録されません。このレシピは NEXTPDF_COOKBOOK_OUTPUT を尊重し、PDF を STDOUT に出力することはありません。
脅威モデル
「脅威モデル」という見出しのセクションPDF/A-4 ファイルはアクセス制御されません。ファイルを持つ者は誰でもそれを読めます。このプロファイルが保証するのはレンダリングの長期保存性であって、機密性ではありません。OutputIntent の ICC ストリームは公開情報として扱ってください。
FIPS モードの動作
「FIPS モードの動作」という見出しのセクションPDF/A-4 の出力は暗号処理を一切行いません。PDF/A-4 ファイルへのデジタル署名 (PDF/A-4 §6.5 は PAdES プロファイルを許可) は別個の署名レシピで扱う事項であり、そのレシピの FIPS 姿勢を継承します。このページは署名に関する主張を行いません。
| 主張 | 規格 | 条項 | リファレンス ID |
|---|---|---|---|
| PDF/A-4 ファイルは、DestOutputProfile ICC プロファイルを参照する PDF/A OutputIntent で色特性を指定できます。 | ISO 19005-4 | §6.2.3 | |
| デバイス非依存色は、直接、または OutputIntent の DestOutputProfile を介して間接的に指定できます (許容される 2 つのルートのうちの 1 つ)。 | ISO 19005-4 | §6.2.4.1 | |
| PDF/A のバージョンは、ドキュメント XMP 内の PDF/A 識別 (pdfaid) スキーマを介して識別されます。 | ISO 19005-4 | §6.7.3 | |
| pdfaid:part / pdfaid:rev はそれ自体では適合性を決定しません。判定は Clause 5 に従って行われます。 | ISO 19005-4 | §6.7.3 | |
| PDF/A-4e にも PDF/A-4f にも適合しないファイルは、pdfa:conformance 値を提供してはなりません。 | ISO 19005-4 | §6.7.3 | |
| PDF/A-4f の埋め込みファイルは F および UF キーを必要とします (Desc は推奨)。 | ISO 19005-4 | §6.7.5 | |
| レンダリングに使用するすべてのフォントを埋め込む必要があります。 | ISO 19005-4 | §6.2.10 | |
| 透明度 / 色の使用は、宣言された OutputIntent に依存します。 | ISO 19005-4 | §6.2.9 |
引用は、検証コーパスへの clause-id + reference_id ポインターです。規格本文は転載しません。条項は NextPDF 自身の言葉で要約しています。