コンテンツにスキップ
getnextpdf.com

PDF の小史

Spec: ISO 32000-1

PDF は、ある苛立ちについてのメモから始まりました。ドキュメントはどこでも印刷できるのに、確実に送ることはできなかったのです。このページは、その問題が世界で最も広く使われるドキュメント形式の一つへとどう変わったかの短い物語です — 1993 年の PostScript 派生から、最新版にはもはや Adobe の名が冠されていない ISO 標準まで。

ここでの歴史は懐古ではありません。あなたが今日作る PDF は、何十年も前に下された決定で満ちており、その多くは今なお構造を支えています。オブジェクト番号ゼロは、世代番号 65535 を持つフリーリストの先頭ですが、それは 1993 年の設計がそう定めたからです。ページが自らを記述するのに PostScript 由来の描画演算子を使うのは、この形式が印刷言語から育ったからです。ルールがどこから来たかを知ることは、なぜそれを単純に無視できないのかを理解する最速の道であることがよくあります。

もう一つの理由は視点です。「PDF 2.0」は、きれいな再発明のように聞こえます。そうではありません。それは 30 年の堆積層に積み重なった最新の一層であり、それをリブートではなく継続として読むことこそが、その振る舞いを予測できるようにするものです。

  • PDF は PostScript — Adobe のページ記述言語 — の系譜に連なります。描画モデルを引き継ぎ、完全なプログラミング言語を捨てました。
  • John Warnock の 1991 年の社内 「Camelot」 メモが目標を定めました。誰もが開けて、どこでも同じに見えるファイルです。
  • PDF 1.0 は 1993 年に Acrobat とともに出荷されました。それは既定になる前は、有料でニッチな製品でした。
  • バージョン 1.1 から 1.7 が、それを不可欠なものにしたもの — リンク、暗号化、圧縮、フォーム、透明度、タグ付け、デジタル署名 — を、一つの仕様ずつ追加しました。
  • 2008 年、PDF 1.7 は ISO 32000-1 になりました。形式は Adobe のものであることをやめ、オープンな国際標準になりました。
  • PDF 2.0ISO 32000-2 であり、すべて ISO 内部で執筆・所有された最初の版です。再発明するよりも、統合し、引き締め、取り除いています。

NextPDF はこの系譜を、背景話ではなく実際の制約として扱います。既定では PDF 2.0 エンジンですが、形式の古い形も意図的に到達可能です。なぜなら、PDF の上に築かれた標準が今なおそれらを要求するからです。

タイムライン上の決定的な転機は 2008 年 です。それ以前、「PDF」は「Adobe の最新仕様が言うこと、何であれそれ」を意味しました。それ以後、PDF は ISO 標準(Spec: ISO 32000-1)であり、それこそが、このような独立したエンジンが存在でき、ベンダーの製品ではなく公開文書に対して適合性を主張できる理由です。現行のベースラインは PDF 2.0(Spec: ISO 32000-2, Introduction)であり、すべて ISO 内部で執筆された最初の版です。

その歴史は、エンジンにおける静かながら重要な設計上の選択を説明します。PDF のバージョンは、決して偶然ではなく、意図的な決定だということです。NextPDF は既定で 2.0 構造を書きますが、それでも古い 1.7 や 1.4 のファイル形をシリアライズできます — 感傷からではなく、PDF/A のような適合プロファイルが、それらの古い構造に対して定義され、今なおそれらを要求し続けているからです。過去は非推奨ではありません。それはサポートされた出力ターゲットです。

  1. PostScript (1984)Adobe ships a page-description language for laser printers — the drawing model the PDF inherits.
  2. Camelot memo (1991)John Warnock proposes a portable file anyone can open and that aims to render the same way everywhere.
  3. PDF 1.0 with Acrobat (1993)The format ships as a paid product. Adoption is slow; the readers and tools cost money.
  4. PDF 1.1 to 1.7 (1996 to 2006)Links, encryption, compression, forms, transparency, tagging, and signatures arrive one version at a time.
  5. ISO 32000-1 (2008)PDF 1.7 is adopted by ISO. The format becomes an open standard, no longer Adobe-owned.
  6. ISO 32000-2 / PDF 2.0 (2017, rev. 2020)The first ISO-authored edition: consolidation, tightening, and the baseline NextPDF writes by default.
PDF のバージョンの系譜をタイムラインとして。PostScript 派生が有料製品になり、1.x 系列にわたって機能を堆積させ、2008 年に ISO に手渡され、NextPDF が対象とする ISO 所有の 2.0 ベースラインに至ります。

このタイムラインの中には、じっくり向き合う価値のある細部がいくつかあります。なぜなら、それらは形式の性格を説明するからです。

それは印刷言語から来ました。 PostScript はプリンタが描けるものなら何でも描けましたが、完全なプログラミング言語でした — PostScript ファイルは永遠にループしうるのです。PDF は PostScript の座標系とグラフィックス演算子を引き継ぎ、プログラム可能性を投げ捨てました。残ったのは、完成したページの静的な記述でした。すなわち、予測可能で、有界で、安全にレンダリングできるものです。そのトレードオフこそが、PDF のページがあらゆるリーダーで同じに見える理由であり、PostScript ファイルが事実上そうであったような小さなアプリケーションではない理由です。

無料の電子的普及が転機でした。 PDF 1.0 は商用製品で、何年もの間、形式は有料の珍品でした。突破口は、リーダーを無料にし、オーサリングツールは有料のままにしたことでした。片側だけが対価を払えばよい形式は、誰もが受け取れる形式です。仕様が 1.7 に達するころには、PDF はすでに、送信中に変わってはならないドキュメントを送る既定の方法になっていました。

