コンテンツにスキップ

アーカイブと PDF/A

Spec: ISO 19005-4:2020, PDF/A-4 Spec: ISO 19005-2, PDF/A-2 Evidence: Standard-backed

PDF/A は、文書が今から数十年後にも、将来のソフトウェアで読みやすく、 忠実に保たれている必要があるときに頼る形式です。このページでは、 その保証が実際に何をカバーするのか、NextPDF がどのように準拠ファイルを生成するのか、そしてチームが見落としがちな部分について説明します。PDF/A を生成することと、 ファイルが PDF/A であることを証明することは、まったく別の作業です。後者は今もあなたの責任として残ります。

アーカイブの義務は静かですが、容赦がありません。ファイルは今日の時点では問題なく見えるため、そのまま保管されます。不具合――埋め込まれていないフォント、デバイス依存の色、暗号化されたトレーラー――は何年も経ってから表面化します。その頃には元の環境は失われ、その文書が本来どのように見えるべきだったのかを誰も再現できません。その代償は、再レンダリングでは済みません。残るのは、もはや信頼できない記録です。

PDF/A は、まさにその種の不具合を取り除くために存在します。しかし「PDF/A ライブラリを使った」ことは、「このファイルが準拠している」ことと同じではありません。この二つを混同すると、 アーカイブは保存されているように見えるだけの文書を溜め込んでいきます。

  • PDF/A の目的は、時を超えて忠実で、自己完結し、デバイスに依存しない再現です ――文書の静的な視覚的外観を、それを作成したツールから独立して保持します(ISO 19005-2 序論)。
  • そのためには具体的な制約が必要です。すなわち、すべてのフォントを埋め込むことデバイス非依存の色(直接、または出力インテントを介して。ISO 19005-4 §6.2.4.1)、そしてトレーラーに暗号化がないことです。
  • NextPDF は、明示的なオプトイン方式のモードを通じて PDF/A を生成します。このモードは、黙って非準拠のファイルを出力するのではなく、非互換な操作を拒否します
  • 準拠の可否はチェックツールによって判定されるものであり、プロデューサーが主張するものではありません。 アーカイブの成否も、周囲のアーカイブ環境と手順に依存すると標準自体が述べています(ISO 19005-4 序論)。出力を検証することは、依然としてあなたが担うステップです。

NextPDF は PDF/A を、後処理フィルターではなく、文書の動作モードとして扱います。このモードはオプトインです。いったん有効になると、準拠を損ないかねない操作から文書を積極的に守ります。設計原則はフェイルファストです。アーカイブ用に見えて実はそうではないファイルを返すよりも、暗号化された PDF/A の要求をはっきりと拒否するほうがよいのです。

このシナリオには四つの段階があり、チームが省きがちなのは三つ目です。

  1. Compose for permanence Embed every font, use device-independent colour or an output intent, and avoid features the chosen PDF/A part forbids.
  2. Enable the PDF/A mode Opt in explicitly to the target conformance level. The mode now guards the document against incompatible operations.
  3. Validate independently Run a conformance checker. A passing report — not the producing library — is the evidence the archive needs.
  4. Preserve with procedure Store under records-management policy. The standard itself notes archival success depends on the environment, not the file alone.
アーカイブのシナリオを端から端まで。エンジンは準拠候補を生成し、準拠を破壊する操作を拒否します。アーカイブにとって実際に重要となる判定は、独立したバリデーターが下します。

このオプトインは単なるフラグではなく、実際に機能するガードです。PDF/A モードが有効な状態で非互換な操作――AES-GCM や標準の暗号化ハンドラの有効化――が試みられると、エンジンは型付きの非互換エラーを送出します。このガードはどちらの順序でも機能します。PDF/A を有効にしてから暗号化を要求する場合も、暗号化を要求してから PDF/A を有効にする場合も同様です。いずれの場合も、結果は明確な拒否です。 ISO 19005 は、準拠ファイルのトレーラーにおける Encrypt キーを禁止しており、 エンジンはこれを助言ではなく拘束力のある条件として扱います。

