3.2. Формат PDF

Формат PDF (Portable Document Format) – переносимый формат документов, разработанный компанией Adobe Systems, используется как основа для создания электронных изданий в среде программного пакета Adobe Acrobat. Формат PDF – это файловый текстовой формат, используемый для представления публикаций или других документов на любой аппаратной платформе и для любой операционной среды. PDF-файл содержит PDF публикацию и специальные данные.

PDF публикация (документ) содержит одну или более страниц. Каждая страница может содержать любые компоненты электронного издания: текст, графику и иллюстрации, анимацию и видео и аудио информацию в аппаратно-независимом формате, в виде, так называемого, страничного описания (page description). PDF- публикация  может также содержать информацию, обеспечивающую навигацию в  гипертекстовой электронной публикации.

Кроме того, публикация содержит версию спецификации PDF, использованную в конкретном файле, и информацию о расположении структуры файла.

Формат PDF представляет текст и графику, используя модель формирования изображений языка программирования полос PostScript. Графическими объектами могут быть тексты и формы публикаций, векторные и растровые изображения и т.д. Графические объекты могут быть любого цвета.

Операторы создания страниц PDF подобны операторам языка PostScript. Главное отличие состоит в том, что PDF – не программный язык, и не содержит процедур, переменных и т.п.

Характерными особенностями PDF-файла являются:

- PDF файл может содержать объекты подобные гипертекстовым ссылкам, доступные только при интерактивном просмотре;

- для упрощения процесса описания страниц PDF не использует конструкции программных языков;

- PDF создает определенную структуру файла, которая позволяет программным приложениям иметь доступ к любой части документа;

- PDF файл содержит информацию о размерах шрифта и т.п.

- PDF файл не может быть прямо преобразован в PostScript – публикацию для печати.

PDF файл строится на основе либо 7 битного ASCII файла, либо на базе бинарного файла. Если это ASCII файл, в нем используются только печатные символы 7 битного ASCII кода, пробел табуляция, возврат каретки и перевод строки. В случае бинарного файла могут быть использованы все символы 8 битного кода. Считается, что ASCII - код наиболее удобный для переноса вид кодировки.

Для уменьшения размера файла PDF использует различные методы сжатия изображений:

- JPEG – для полноцветных иллюстраций и изображений в градациях серой шкалы;

- CCITT – для черно-белых изображений;

- LZW – для компрессии декомпрессии текстового материала.

Все эти методы оперируют с двоичными данными, которые могут затем быть закодированы в коде ASCII. Для обеспечения независимости от шрифтов PDF файл содержит описание для каждого шрифта, использованного в публикации. Описание включает название, кегль (размер) и стиль шрифта. В режиме просмотра публикации, если шрифт, использованный в документе, доступен, то он используется. Если не доступен, то заменяется на подобный с тем же кеглем и другими характеристиками. Некоторые шрифты могут встраиваться  в PDF - публикацию.

Для прямого поиска любой страницы файла PDF - файл содержит специальную таблицу ссылок. Таблица размещается в конце файла и способствует уменьшению времени поиска и вывода страницы в PDF – публикации, т.к. обеспечивает независимость времени поиска от общего количества страниц в документе.

Структура PDF формата представлена в виде схемы на рис. 4.

 

 

 

 

 

Рис. 4 Обобщенная структура формата PDF.

Объекты. Формат PDF поддерживает несколько основных типов объектов, например:

- bolleanлогические (true, false);

- numberчисловые (integer, real);

- string – последовательность символов в круглых скобках;

- array – последовательность PDF объектов различных типов;

- dictionary – таблицы, состоящие из двух элементов: ключа и значения (используются для соединения атрибутов сложных объектов, например, в PDF – публикациях с помощью этих объектов представляются страницы и шрифты);

- stream –  в виде объекта типа  stream представлены большие объемы данных, такие как изображения и описания страниц.

Кроме того, существует «нулевой» объект (ключевое слово – null).

Косвенные объекты могут быть помечены так, чтобы на них ссылались другие объекты. Это используется, например, для создания объекта, значение которого изначально не известно. Любой тип объекта может быть помечен как косвенный. Такой объект содержит идентификатор объекта, который  сохраняется даже при изменении самого объекта.

Любой объект, использующийся как элемент массива или значение dictionary, может быть определен, либо как обычный объект, либо как косвенная ссылка. Косвенная ссылка – это ссылка на косвенный объект, содержащая номер косвенного объекта (идентификатор), и ключевое слово R.