2008 年はルールを所有する者を変えました。 PDF 1.7 を ISO に手渡したことは、ベンダー仕様を国際標準に変えました。それこそが、独立した適合エンジンがそもそも可能になる瞬間です — 構築の拠り所となる公開文書があり、あらゆる振る舞いに対して公開された条項があるのです。

その全軌跡は、ファイルの最初の行で読み取れます。ヘッダはバージョンマーカーであり、形式の中で最も古く最も単純な契約です — 1993 年に存在し、その形は今日まで変わっていません。

%PDF-1.0 ← 1993, Acrobat 1.0
%PDF-1.4 ← 2001, transparency and the basis for PDF/A-1
%PDF-1.7 ← 2006, the version ISO adopted as 32000-1 in 2008
%PDF-2.0 ← ISO 32000-2, the first ISO-authored edition

世代を隔てた、同じ 8 バイトです。現代のリーダーは四つすべてを開けます。なぜなら、この形式は、古いリーダーが理解できないものを無視できる一方で、新しいリーダーが以前のものと互換であり続けるように設計されたからです。実際には、古いリーダーは未知の機能をかえって誤ってレンダリングすることがあるため、この保証は設計上の意図であって絶対的なものではありません。NextPDF は既定でこれらの最後のものを書き、適合プロファイルが求めるときには他のものも書けます。

落とし穴は、バージョン番号を劇的な再発明の物語として読むことです — まるで PDF 2.0 が PDF 1.7 に対して、続編が映画に対するような関係であるかのように。それは、長大な参考書の慎重な新版に近いものです。1993 年のファイルが使ったオブジェクトモデル、相互参照テーブル、トレーラは、2.0 のファイルが使うものと見てそれとわかるほど同じ仕組みです。30 年にわたって変わったもののほとんどは、元の設計の傍らに加えられたものであって、引き剥がして置き換えられたものではありません。この形式は異例なほど保守的であり、その保守性こそが眼目です。今日書かれたファイルは 10 年後も開けるべきであり、10 年前に書かれたファイルは今日も開けるべきなのです。

第二の誤解は、「ISO 32000-2 は Adobe の仕様に新しい表紙を付けたものだ」というものです。二つの ISO 版は、執筆主体において真に異なります。PDF 2.0 は、Adobe が発行し後で批准されたものではなく、ISO のプロセス内部で作られた最初の版です。それは、それが何十年も堆積したルールの統合として読める理由の一部であり、ベンダーの機能発表として読めない理由でもあります。

このページは物語的な方向づけであって、精密な変更履歴ではありません。日付は年単位で示され、「1.1 から 1.7」は 10 年以上にわたる漸進的な仕様を、意図的に一行に圧縮しています。版の間の正確な条項レベルの差分が必要なら、それは別のドキュメントです。

Historical PDF versions as an output target — edition availability
EditionAvailability
Core

Core は既定で PDF 2.0 を書き、プロファイルが求めるときには古い 1.7 や 1.4 のファイル構造をシリアライズできます。これらのバージョンのライターであって、 博物館ではありません。何十年も前に別のツールが生成した任意のレガシーファイルを読み、修復し、あるいは忠実に再構成することは約束しません。

ProAvailable
EnterpriseAvailable

NextPDF は、その系譜を尊重する PDF 2.0 エンジンであって、これまで作られたあらゆる PDF の万能の歴史家ではありません。ここでの振る舞いは、それが書くファイルを、対象とする版に固定して記述しています。それらのファイルが内部でどう構造化されているか、そして 2.0 が具体的に何を変えたかは、以下のページで扱っています。

PDF はいつも無料で読めたのですか? いいえ。リーダーは比較的早くに無料になりましたが、PDF 1.0 は有料製品として出荷されました。無料の閲覧、有料のオーサリングが、この形式を遍在させたモデルです。

PDF 2.0 は古いファイルとの互換性を壊しましたか? おおむね壊していません。共有される構造は不変であり、新機能は、古いリーダーが認識しないものを無視できるように設計されています。2.0 専用の機能は通常 1.7 リーダーには尊重されず、それをスキップするか、あるいは機能とリーダー次第で不完全にフォールバックすることがあります。

NextPDF はなぜ今なお古い構造を書くのですか? PDF の上に築かれた適合プロファイル — とりわけ一部の PDF/A レベル — が、古いファイル形に対して定義され、それらを要求するからです。過去は、非推奨ではなく、サポートされた出力ターゲットです。

  • PDF とは実際に何か — この歴史が生んだオブジェクトモデル、相互参照テーブル、トレーラ。
  • PDF 2.0: 何が変わったか — 1.7 と 2.0 ベースラインの間の条項レベルの差分。
  • 標準の全体像 — ISO 32000 が NextPDF が追跡するより広い標準の連合の中でどこに位置づけられるか。
  • アーカイブと PDF/A — この歴史の古いファイル構造が、今なお必須の出力ターゲットである理由。
  • PostScript — Adobe の 1984 年のプリンタ向けページ記述言語。完全なプログラミング言語。PDF はその描画モデルを引き継いだが、プログラム可能性は捨てた。
  • Camelot — John Warnock の 1991 年のメモに由来する、PDF となった取り組みの社内プロジェクト名。
  • PDF 1.0 — 最初に公開された PDF 仕様。1993 年に Acrobat とともに出荷された。
  • ISO 32000-1 — PDF 1.7 の 2008 年の ISO 採用。形式がオープンな国際標準になった最初の機会。
  • ISO 32000-2 (PDF 2.0) — Adobe が発行したものではなく、すべて ISO 内部で執筆・所有された最初の PDF 版。
  • 適合プロファイル — 基盤の PDF の上に重ねられた、より厳格な標準 (アーカイブ向けの PDF/A など)。多くの場合、特定の、ときに古い、ファイル構造に対して定義される。