Что такое PDF-файл? | База знаний
Введение
Как вы уже знаете из статьи о “PDL”, PDF — это статический язык описания страниц, имеющий строгую неизменяемую структуру.
PDF является одним из, если не самым популярным языком описания страниц, благодаря огромному разнообразию функций, которые разработчики из Adobe добавили в его спецификацию. Более того, Adobe также предоставляет людям инструменты, позволяющие реализовать эти функции в документах. Эта статья представляет собой краткий обзор синтаксиса, структуры и особенностей PDF.
Что такое PDF-файл?
Первоначальная цель разработки PDF или сокращенно Portable Document Format заключалась в создании формата документа, который удовлетворял бы многочисленным требованиям обмена цифровыми документами в средах, независимых от устройства и разрешения. Эти требования включают интерактивный просмотр, высокопроизводительную навигацию, малое дисковое пространство, совместную работу над документами, поддержку различного медиаконтента, шифрование, подпись, создание форм, презентацию и т. д. Несмотря на первоначальное намерение предоставить предприятиям исчерпывающий формат для обмена цифровыми документами, в спецификацию были также добавлены функции высококачественной печати, хотя и позже.
Синтаксис PDF-файла
PDF имеет модель изображения, полученную из модели PostScript, также использует 1-2-символьные длинные операторы, а также в формате AI, а также имеет постфиксный синтаксис BNF, где все необходимые операнды идут перед оператором.
operand1...operandm operator |
Помимо длины оператора, между операторами PDF и PostScript есть некоторые различия. В PDF все необходимые операнды должны предшествовать операторам, тогда как в Postscript операнды получаются из стека PostScript. В PDF оператор не возвращает результат, как в PostScript. Оператор PDF выполняет какое-либо действие для создания страницы, например рисует графику или текст, или устанавливает какое-либо свойство в графической среде. В PostScript всю работу выполняют операторы.
Обычно большая часть содержимого PDF-файлов сжимается с помощью кодировки Flate и поэтому является двоичной. Помимо сжатия PDF-файлы также можно зашифровать, чтобы ограничить доступ к содержимому документа. Поэтому весь файл следует рассматривать как двоичный. Только в том случае, если PDF-файл не сжат, не зашифрован и не содержит двоичного содержимого, такого как изображения, звук, видео и т. д., его можно считать текстовым.
Объекты спецификации PDF
В спецификации PDF объект является синонимом типа, тогда как в PostScript есть типы, которые могут быть примитивными и сложными, и последние можно назвать «объектами». Поэтому все типы в PDF, как простые, так и сложные, являются объектами. Язык PDF состоит из логических значений, целых чисел, действительных чисел, имен, строк, массивов, словарей и потоков. Строки могут быть в буквальном или шестнадцатеричном формате, как показано ниже.
( This is a string ) | literal format |
Массивы заключаются в квадратные скобки. Включает подтип Rectangle — массив из 4 элементов.
Словари хранят данные в парах «ключ-значение», где ключ — это имя или строка (для словаря имен), а значение — объект или ссылка на объект. Оно заключено в двойные угловые скобки. В словарях есть поле Тип, которое показывает, какие данные хранятся в данном словаре.
<< /Type /Example |
Объекты могут быть прямыми и косвенными. Косвенные объекты — это те, на которые можно ссылаться из других объектов по их идентификатору.
Потоки — это объекты, которые обычно содержат двоичные или закодированные данные. Они нечитабельны для человека и не имеют ограничений по длине. Обычно потоки PDF-файлов содержат сжатое содержимое страниц, изображения или другие носители. Объект Stream состоит из прямого словаря с длиной потока и массива фильтров, используемых для кодирования потока, а также закодированных данных после ключевого слова stream.
181 0 obj |
PDF-операторы
Операторы — это своего рода прямые объекты, которые создают графику страницы и, как мы упоминали ранее, представлены одно- или двухбуквенными ключевыми словами. Существует два типа операторов PDF:
* executing actions or setting properties of the graphics state.
PDF operator x y m | Description begin a new subpath by moving the current point to coordinates (x, y) |
* grouping
PDF operator BT...ET | Description begin and end a text object |
Особыми видами операторов группировки являются BX…EX. Они заключают в себе части содержимого страницы, где неопознанные объекты следует игнорировать. Таким образом, они являются эквивалентами псевдокомментариев AI %_.
Структура PDF-файла
PDF-файл имеет четыре обязательных структурных элемента.
- Однострочный заголовок, в котором написана версия языка PDF.
%PDF-1.5 |
- Таблица перекрестных ссылок. Он используется для быстрого произвольного доступа к объектам документа. Он содержит смещение в байтах до начала объектов от начала файла.
xref |
- предыдущая таблица перекрестных ссылок, если в файле их несколько;
- Корень документа, представленный словарем Каталога;
- Словарь метаинформации с полями Автор, Создатель, Название, Ключевые слова, дата создания и изменения;
- Словарь шифрования, если документ зашифрован.
trailer |
Новая таблица перекрестных ссылок и трейлер добавляются после каждого обновления документа. Оно будет описано далее в статье.
Структура документа
PDF-документ имеет древовидную структуру, корнем которой является словарь каталога.
Каталог содержит ссылки на поддерево описания страниц, поддерево структуры и другие поддеревья уровня документа и конечные узлы.
2 0 obj |
Дерево страниц содержит упорядочение узлов дерева страниц и узлов листьев страниц. Точно древовидная структура набора страниц вместе с алгоритмом поиска позволяет быстро перемещаться по тысячам страниц в поисках нужной.
Словарь страниц содержит ссылку на поток контента, который может быть сжат, как показано на рисунке выше, или несжат. В последнем случае мы увидим операторы PDF в удобочитаемом тексте, как показано на рисунке ниже.
7 0 obj |
Помимо массива дочерних узлов (это может быть дерево страниц или узлов страниц) Pages, словарь содержит ссылку на словарь Resources, который, в свою очередь, ссылается на Fonts, ProcSets, Images (XObject) и т.д.
9 0 obj |
Аннотации и другие поддеревья будут случайно упоминаться в разделе «Функции».
Функции
Графические возможности формата PDF
Нет смысла упоминать общие для большинства языков описания страниц возможности по отрисовке графики и текста. Мы лишь говорим, что богатство поддерживаемых шрифтов и цветовых пространств такое же, как и в PostScript.
Fonts - Adobe Type 0 | Color spaces - DeviceGray |
Прозрачность
PDF поддерживает прозрачность.
Внешние файлы
Любой файл мультимедиа или документа можно встроить в PDF или на него можно ссылаться из документа.
Гиперссылки
Гиперссылки поддерживаются в PDF.
Избирательный и интерактивный вид
PDF позволяет показывать только те части контента и его внешний вид, которые необходимы для определенного использования, и скрывать остальные. Это полезно, например, при импорте графики Adobe Illustrator, содержащей слои, некоторые из которых необходимы для работы в Adobe Illustrator, но не являются необходимыми для просмотра в Adobe Acrobat Reader. Другим случаем предвыборной точки зрения может быть статья, написанная на разных языках или представленная для пользователей с ограниченными возможностями, но сохраненная в одном документе. Также могут быть разные варианты использования: один вид для просмотра, проектирования и печати.
Интерактивный просмотр PDF включает в себя возможности:
- просматривать/добавлять аннотации к частям документов;
- редактировать документ с возможностью просмотра всех редакций;
- упорядочивать содержание документа в разных ветках статей, собранных по определенной тематике.
Аннотация — это своего рода плавающее поле, содержащее некоторые заметки, звук, видео или какой-либо другой контент.
Интерактивная навигация
Навигация между различными частями документа может осуществляться несколькими способами:
- перемещение по документу от начала до нужной страницы последовательно, постранично;
- переходы из одной части документа в другую с помощью контурных элементов;
- переход с одной страницы на другую по миниатюрам изображений;
- переходы из одной части документа в другую по пунктам ветки статьи;
- переход из одной части документа в другую с помощью видовых экранов и перемещение между ними нажатием
.
Перемещение по областям просмотра и скрытие некоторых частей документа реализовано с помощью словарей Viewport и NavigationNode.
Дополнительные обновления
Все изменения, внесенные в документ PDF, добавляются в документ без стирания предыдущего содержимого. И каждый раз, когда документы изменяются, добавляются новые ссылки (таблица перекрестных ссылок) и трейлер. Новая таблица перекрестных ссылок содержит ссылки на добавленные или удаленные объекты, а также на предыдущую таблицу перекрестных ссылок. Такой механизм позволяет собрать окончательное содержимое документа и в то же время сохранить предыдущие состояния документа.
Производительность
Высокая производительность навигации по страницам обеспечивается древовидной структурой страниц и эффективным алгоритмом поиска. Однако его можно еще больше увеличить, объединив повторяющиеся графические элементы в один объект, называемый Form XObject, и используя один объект во всех необходимых местах. Существует также способ оптимизировать весь документ для более быстрого просмотра. Это линеаризация. Линеаризация изначально была изобретена для эффективного просмотра PDF-документов, доступных через Интернет. Линеаризованный PDF-документ доступен только для чтения, любые изменения в нем потребуют повторной линеаризации.
Высокая производительность навигации между объектами документа реализуется за счет таблиц перекрестных ссылок, в которых хранятся смещения объектов от начала файла.
Сжатие
Сжатие PDF-документов, обычно плоское кодирование, позволяет создавать большие документы, занимающие относительно мало места на диске. Например, файл спецификации PDF, содержащий 758 страниц со структурой, миниатюрами, изображениями и таблицами, имеет размер около 9 МБ.
Безопасность
PDF-документы можно зашифровать, чтобы предоставить дифференцированный доступ только определенным пользователям, и их можно подписать. Функция цифровой подписи позволяет аутентифицировать личность пользователя и содержимое документа. Цифровая подпись связывает состояние документа, когда он подписан с использованием информации пользователя. Цифровая подпись может быть в любой форме: от чисто математического до сканирования сетчатки, если предусмотрен соответствующий обработчик подписи.
Интерактивные формы
Он используется для сбора информации от пользователей. Интерактивные формы, или так называемые AcroForms, могут проверять, форматировать и отправлять пользовательские данные на сервер.
Презентация
Существует несколько способов представления в PDF:
- действия, которые выполняются при открытии документа;
- действия, которые выполняются при открытии страницы;
- продолжительность показа страницы;
- эффекты, появляющиеся при переходе со страницы на страницу.
Медиа-контент
В документы PDF можно добавлять изображения, звуки, видеоролики и трехмерную графику.
Данные извлечения
PDF позволяет добавлять определенную разметку, которая дает внешним приложениям возможность извлекать необходимые данные. Документ с такой разметкой называется Tagged PDF.
Допечатная поддержка
Подготовка к публикации включает в себя метки принтера, цветоделение, способы вывода и треппинг.
Для чего нужен PDF-файл?
Основное применение PDF-документов — электронный обмен документами и просмотр в различных средах.
Как создать PDF-файл?
Создание и редактирование PDF-документов возможно в автономных приложениях Adobe Acrobat.
Как открыть PDF-файл?
Вы можете открывать и просматривать PDF-файлы в автономном приложении Adobe Acrobat Reader или в браузере Google Chrome с плагином PDF. Также вам помогут простые утилиты, такие как Sumatra PDF, Foxit Reader или Free PDFReader. Другой способ — просмотреть PDF онлайн, например, на Google Диске.