Структура файла. Структуру файла формата PDF можно представить в виде схемы, приведенной на рис. 5. Эта структура обеспечивает быстрый доступ к любой части файла и содержит механизм для его изменения.

Рис. 5. Структура файла формата PDF

Обычный PDF файл содержит четыре раздела:

- заголовок (header);

- «тело файла» (body);

- таблицу перекрестных ссылок (cross-reference table);

- trailer.

Заголовок. Первая строка PDF файла определяет номер спецификации PDF, которой придерживается данный файл (текущая – 1.2 %PDF-1.2).

<header> ::= <PDF version>

«Тело файла». Содержит последовательность косвенных объектов, входящих в состав публикации. Объекты – это компоненты публикации, такие как: страницы, изображения, шрифты. Комментарии могут быть во всем PDF файле. Их синтаксис совпадает с синтаксисом комментариев в PostScript, начинаются с % и заканчиваются концом строки.

Таблица перекрестных ссылок. Таблица содержит информацию о каждом объекте в файле в виде одной строки описания места объекта в файле. PDF файл содержит таблицу, состоящую из одного или более разделов. Если нет изменений, или добавлений в файл, таблица состоит из одного раздела. В противном случае, в ее состав добавляется новый раздел.

Описание раздела таблицы, состоящего из подразделов. Каждый подраздел содержит данные для непрерывной области номеров объектов. Организация подразделов удобна для пошагового изменения, потому что допускает добавление нового раздела перекрестной ссылки, содержащей данные об объектах, которые были добавлены или удалены.

Каждый подраздел перекрестной ссылки начинается со строки заголовка, содержащей два числа: объектный номер в этом подразделе и номере данных в подразделе.

Есть два формата данных таблицы: для объектов, которые используются, в том числе, и для объектов, которые были удалены.

<cross-reference entry> ::=

<in-use entry> |

<free entry>

Для объекта, который используется в публикации, содержится байтовое смещение, определяющее количество байтов от начала файла к началу объекта, номер генерации объекта, и ключевое слово n: <in-use entry>::= <byte offset> <generation number> n. Для объекта, который свободен, содержится объектный номер следующего свободного объекта, номер генерации, и ключевое слово f: <free entry>::= <object number of next free object> <generation number> f.

Когда косвенный объект удаляется, его запись в таблице помечается как «свободная», и номер генерации объекта, увеличивается на единицу, чтобы открыть возможность использования объекта с таким номером.

Trailer  позволяет программному приложению, при чтении PDF файла, быстро находить таблицу перекрестных ссылок и специальные объекты. Приложение должны читать PDF файл с конца. Последняя строка содержит маркер конца файла %%EOF. Две предшествующие строки содержат ключевое слово – startxref и байт смещения от начала файла к началу слова xref в последнем разделе таблицы ссылок в файле. Trailer dictionary предшествует этой строке.

Атрибуты trailer показывают смещения от начала файла к месту расположения последнего после изменения раздела таблицы ссылок, каталог объектов для публикации (в виде dictionary), массив двух string-идентификаторов создания и изменения файла, информация для декодирования документов и т.п....

Пошаговая коррекция документа. Содержимое PDF файла может быть изменено без переписывания всего файла. Изменения могут быть внесены в конец файла, сохраняя первоначальное содержание файла. Когда файл модифицируется, добавляются: новые или измененные объекты, раздел таблицы ссылок и новый trailer. Удаленные объекты остаются неизменными в файле, но помечаются как удаленные в таблице ссылок.

Шифрование документа. Документы или публикации могут быть зашифрованы для защиты их содержимого от несанкционированного доступа. Доступ к защищенному содержимому документа контролируется специальным «механизмом», определенным в таблице dictionary шифрования – значение Encrypt ключа в dictionary trailer.

Защита данных в файле PDF состоит из двух шагов: вычисление ключа, который должен использоваться, чтобы закодировать данные, и шифрование данных. Ключ является строкой (string) из пяти байтов. Для шифрования используется RC4 – симметричный алгоритм, который может использоваться как для шифрования, так и для дешифрования. Алгоритм RC4 не меняет длины данных.

Структура PDF - публикации.

PDF -публикация может быть описана как иерархия объектов, содержащихся в «теле» PDF файла. Структура PDF – публикации или документа представлена на рис. 6.