このモードは、自身の状態も正確に保ちます。特定のパート向けに PDF/A を有効にすると(たとえば PDF/A-3 のバイト忠実レベルと PDF/A-4 の違いに応じて)、文書の準拠ディスクリミナントがそれに合わせて設定されます。これにより、パートに依存するライター側のゲートは、古いデフォルト値ではなく正しい値を参照できます。これは、バリデーターがファイルを合格とするかどうかを左右する種類の内部整合性です。

このページは全体を通して標準に裏付けられています(standard-backed) Evidence: Standard-backed

目的は標準で定められています。 Spec: ISO 19005-2 は、PDF/A の主たる目的が、 電子文書を表現し、その静的な視覚的外観を、使用されたツールやシステムから独立して、時を超えて保持する仕組みであることにあると述べています。制約はそこから導かれます。 Spec: ISO 19005-4:2020, §6.2.4.1 は、色を直接、または PDF/A 出力インテントを介して、デバイス非依存に指定することを求めています。フォントに関する要件は、ベース形式によって補強されています ―― Spec: ISO 32000-2:2020, §9 は、最も予測可能で信頼できるレンダリングは、すべてのフォントが埋め込まれているときに得られると指摘しています。これはまさに、 アーカイブに欠かせない性質です。

境界も、単なる編集上の注意ではなく、標準の中に定められています。 Spec: ISO 19005-4:2020 は、その序論において、 アーカイブ目的での実装の成功が、組織のアーカイブ環境、記録管理ポリシー、そして追加の持続条件に依存すると述べています。準拠の可否は、標準の規範的要件に照らしてチェックツールが判定するものであり、プロデューサーが宣言するものではありません。

エンジンの動作はコードに裏付けられています(code-backed) Evidence: Code-backed Document::enablePdfA() は明示的なオプトインであり、 暗号化と PDF/A がいずれかの順序で組み合わされたときに型付きの非互換エラーを送出します。さらに、 文書の準拠ディスクリミナントを、選択されたパートに合わせて保持します。

以下のコードは、その境界でガードがどう動作するかを示しています。この PDF/A モードそのものは Premium ティアの機能です。 準拠チェックは、 独立した別のステップです。

<?php
declare(strict_types=1);
use NextPDF\Contracts\PdfDocumentInterface;
use NextPDF\Security\Exception\IncompatiblePdfAModeException;
/**
* Produce an archival candidate, then prove it independently.
*
* The engine refuses conformance-breaking combinations; it does NOT
* certify the result. A validator does that.
*
* @param PdfDocumentInterface $doc A document with all fonts embedded
* @param object $pdfaLevel The target PDF/A version (Premium enum)
*
* @return string The archival candidate's bytes — not yet a verified PDF/A
*/
function buildArchivalCandidate(
PdfDocumentInterface $doc,
object $pdfaLevel,
): string {
try {
// Opt in explicitly. From here the mode guards the document.
$doc->enablePdfA($pdfaLevel);
} catch (IncompatiblePdfAModeException $e) {
// e.g. encryption was already requested — refused, not silently
// downgraded into a non-conforming "archival" file.
throw new \RuntimeException(
'PDF/A and encryption are mutually exclusive for a conforming '
. 'file; resolve before archiving.',
previous: $e,
);
}
$bytes = $doc->getPdfData();
// The step teams skip: this is a CANDIDATE. Run an independent
// conformance validator before treating it as a preserved record.
return $bytes;
}

return に付けられたコメントこそが、ここで学ぶべき点です。関数名がcandidate(候補)となっているのは意図的です。エンジンが生成したのは、準拠するはずのものです。「はず」をエビデンスに変えられるのは、チェッカーだけです。

