Формат файла PDF — что такое файл PDF?
Portable Document Format (PDF) — это тип документа, созданный Adobe еще в 1990-х годах. Цель этого формата файла состояла в том, чтобы ввести стандарт для представления документов и других справочных материалов в формате, который не зависит от прикладного программного обеспечения, аппаратного обеспечения, а также операционной системы. Формат файла PDF имеет полную возможность содержать такую информацию, как текст, изображения, гиперссылки, поля форм, мультимедийные материалы, цифровые подписи, вложения, метаданные, геопространственные функции и 3D-объекты, которые могут стать частью исходного документа.
В большинстве случаев существующие документы преобразуются в PDF, а не создаются новые PDF с нуля. Но это не означает, что нет программного обеспечения для создания файлов PDF или управления ими.
(Хотите поделиться чем-то о формате файлов PDF? Вы можете опубликовать свои выводы в разделе Новости формата файлов PDF.)
Формат файла PDF — краткая история
Краткий обзор временной шкалы формирования файла PDF с точки зрения временной шкалы выглядит следующим образом:
1993 — Adobe Systems сделала спецификации PDF доступными бесплатно.
2008 — PDF был выпущен как открытый стандарт 1 июля 2008 г. и опубликован Международной организацией по стандартизации как ISO 32000-1:2008.
2008 — Adobe опубликовала публичную патентную лицензию в формате ISO 32000-1, предоставляющую бесплатные права на все принадлежащие Adobe патенты, необходимые для создания, использования, продажи и распространения реализаций, совместимых с PDF.
Первая версия PDF, обозначенная как PDF 1.0, позже претерпела изменения до PDF 1.7. PDF 1.7, который стал ISO 32000-1, включает некоторые нестандартизированные проприетарные технологии, а также архитектуру Adobe XML Forms (XFA) и расширение JavaScript для Acrobat. 28 июля 2017 года был опубликован PDF 2.0, известный как ISO 32000-2:2017, который не включает никаких нестандартизированных технологий.
Характеристики формата PDF-файла
Файл PDF представляет собой набор байтов, которые можно сгруппировать в маркеры в соответствии с правилами синтаксиса, определенными спецификациями PDF. Один или несколько токенов объединяются для формирования синтаксических объектов более высокого уровня, в основном объектов, которые являются базовыми значениями данных, из которых строится документ PDF.
Файловая структура файлов PDF
Содержимое файла PDF расположено внутри файла в следующей последовательности.
|Заголовок |Тело |Таблица перекрестных ссылок |Трейлер
Заголовок файла PDF
Независимо от версии PDF файл PDF начинается с заголовка, содержащего уникальный идентификатор PDF и версию формата, например %PDF-1.x, где x находится в диапазоне от 1 до 7.
Тело файла
Тело файла PDF состоит из последовательности косвенных объектов, представляющих содержимое документа. Объекты, как описано выше, представляют компоненты документа, такие как шрифты, страницы и образцы изображений. Начиная с PDF 1.5, тело также может содержать потоки объектов, каждый из которых содержит последовательность косвенных объектов.
Таблица перекрестных ссылок
Таблица перекрестных ссылок содержит информацию, которая разрешает произвольный доступ к косвенным объектам в файле, так что нет необходимости читать весь файл, чтобы найти какой-либо конкретный объект. Таблица должна содержать однострочную запись для каждого косвенного объекта, указывающую смещение в байтах этого объекта в теле файла. (Начиная с PDF 1.5, часть или вся информация о перекрестных ссылках может альтернативно содержаться в потоках перекрестных ссылок.
Трейлер файла
Трейлер файла PDF позволяет соответствующему читателю быстро найти таблицу перекрестных ссылок и некоторые специальные объекты. Соответствующие читатели должны читать файл PDF с конца. Последняя строка файла должна содержать только маркер конца файла %%EOF. Две предшествующие строки должны содержать, по одной на строку и по порядку, ключевое слово startxref и смещение в байтах в декодированном потоке от начала файла до начала ключевого слова xref в последнем разделе перекрестных ссылок.
Объекты PDF
Файл PDF включает в себя несколько различных типов объектов следующих типов:
- Булевы значения - представляющие условное значение true или false
- Числа - целые и действительные значения
- Строки — содержат символы в круглых скобках
- Имена — начинайте с прямого символа /, например, /ASomewhatLongerName приводит к ASomewhatLongerName
- Массивы — PDF поддерживает одномерные массивы. Массивы более высоких измерений могут быть созданы с использованием массивов в качестве вложенных элементов.
- Словари - коллекция объектов в виде пар ключ-значение. Он может иметь нулевые записи.
- Потоки - представляет собой последовательность байтов, которая также может иметь неограниченную длину.
- Null Object — представляет нулевое значение
Могут быть и другие объекты, такие как комментарии, которые вводятся со знаком % и могут содержать 8-битные символы.
Косвенные объекты
Любой объект в файле PDF может быть помечен как косвенный объект. Косвенным объектам присваивается уникальный идентификатор объекта, по которому другие объекты могут ссылаться на него. Перекрестные ссылки на них сохраняются в индексной таблице и помечаются ключевым словом xref, которое следует за основным телом и дает смещение в байтах каждого косвенного объекта от начала файла.
Линейные и нелинейные макеты PDF
Макеты PDF подразделяются на близкие и нелинейные в зависимости от целевых приложений и других факторов.
Нелинейный — нелинейные PDF-файлы занимают меньше места на диске по сравнению с линейными PDF-файлами. PDF-страницы документа находятся в разбросанном виде по всему PDF-файлу, поэтому нелинейные файлы медленнее по сравнению с линейными файлами.
Linear PDF. Предназначенные для онлайн-просмотрщиков PDF, файлы Linear PDF сконструированы таким образом, что они записываются на диск линейным образом. Это не требует плагинов браузера для загрузки всего документа перед отображением.
Обзор объектов
Как уже упоминалось, тело PDF представляет собой набор объектов, упомянутых выше. PDF в значительной степени основан на PostScript без управляющих функций языков программирования, таких как команды if и loop. Команды, выдаваемые кодом Postscript для создания графического содержимого, собираются и размечаются в дополнение к любым файлам, графике или шрифтам, на которые ссылается документ. Все это содержимое аккумулируется в один файл, в результате чего получается составной вывод PostScript.
Текст
Текст в PDF представлен текстовыми элементами, которые на самом деле отображаются глифами из шрифтов. Глиф — это графическая фигура, с которой можно выполнять все графические операции, такие как преобразование координат. Из-за важности текста в большинстве описаний страниц PDF предоставляет средства более высокого уровня для удобного и эффективного описания, выбора и отображения глифов.
Графика
Графические операторы, используемые в потоках содержимого PDF, описывают внешний вид страниц, которые должны быть воспроизведены на растровом устройстве вывода. Оборудование предназначено как для принтеров, так и для дисплеев. Графические операторы образуют шесть основных групп:
- Операторы графического состояния манипулируют структурой данных, называемой графическим состоянием, глобальной структурой, в которой выполняются другие графические операторы. Состояние графики включает текущую матрицу преобразования (CTM), которая сопоставляет координаты пользовательского пространства, используемые в потоке содержимого PDF, с координатами устройства вывода. Он также включает текущий цвет, текущий путь отсечения и многие другие параметры, которые являются неявными операндами операторов рисования.
- Операторы построения пути задают пути, которые определяют формы, траектории линий и области различных видов. Они включают в себя операторы для начала нового пути, добавления к нему сегментов линий и кривых и его закрытия.
- Операторы рисования контура заполняют контур цветом, рисуют вдоль него штрих или используют его в качестве границы отсечения.
- Другие операторы рисования рисуют определенные графические объекты с самоописанием. К ним относятся сэмплированные изображения, геометрически заданные затенения и целые потоки контента, которые, в свою очередь, содержат последовательности графических операторов.
- Текстовые операторы выбирают и отображают глифы символов из шрифтов (описания гарнитур для представления текстовых символов). Поскольку PDF обрабатывает глифы как обычные графические формы, многие текстовые операторы можно сгруппировать с операторами состояния графики или операторами рисования. Однако структуры данных и механизмы для работы с описаниями глифов и шрифтов достаточно специализированы.
- Операторы маркированного контента связывают логическую информацию более высокого уровня с объектами в потоке контента. Эта информация не влияет на отображаемый вид контента; это полезно для приложений, которые используют PDF для обмена документами.