Рис. 6 Структура публикации в формате PDF.

Основными объектами в этой иерархии являются таблицы dictionary. Связи в иерархии представлены парами ключ - значение, в которых значение – косвенная ссылка на родительский или дочерний объект. Например, объект Catalog, который является «корнем» иерархического дерева, содержит «ключ страниц», и соответствующее ему значение – косвенная ссылка на объект корень «дерева» страниц (Pages tree).

Каждая страница документа включает ссылки к своим изображениям, миниатюрам и комментариям, которые появляются на странице. Trailer PDF файла, описанный выше, определяет место объекта Catalog, в виде значения корневого ключа (Root) в Trailer. Кроме того, trailer задает с помощью ключа Info место информационной таблице dictionary публикации, т.е. структуре, которая содержит общие сведения о документе.

Каталог (Catalog).

Catalog – объект типа dictionary, являющийся корневым узлом документа. Он содержит ссылки на «дерево» страниц в документе, ссылку на дерево объектов, представляющих схему документа (bookmarks, или outline), ссылки на статьи и список named destinations. Catalog показывает также, появляется ли схема публикации или миниатюры автоматически, когда документ просматривается (задается атрибутом типа имя со значениями: UseNone, UseOutlines, UseThumbs, FullScreen), и должна ли быть показана при открытии иная, чем первая страница. С помощью этого объекта атрибутом ViewerPreferences можно задать также параметры программы просмотра при открытии публикации.

Пример объекта Catalog:

1 0 obj

<<

/Type /Catalog

/Pages 2 0 R

/Outlines 3 0 R

/PageMode /UseOutlines

>>

endobj

Дерево страниц (Pages tree).

Доступ к страницам документа открывается через дерево узлов, названное – деревом страниц. Это дерево определяет порядок страниц в документе. Для оптимизации производительности программы просмотра, Acrobat Distiller и Acrobat PDF Writer конструируют сбалансированное дерево. Структура дерева позволяет приложению быстро открыть документ, содержащий тысячи страниц используя ограниченный объем памяти. Простейшая структура состоит из единственного узла страниц, который ссылается на все страничные объекты. Структура дерева страниц документа не связана с содержимым документа. В PDF файле книги, например, не гарантируется, что глава представлена одним узлов в дереве. Корень и все другие узлы дерева страниц являются объектами типа dictionary. Их основными атрибутами являются: имя  pages, список косвенных ссылок к непосредственным дочерним узлам, объект предок типа dictionary.

Пример:

2 0 obj

<<

/Type /Pages

/Kids [4 0 R 10 0 R 24 0 R]

/Count 3

>>

endobj

Объект «страницы» может содержать также дополнительные ключи, со значениями для объектов потомков. Такие значения называются наследованными. Например, документ может задавать объект MediaBox для всех страниц, определяя один такой объект в корневом объекте дерева, а каждая страница в документе может перегрузить MediaBox собственным, соответствующим этой странице объектом MediaBox.

Объекты страницы (pages).

Эти объекты являются объектами типа dictionary, ключи которого описывают текст, содержащийся на одной странице и изображения. Основные атрибуты: имя – Page, MediaBox Rectangle – определяет «настоящий размер» страницы, Crop box – размер для печати, Parent – объект, непосредственный предок страницы, Resources – типа dictionary (ресурсы, требующиеся этой странице), Contents – типа stream (определяет страничное описание посредством косвенной ссылки), Thumb – типа stream (содержит ссылку на миниатюру), Annots – типа array (содержит массив объектов, который определяет комментарии на страницу), B – array (если страница содержит части статей), H – boolean (true - страница скрыта во время показа документа) и т.п....

Пример иллюстрирует страницу с миниатюрой и двумя комментариями.

3 0 obj

<<

/Type /Page

/Parent 4 0 R

/MediaBox [0 612 792]

/Resources <<

/Font << /F3 7 0 R /F5 9 0 R /F7 11 0 R >>

/Process [/PDF] >>

/Thumb 12 0 R

/Contents 14 0 R

/Annots [23 0 R 24 0 R]

>>

endobj

Три ключа объекта Page: Dur (время показа), Hid  (скрытие страницы), и Trans (описывает «эффект» при переходе к данной странице), содержат информацию, которая используется только в режиме «презентации» и игнорируются в противном случае.

Миниатюры (Thumbnail).