ある誤解によって、アーカイブは保存されたとは言えない文書で埋め尽くされます。すなわち*「ライブラリが PDF/A だと言っているのだから、このファイルは PDF/A である」*という誤解です。それはライブラリが下せる判定ではありません。プロデューサーは、準拠を意図したファイルを出力しても、なお規範的要件を満たし損ねることがあります。準拠の可否は、標準に照らして検証ツールが判定します。その判定こそが、監査担当者や将来の読み手が頼りにするものです。生成側ライブラリの意図を証明として扱うことが、根本的な誤りです。

もう一つ、より見えにくい落とし穴があります。PDF/A だけで文書を保存できると思い込むことです。標準それ自体が、アーカイブの成功を周囲の環境と手順に結びつけています。規律のないリポジトリに置かれた準拠ファイルは、依然としてリスクにさらされています。この形式は必要条件であって、十分条件ではありません。

  • NextPDF は準拠候補を生成しますが、準拠を証明するものではありません。 独立したバリデーターを実行してください。エビデンスとなるのは合格レポートであって、生成側ライブラリではありません。
  • PDF/A の準拠モードは Premium ティアの機能です。 Core はプレーンな PDF 2.0 を出力し、実行可能なアップグレード経路を提示します。PDF/A の保証は提供しません。下記の境界を参照してください。
  • 準拠ファイルにおいて、PDF/A と暗号化は相互排他です。 エンジンは、黙って品質を落とすのではなく、いずれの順序でもその組み合わせを拒否します。
  • エンジンは、与えられていないフォントを埋め込むことも、提供されたデバイス依存の色を修正することもできません。 永続性を前提とした構成――フォントの埋め込み、デバイス非依存の色――は、入力側の責任です。
  • アーカイブの耐久性は、ファイル単独ではなくプロセスに依存します。 ISO 19005 は、組織的な保持と記録管理の手順を、保存を成功させる要素の一部としています。
  • このページは標準に裏付けられており、Premium の公開サーフェスにおける動作レベルの内容です。いかなる認証も主張せず、付与もしません。
PDF/A archival conformance — edition availability
Edition Availability
Core

Core はプレーンな PDF 2.0 のみを生成します。 enablePdfA() は、実行可能な商用パッケージを指し示すアップグレードエラーを送出します。 Core 単独での PDF/A 保証は存在しません。

Pro

PDF/A の準拠モード(バイト忠実な PDF/A-3 レベルおよび PDF/A-4 を含む)が、暗号化非互換ガードとともに利用できます。

Enterprise

構造的な PDF/A 準拠ポリシーとレポートを追加します(それでも構造チェックであって認証ではありません。最終的な判定はバリデーターとあなたのコンプライアンスチームに委ねられます)。

  • フォント: 難しいところ ――正しく見えるフォントでも、ファイルを非準拠にしたり検索不能にしたりしうる理由。
  • ゴールデンファイルテスト ――ピン留めされた参照出力が、アーカイブ保証をひそかに破壊するバイトのずれをどう捕捉するか。
  • 請求書と電子請求 ――最も近い関連トピックです。ハイブリッド請求書キャリア自体が PDF/A ファイルだからです。
  • PDF/A ―― ISO 19005 ファミリー。長期保存のための制約付き PDF プロファイルであり、文書の静的な外観を、生成ツールから独立して時を超えて再現するよう設計されています。
  • 準拠レベル/パート ――特定の PDF/A のバリアント(たとえば PDF/A-2PDF/A-3PDF/A-4 とそのサブレベル)。それぞれが、使用できる PDF 機能を制約します。
  • 出力インテント ――埋め込まれた色特性化プロファイル。これにより、デバイス依存の色をデバイス非依存に解釈できるようになります。
  • デバイス非依存の色 ――レンダリングデバイスに関係なく一貫して再現されるよう指定された色。PDF/A の要件です。
  • 準拠チェッカー/バリデーター ――標準の規範的要件に照らしてファイルを判定する独立したソフトウェア。準拠判定を下す主体です。
  • アーカイブ候補 ――準拠を意図して生成されたファイルで、独立したバリデーターが実際に準拠していることを確認する前の段階にあるもの。