コンテンツにスキップ

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 判別子 (PdfA4PdfA4ePdfA4f) を保持します。Premium の nextpdf/pro エンジンは、OutputIntent、埋め込み ICC プロファイル、および XMP の pdfaid 識別スキーマを、save() の実行時に出力します。ライブラリはアーティファクトを生成します。適合性を判定するのは veraPDF です。ISO 19005-4 §6.7.3 はこの点を明確にしています。pdfaid:part/pdfaid:rev プロパティは「それ自体では適合性を決定しない」とされています。

Terminal window
composer require nextpdf/core:^3
composer require nextpdf/pro # OutputIntent + ICC + XMP authoring

Core の 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 では、適合ファイルが DestOutputProfile ICC ストリームを参照する 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 はその判定をそのプロセスに委ねています。

メソッド効果
enablePdfA(?object $version = null): staticConformanceMode::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 の制約であって、セキュリティ制御ではありません。鍵の管理や検証者のポリシーはこのプロファイルの対象外です。トラストセンターを参照してください。

PDF/A-4 の出力はプロセス内で行われ、ドキュメント、埋め込み ICC プロファイル、および XMP パケットのみを書き込みます。コンテンツがプロセス外に出ることはありません。ソースコンテンツ内の PII はインテグレーターの責任です。このプロファイルは秘匿化を行いません。

この例は、出力パスとバリデーターコマンドのみを STDERR に書き込みます。ドキュメントのバイトは記録されません。このレシピは NEXTPDF_COOKBOOK_OUTPUT を尊重し、PDF を STDOUT に出力することはありません。

PDF/A-4 ファイルはアクセス制御されません。ファイルを持つ者は誰でもそれを読めます。このプロファイルが保証するのはレンダリングの長期保存性であって、機密性ではありません。OutputIntent の ICC ストリームは公開情報として扱ってください。

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 自身の言葉で要約しています。