PDF документ может включать миниатюрные схемы страниц. Миниатюра задается значением ключа Thumb объекта страницы. Структура миниатюры подобна, за небольшими исключениями, структуре изображения (см. ниже).

Комментарии (Annotations).

Комментарии – это заметки или другие объекты, которые связаны со страницей, но описываются отдельно от дескриптора страницы. PDF поддерживает несколько видов комментариев: текстовые; гипертекстовые связи; видео и аудиоинформацию.

Если страница содержит комментарии, они сохраняются в массиве как значение Annots ключа объекта страница. Каждый комментарий – объект типа dictionary. Основными ключами комментария являются: Type, Subtype, Rect. Другие ключи, определяющие: цвет (С), заголовок (T), рамку (Border или BS)  и т.п.… не являются обязательными.

Дерево закладокOutline tree (bookmarks tree).

Структура предоставляет  пользователю возможность иметь доступ к различным видам публикации по имени. Активация outline entry (называемые также bookmark (закладки)) «переносит» на новый вид, заданный в так называемом «описании места назначения» (destination description) для bookmark. Закладки часто образуют иерархическую структуру. Если документ включает закладки, они доступны по ключу Outlines в Catalog-объекте. Значение этого ключа – корень дерева закладок. Закладка верхнего уровня содержит связный список. В процессе  просмотра закладки появляются в той последовательности, в которой они входят в данный список. Основные атрибуты этого объекта типа dictionary: Count (общее количество открытых закладок), First (ссылка на закладку-начало списка), Last (ссылка на конец списка).

Пример:

21 0 obj

<<

/Count 6

/First 22 0 R

/Last 29 0 R

>>

endobj

Атрибуты закладки: Titleназвание, Dest типа array или name – место назначения (Destination), Aдействие, выполняющиеся при активации закладки, Parentссылка на закладку верхнего уровня иерархии, Prevссылка на предыдущую закладку, Nextссылка на следующую закладку.

Пример:

22 0 obj

<<

/Parent 21 0 R

/Dest [3 0 R /Top 0 792 0]

/Title (Document)

/Next 29 0 R

/First 25 0 R

/Last 28 0 R

/Count 4

>>

endobj

Место назначения (Destinations).

Комментарии и закладки могут определять место назначения, которое состоит из страницы, места на странице, и масштаба показа страницы. Назначение может быть представлено явно как массив или посредством имени. В первом случае значениями ключа Dest являются непосредственно данные о странице – Page, Top, Bottom, Left, Right, Zoom, в различных комбинациях задающие страницу и показанный «прямоугольник» на ней. Поименованные места назначения (тип string или name) часто применяются, когда закладка ссылается на другой файл. Catalog документа может содержать ключ Names со значениями, каждое из которых представляет собой дерево, подобное дереву страниц. Листья – содержат пары из strings и косвенных объектов, которые и являются destinations.

Дерево имен (Name tree).

Дерево имен похоже на дерево страниц, но «листья» содержат пары string (имен) и объектов. Такое дерево применяется для организации поименованных мест назначения. Оно состоит из узлов трех видов: корень, промежуточное, листья. Корень содержит атрибут Kids – массив и Limits – массив. Лист содержит Limits и массив Names (форма массива name value name value …,  где value – косвенная ссылка на объект). Имена в дереве сохраняются только в листьях.

Информационный объект типа dictionary (Info dictionary).

Как упоминалось выше, trailer документа может содержать ссылки на Info dictionary, который содержит информацию о публикации. Значения строковых атрибутов этого объекта представляют собой информационное окно о документе в Acrobat. В качестве атрибутовиспользуются: Author, CreationDate, ModDate, Creator, Title, Subject, Keywords.

Статьи (article threads).

Публикация может включать несколько статей (article thread), каждая из которых, в свою очередь, может содержать несколько фрагментов – bead. Статьи (threads) сохраняются в массиве как значение ключа Threads в Catalog-объекте. Каждая статья и ее фрагменты представляют собой объекты-dictionary. Атрибуты статьи: F (определяет первый фрагмент), I (содержит информацию о статье, подобен Info dictionary). К атрибутам фрагмента относят: T (ссылка на статью), V (ссылка на предыдущий фрагмент), N (следующий фрагмент), P (страница, на которой размещается фрагмент), R (прямоугольник положения фрагмента на странице).

Формы (Acrobat Forms).

