ブログ

PDF/A-3 の解説: ファイルが本当に準拠しているか確認する方法

PDF/A-3 は添付ファイルを合法的に保持できる一般的な PDF/A profile で、Factur-X / ZUGFeRD 電子インボイスの基盤です。違い、確認点、二重検証を解説します。

PDF/A は PDF のアーカイブ向けバージョンです。2026 年に見える文書が、2050 年にも同じように表示されることを保証するための profile です。主な profile は PDF/A-1、2、3、4 で、それぞれに conformance level があります。その中で PDF/A-3 は EU 電子インボイスを支える profile であり、広く使われる PDF/A の中で唯一、アーカイブ wrapper 内に任意の添付ファイルを持てます。

請求書、規制提出物、または “PDF + structured data” の workflow を扱うなら、PDF/A-3 は避けて通れません。ここでは何が違うのか、どこを検証すべきかを実務目線でまとめます。

PDF/A ファミリーの概要

ProfileISO partYear特徴
PDF/A-119005-12005最初のアーカイブ profile。透明度なし、JavaScript なし、フォント埋め込み。
PDF/A-219005-22011JPEG2000、透明度、レイヤーを追加。印刷再現性が向上。
PDF/A-319005-32012embedded file attachments を追加。Factur-X / ZUGFeRD の wrapper。
PDF/A-419005-42020現代的な改訂。conformance model が整理され、ba の分割なし。

Sub-level は次の通りです。

  • b (basic): 視覚的な再現性を保持。意味構造は保証しません。
  • a (accessible): 構造タグと Unicode mapping。Screen reader が正しい順序でテキストを抽出できます。
  • u (Unicode): Unicode mapping はあるが、完全な構造タグはありません。
  • e / f(PDF/A-4 のみ): エンジニアリング 3D コンテンツと完全なフォーム。

つまり “PDF/A-3b” は、添付ファイルを許可する profile 3 と、accessibility tagging を要求しない basic level の組み合わせです。請求書では最も一般的です。

PDF/A-3 の何が特別か

PDF/A-1 と PDF/A-2 は任意の embedded files を 禁止 します。アーカイブ PDF は self-contained であるべきだからです。data.xlsx のような添付が PDF と別に劣化すれば、アーカイブ保証は崩れます。

PDF/A-3 は厳密な条件付きでこのルールを緩めます。各 embedded file は AFRelationship attribute を持ち、visible PDF content との関係を示す必要があります。有効値は SourceDataAlternativeSupplementUnspecified。さらに PDF は添付を /AF array に列挙し、添付ファイルを説明する XMP metadata を出力しなければなりません。

言い換えると、PDF/A-3 は「添付してよい。ただしそれが何で、人間が見る PDF とどう関係するかを明記せよ」と言っています。この宣言が電子インボイスの基礎になりました。人間が読む invoice は PDF に、機械が読む EN 16931 CII XML は添付に入り、AFRelationship="Alternative" が両者を同じ invoice の別表現として結びます。

本番での PDF/A-3 の使われ方

  • Factur-X(フランス、2026 年以降 B2B で段階的に必須): PDF/A-3 + CII XML、XMP namespace は urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#
  • ZUGFeRD 2.x(ドイツ、2025 年から受領必須): PDF/A-3 + CII XML、XMP namespace は urn:zugferd:pdfa:CrossIndustryDocument:invoice:2p0#
  • エンジニアリング CAD アーカイブ: ネイティブ CAD ファイルを添付した PDF/A-3。PDF は rendering、CAD は source。
  • 規制提出物: FDA submissions や EU 上場企業の ESEF financial reports など、XML payloads を添付した PDF/A-3。

ここで wrapper は単なるコンテナではありません。PDF と添付ファイルが同じ文書であり、両方が validate されるべきだという contract です。

PDF/A-3 準拠を検証する方法

公式 checker は PDF Association が管理する veraPDFverapdf.org)です。ISO 19005-3 rule set を実装しており、veraPDF が “Pass — PDF/A-3b” と返すなら、単一 engine から得られる最も強い signal です。

ただし単一 engine の “Pass” は audit-grade standard ではありません(Why two PDF/A validators are better than one を参照)。実務上は 2 つの independent engines を走らせ、両方 pass した場合だけ compliant と見なします。

E-invoice ではもう一つ必要です。Mustangmustangproject.org)は Factur-X / ZUGFeRD の de-facto checker で、embedded CII XML を EN 16931 Schematron に対して validate します。PDF/A-3 conformance だけでは足りません。添付 XML が EN 16931 として正しくなければ、受信側の AP system は invoice を reject します。

多くのチームは Java、veraPDF CLI、Mustang をインストールし、shell script で結果をまとめます。動きますが、手間はあります。

validator は 3 つをブラウザーで実行します。

  1. veraPDF: 公式 reference、PDF/A-3 conformance。
  2. gPdf Rust+WASM edge engine: 独立実装による second opinion。
  3. Mustang: embedded e-invoice payloads 用の EN 16931 CII XML Schematron。

ファイルを drop すると 3 engine が parallel に走り、report が side-by-side で返ります。QA evidence 用 JSON も download 可能です。Login も quota もありません。

Report で見るべき点

Failure は多くの場合、次に集中します。

  • Embedded file metadata missing: /AF array がない、または embedded file がそこに listed されていない。
  • AFRelationship missing or wrong: e-invoice では Alternative が必要。多くの PDF libraries は SourceData を default にします。
  • XMP namespace missing or wrong: Factur-X と ZUGFeRD には固有の namespace URI があり、1 文字の typo でも fail します。
  • Fonts not subsetted or not embedded: PDF/A は使用 glyph をすべて font とともに埋め込む必要があります。
  • Output intent missing: 白黒テキストだけでも、PDF/A では sRGB などの ICC profile による colour intent が必要です。
  • Document metadata incomplete: information dictionary に /Title/Producer/CreationDate が必要です。

Report は通常、該当する spec section を示します。生成元で直してください。gPdf で生成する場合、API がこれらを自動処理し、validator が public receipt になります。

TL;DR

PDF/A-3 = PDF/A-2 + 任意ファイルを合法的に embed できる能力。この能力が EU e-invoicing を実用化します。人間が読む invoice と structured EN 16931 CII XML を 1 つの archival wrapper に入れるためです。PDF/A-3 wrapper と attached XML の両方が pass して初めて出荷できます。

POST /api/v1/e-invoice/render で生成し、validator で検証してください。3 engines(veraPDF + gPdf edge + Mustang)、1 upload、無料です。