Перейти к содержимому
getnextpdf.com

Краткая история PDF

Spec: ISO 32000-1

PDF начался как записка о разочаровании: вы могли напечатать документ где угодно, но не могли надёжно отправить его. Эта страница — краткий рассказ о том, как эта проблема превратилась в один из самых широко используемых форматов документов в мире — от ответвления PostScript в 1993 году до стандарта ISO, чья последняя редакция больше не несёт имени Adobe.

История здесь — не ностальгия. PDF, который вы делаете сегодня, полон решений, принятых десятилетия назад, и большинство из них до сих пор несущие. Объект номер ноль — это голова списка свободных объектов с поколением 65535, потому что так сказала конструкция 1993 года. Страницы описывают себя операторами рисования, унаследованными от PostScript, потому что формат вырос из языка печати. Знание того, откуда взялось правило, часто оказывается самым быстрым способом понять, почему его нельзя просто проигнорировать.

Другая причина — перспектива. «PDF 2.0» звучит как чистое переизобретение. Это не так. Это последний слой на тридцатилетнем осадочном отложении, и прочтение его как продолжения, а не перезапуска, — это то, что позволяет вам предсказывать, как он себя поведёт.

  • PDF происходит от PostScript, языка описания страниц от Adobe. Он сохранил модель рисования и отбросил полноценный язык программирования.
  • Внутренняя записка Джона Уорнока «Camelot» 1991 года сформулировала цель: файл, который любой может открыть и который выглядит одинаково везде.
  • PDF 1.0 вышел в 1993 году вместе с Acrobat. Это был платный нишевый продукт, прежде чем он стал стандартом по умолчанию.
  • Версии с 1.1 по 1.7 добавили то, что сделало его незаменимым — ссылки, шифрование, сжатие, формы, прозрачность, теги, цифровые подписи — по одной спецификации за раз.
  • В 2008 году PDF 1.7 стал ISO 32000-1: формат перестал быть собственностью Adobe и стал открытым международным стандартом.
  • PDF 2.0 — это ISO 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.
The PDF's version lineage as a timeline: a PostScript spin-off becomes a paid product, accretes features across the 1.x line, is handed to ISO in 2008, and arrives at the ISO-owned 2.0 baseline NextPDF targets.

Над несколькими деталями этой хронологии стоит задержаться, потому что они объясняют характер формата.

Он пришёл из языка печати. 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

Те же восемь байтов, на поколение друг от друга. Современный ридер может открыть все четыре, потому что формат был спроектирован так, чтобы более старый ридер мог игнорировать то, чего не понимает, а более новый оставался совместимым с тем, что было раньше. На практике более старый ридер может вместо этого отрендерить неизвестную функцию неправильно, так что гарантия — это замысел проектирования, а не абсолют. NextPDF по умолчанию пишет последний из этих, и может писать остальные, когда профиль соответствия их требует.

Ловушка — читать номера версий как историю драматичного переизобретения, как будто PDF 2.0 относится к PDF 1.7 так же, как сиквел к фильму. Это ближе к аккуратному новому изданию длинного справочника. Объектная модель, таблица перекрёстных ссылок и трейлер, которые использовал файл 1993 года, — узнаваемо та же механика, которую использует файл 2.0. Большая часть того, что изменилось за тридцать лет, была добавлена рядом с исходной конструкцией, а не вырвана и заменена. Формат необычно консервативен, и этот консерватизм — в этом и весь смысл: файл, написанный сегодня, должен по-прежнему открываться через десятилетие, а файл, написанный десятилетие назад, должен по-прежнему открываться сегодня.

Второе заблуждение — что «ISO 32000-2 — это спецификация Adobe с новой обложкой». Две редакции ISO по-настоящему различаются по авторству. PDF 2.0 — это первая редакция, произведённая внутри процесса ISO, а не опубликованная Adobe и ратифицированная после, что отчасти и есть причина, по которой она читается как консолидация десятилетий накопленных правил, а не как анонс функций вендора.

Эта страница — повествовательная ориентировка, а не точный журнал изменений. Даты даны с точностью до года, а «с 1.1 по 1.7» намеренно сжимает более чем десятилетие постепенных спецификаций в одну строку. Если вам нужны точные различия между редакциями на уровне пунктов, это другой документ.

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

Core writes PDF 2.0 by default and can serialize the older 1.7 and 1.4 file structures when a profile requires them. It is a writer of these versions, not a museum: it does not promise to read, repair, or faithfully reconstruct an arbitrary legacy file produced by another tool decades ago.

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 — внутреннее название проекта, из записки Джона Уорнока 1991 года, для усилия, которое стало PDF.
  • PDF 1.0 — первая опубликованная спецификация PDF, вышедшая вместе с Acrobat в 1993 году.
  • ISO 32000-1 — принятие PDF 1.7 в ISO в 2008 году; первый раз, когда формат стал открытым международным стандартом.
  • ISO 32000-2 (PDF 2.0) — первая редакция PDF, написанная и принадлежащая целиком внутри ISO, а не опубликованная Adobe.
  • Профиль соответствия — более строгий стандарт, наложенный поверх базового PDF (такой как PDF/A для архивирования), часто определённый относительно конкретной, иногда более старой, файловой структуры.