Формы в Acrobat состоят из полей. Основные свойства полей: тип, имя, значение. Свойства формы PDF документа сохраняются в AcroForm dictionary, на который ссылается ключ объекта Catalog – AcroForm. Его атрибут Fields (array) – массив, состоящий из ссылок на корневые поля. Свойства полей могут располагаться непосредственно в dictionary поля, либо наследоваться, так как поля могут иметь иерархическую структуру. Атрибут поля: FT (name) определяет тип поля. Названия типов полей в формате: Btn – кнопка; Tx – текст; Ch – поле; V – значение, его формат зависит от типа поля, то есть от первого атрибута; DV – значение поля по умолчанию; Ft – набор различных характеристик поля (Read Only, Required и т.п.); Kids, Parents – атрибуты, определяющие иерархические отношения между полями. Kids организован в виде массива, каждый элемент которого является соответствующей ссылкой. Формы Acrobat используют комментарии для представления полей и управления действиями пользователя. Эти комментарии имеют подтип Widget. Для оптимизации атрибуты поля объединяются в один dictionary с атрибутами Widget. Поле, поэтому, может быть комментарием, на который ссылается Annots – ключ к какой–либо страницы.

Текстовые и поля выбора могут содержать «переменный» текст, то есть, текст, сохраненный в атрибутах поля, и появляющийся при выводе поля на экран. Следующие атрибуты, определяют появление такого текста. Атрибут DRресурсы (Resources dictionary). Как минимум он должен содержать ресурс типа шрифт. Атрибут DA характеризует свойства текста, появляющегося по умолчанию. String – содержит последовательность операторов, определяющих свойства текста: цвет, кегль (размер) и т.д.… Атрибут Q задает режим  выравнивания.

Аудиоинформация.

Звук представлен как stream объект, который состоит из объектов типа dictionary. Его атрибуты являются: R (скорость воспроизведения), C (количество звуковых каналов), B (количество bit на канал), Е (формат звука), CO (тип сжатия звука, этот атрибут может быть пропущен). Многоканальные несжатые звуковые фрагменты сохраняются в формате чередования (в порядке 1,2), для двухканального стереозвука (1 – левый канал, 2 – правый). Для проигрывания звука из другого файла, атрибут F должен содержать имя звукового файла.

Спецификация файла (File specification).

Этот тип объекта определяет место расположения файла на диске. Не зависит от операционной системы. Стандартный формат для простой спецификации файла делит строку на компоненты символом (/). Этот символ, используется как общий разделитель, который заменяется соответствующим разделителем при создании системно-зависимого имени файла. Известны спецификации файла для различных платформ

Другой вид описания спецификации файла – в виде directory (полная спецификация). Directory содержит ключ, определяющий платформу F, или ключ FS (file system). Три ключа определяют имена файлов  для соответствующих платформ: Mac, Dos, Unix.

Шрифт (Font).

Шрифт представлен в PDF формате как объект типа dictionary, определяющий тип, имя, кодировку, и другую информацию.

PDF определяет следующие типы шрифтов.

1. Type 1. К его атрибутам относят:

Base Font – имя в языке описания полос PostScript, определяющее базовый шрифт;

Firstсhar, LastChar – определяет код первого и последнего символа в массиве Widths;

Widthsмассивширины (LastChar – FirstChar + 1);

Encoding (dictionary) – определяет кодировку символов (впротивном случае используется кодировка по умолчанию: MacRomanEncoding, MacExpert Encoding, WinAnsiEncoding);

FontDescriptor – определяет размеры и ширину символа.

2. Type 3 – известен также как пользовательский шрифт и имеет следующие атрибуты:

CharProcs – ключ - имя символа, значение которого связано с ключом в stream объекте, который прорисовывает шрифт;

FontBox – прямоугольник, ограничивающий область символа (знакоместо);

Resources – список поименованных ресурсов для прорисовки шрифта.

Известны также шрифты:  TrueType, Type 0, CIDFont Type 0, CIDFont Type 2.

Любой шрифт включает атрибут – Name. Большинство шрифтов определяют также ширину символов в шрифте (смещение между началом текущего символа и следующего символа).

Внешние объекты – External Objects (XObjects).

XObjects – поименованные ресурсы. PDF поддерживает три типа таких объектов: Images, Forms и PostScript language fragments. Images – Xobject, которые используют подтип Image. Цветные изображения могут иметь один  компонент цвета (значение индексированного цвета), три компоненты (RGB, CalRGB, или Lab), или четыре базовых цвета аддитивной цветовой модели CMYK. Image XObject это объект stream. Stream dictionary должен включать все стандартные ключи потоков, а также несколько дополнительных: Name (имя ресурса), Width, Height (ширина и высота изображения), BitsPerComponent(количество бит на каждый цвет), Interpolate (сглаживание) и др.…

Form XObjects – это описание любого текста, графики или простых изображений, которые могут многократно воспроизводиться на различных страницах или в разных местах одной страницы. Также представлено в виде stream. Специфические атрибуты: Bbox (Rectangle) – определяет границы формы, Resources – список ресурсов, таких как текст или изображения, требующиеся для этой формы, XUID – уникальный идентификатор позволяющий кэшировать форму для прорисовки ее в другом месте.

Страничные описания (Page Descriptions).

В PDF страничное описание является последовательностью графических объектов. Эти объекты создают маркеры «marks», которые прилагаются к текущей странице.

Существует 4 типа таких объектов:

path object – произвольные кривые (контуры), включает операторы, определяющие наличие заливки, сглаживания и т.д.…;

text object содержит одну или более текстовых строк, которые могут быть размещены в любом месте страницы;

image object состоит из набора изображений.

External Objects(XObject) – объекты, определенные вне потока.

Страничное описание PDF не обязательно «замкнуто». Оно часто ссылается на ресурсы, такие как: шрифт, заливка, форма или изображение, не находящиеся на данной странице, а располагающиеся в другом месте файла.

Графическое состояние (Graphics state). Визуализация графического объекта определяется такими параметрами, как: толщина линии, шрифт и другими. Они являются частью graphics state. Хотя содержание graphics state подобно таким же состояниям в PostScript, есть некоторые отличия: В PDF graphics state разделено на четыре группы параметров: для текста, цвета, для основных операций маркировки, и собственно для графики. Graphics state расширено для разграничения параметров заливки и штриховки.

Special Graphics State содержит параметры, которые применяются ко всем типам графических объектов. PDF обеспечивает создание graphics state stack для сохранения и восстановления состояний (оператор q).

К Special Graphics State параметрам относятся:

Clipping path – ограничивает регион, в котором может быть применена закраска;

Current point – все рисование на странице осуществляется с помощью этого параметра (По аналогии с рисованием на бумаги, такой параметр можно назвать «местом расположения» пера, использующегося для рисования).

Special Graphics State operators: q – сохранение текущего состояния в стеке состояний, Q – восстановление графического состояния из стека, concat – модифицирует CTM (Current Transformations Matrix).

Перечислим некоторые из многочисленных General Graphics state в PDF.

Flatness – устанавливает максимальное разрешенное расстояние между точной кривой и ее приближением с помощью сегментов-линий (оператор setflat устанавливает данный параметр);

Line cap style – стиль конца линии;

Line dash pattern – стиль линии (штриховка и ее параметры);

Line join style – стиль соединения линий;

Line width – ширина линии;

Halftone – параметр полутонов.

Контуры (Path).

Используются для представления линий, кривых и областей. Сегментами могут быть прямые линии или кривые (кривые Безье). Операторы: MoveTo, LineTo – добавляет линию к контуру, CurveTo – добавляет кривую к контуру, closepath – «закрывает» контур и добавляет линию из текущей точки к началу контура, fill – заполняет контур и др.

Состояние текста (Text state).

Включает те графические параметры, которые влияют только на текст:

T c – расстояние между символами (смещение между началом одного и другого символа);

T w – расстояние между «началами» слов;

T h – ширина символов (в процентах от нормальной);

T l – вертикальное расстояние между смежными строками текста;

T fs – размер шрифта;

T f – шрифт.

PDF text object состоит из операторов, которые определяют символьные строки, перемещения текущей точки, и «текстовые состояния».

Text string operators – эти операторы прорисовывают текст на странице. Хотя можно передавать индивидуальные символы текстовым операторам, поиск текста выполняется значительно лучше, если текст группируется по параграфам. Основные операторы: Tj show – выводит текстовую строку, используя параметры из texts state . TJ – выводит текст со смещениями.

Формат PDF используется как основа представления данных  при создании электронных изданий с помощью технологий Adobe Systems в среде программного пакета Adobe Acrobat.

Hosted by uCoz