/ Flickr / Kim Siever / PD
Краткая история формата
Создателем PDF, или Portable Document Format, выступил Джон Уорнок (John Warnock), один из основателей Adobe, который захотел облегчить процесс распечатки текста и изображений с компьютера. В 1984 году Уорнок представил язык описания страниц PostScript.
В «Википедии» в качестве примера приводится код на PostScript, который отрисовывает несколько слов «Wikipedia» по кругу.
%!PS-Adobe-1.0
% По умолчанию, постскрипт использует единицу измерения 1 пункт=1/72 дюйма,
% а нам нравятся миллиметры.
72 25.4 div % 1 мм = 72/25.4 пунктов
dup % дублировать значение на вершине стека
scale % растянуть в это количество раз по обеим координатам
100 100 translate % установить начало координат в (100 мм, 100 мм)
/Times-Roman findfont % взять шрифт Times-Roman
10 scalefont % растянуть до размера 10 (у нас - мм!)
setfont % установить выбранный шрифт
0 30 330 { % цикл для углов от 0 до 330 с шагом 30
gsave % запомнить текущее преобразование координат
rotate % повернуть систему координат (угол в градусах берём с вершины стека)
15 0 moveto % перейти в точку (15 мм, 0 мм)
(Wikipedia) show % написать слово текущим шрифтом
grestore % вернуть преобразование координат
} for % конец цикла for
showpage % вывести страницу
Изначально PostScript разрабатывался как инструмент для распечатки документов на принтере, но позже Уорнок решил, что с помощью нового языка можно не только выводить документы на печать, но и полностью «оцифровать» систему документооборота.
В рамках этого видения в Adobe (основателем которой был Уорнок) создали формат IPS (расшифровывается аббревиатура как Interchange PostScript). Для работы с ним был создан Adobe Illustrator — кроссплатформенный графический редактор для Windows и Mac.
Впервые IPS показали на конференции Seybold в Сан-Хосе в 1991 году, но с таким названием формат просуществовал два года — в 1993 его переименовали в PDF. Тогда же появились Acrobat Distiller и Acrobat Reader (позднее переименованная в Adobe Reader).
Первое время PDF не пользовался популярностью. Всему виной была высокая цена на софт: Acrobat Distiller для личного пользования стоил 700 долларов, а для корпоративного — 2500 долларов. За Acrobat Reader просили еще 50 долларов. Со временем Adobe снизили цены, и популярность PDF стала набирать обороты.
К началу нулевых Acrobat Reader 4.0 скачали сто миллионов человек, а PDF-формат стали использовать крупные ИТ-компании, например Microsoft и Apple.
Как «работает» PDF
Базовый подход к представлению графики и текста в PDF очень похож на тот, что использовался PostScript. За отображение текста на странице отвечают так называемые текстовые элементы. Они обозначают, в каком месте должны быть отрисованы символы. На «Википедии» приводится код для написания Hello World:
/Courier % Название шрифта
20 selectfont % Размер шрифта в пунктах
72 500 moveto % Установка указателя по координатам 72, 500
(Hello world!) show % Вывести текст в скобках
showpage % Отобразить его на странице
Для отрисовки векторной графики в PDF используются контуры (paths): прямые линии или кубические кривые Безье. Фигуры, построенные с помощью контуров, можно залить цветом или заштриховать. Что касается растровых изображений, то их представляют в виде словарей и потоков. В словарях описаны свойства, а поток содержит двоичную информацию об изображении.
Размер PDF-файла зависит от разрешения картинок, параметров шрифтов, использования гиперссылок, видео и проч. До двухтысячных годов размер PDF-файлов измерялся мегабайтами, потому что большинство документов составляли из JPEG-картинок. Для решения этой проблемы в Adobe предложили технологию сжатия MRC (Mixed Raster Content).
MRC «делит» отсканированный файл на слои: фоновый слой, слой текста и цветовую маску. За сжатие информации, имеющейся на каждом слое, отвечает свой кодек. Например, для текста может использоваться JBIG2, который формирует группы из похожих букв и составляет из них словарь. Так, одинаковые символы кодируются по одному разу, а в остальных местах используются просто ссылки на них.
Для сжатия другого контента задействуют кодеки JPEG, JPEG2000 или ZIP. С помощью них сохраняются фон изображения, цветовыделение текста, картинки и фотографии. За счет такого подхода размер каждой страницы уменьшается в два раза и более. Наглядные примеры сжатия PDF приводит компания Abbyy в их блоге на Хабре.
Достоинства формата PDF
Одним из главных достоинств PDF-файлов является тот факт, что все страницы выглядят именно так, как их задумал автор документа. Формат сохраняет оригинальный фон, шрифты и картинки в первозданном виде, независимо от устройства или операционной системы. При этом PDF позволяет работать с интерактивными элементами: гиперссылками для навигации по сноскам. Также в документ добавляются медиафайлы: музыка, GIF и даже видеоролики.
При этом PDF-файл можно сделать доступным только для чтения, что помогает защитить содержимое документа от копирования и внесения изменений. Для дополнительной защиты есть возможность поставить пароль или электронную подпись.
Другое достоинство формата — его доступность. Программа для чтения PDF-документа Adobe Acrobat Reader сегодня лежит в сети в свободном доступе. Открывать PDF можно и на электронных книгах. Большая часть из них «умеет» работать с этим форматом по умолчанию. Его поддерживают многие приложения-читалки, например, FBreader или NEO Reader.
Минусы формата
Неизменяемость PDF-формата, хотя и является его достоинством, также оказывается большим недостатком. Такие файлы (в особенности крупные схемы и графики, ноты, документы большого формата) сложно читать на устройствах с небольшими экранами — смартфонах, или компактных электронных ридерах. Страница просто не помещается на экране устройства, или текст отображается слишком мелким.
На рынке есть электронные читалки с разрешением дисплея в 13,3 или 10,3 дюйма, что позволяет комфортно работать с листами PDF формата А4. Примерами таких гаджетов могут быть ONYX BOOX MAX 2 (обзор которого мы подготовили в нашем блоге), ONYX BOOX Note или ONYX BOOX Gulliver (на него тоже есть обзор). Они дают возможность рассмотреть все детали чертежей и иллюстраций в оригинальном размере и подойдут тем, кому часто приходится читать техническую литературу. Однако стоимость таких гаджетов довольно высока.
Возникает и другая проблема с отображением страниц документов. Она связана с форматом JBIG2. Хотя кодек позволяет сжать текст в несколько раз, он подвержен влиянию проблемы «инь» (о ней мы писали в материале про DjVu). При сжатии текста и составлении словаря некоторые символы заменяются на похожие (например, «и» превращается в «н»), что приводит к искажению сути текста.
С редактированием PDF-файлов также возникают проблемы, так как для этого приходится устанавливать специальные программы, которые часто платные (например, Acrobat DC). В сети найдутся и бесплатные сервисы для редактирования вроде PDF2GO, но они позволяют лишь добавить текст или картинки «поверх» оригинального файла.
Дальнейшее развитие
Несмотря на недостатки, сегодня PDF остается популярным форматом. Маркетинговая компания HubSpot спросила три тысячи посетителей своего сайта о том, что они делают с электронными книгами: читают онлайн или скачивают в PDF. Выяснилось, что 90% респондентов предпочитают скачивать PDF-файл.
Разработчики постоянно добавляют новые фичи, в том числе и для чтения на портативных гаджетах. К примеру, в начале 2018 команда Adobe снабдила приложение Acrobat DC улучшенными функциями отображения и редактирования файлов на мобильных устройствах.
Кроме того, в августе появились сведения о новом проекте — PDF audible. Он позволит совместить возможности PDF и функциональность голосовых помощников: Alexa, Google Home и Siri. Пока готов только прототип, но разработчики обещают выпустить рабочую версию в ближайшее время.
В Adobe следят за новыми направлениями и намерены сделать формат более интерактивным, например, добавить функции дополненной реальности. Как это будет выглядеть, пока не ясно, но разработчики обещают, что PDF-экосистема в ближайшие годы выйдет на новый уровень взаимодействия с пользователем.
Дополнительное чтение — обзоры ридеров ONYX BOOX:
Комментарии (20)
Nuwen
07.01.2019 11:40+1Не очень люблю этот формат. Большинство документов, которые встречаются, это отсканированные зоопарком оборудования бумажные доки, получается чаще всего вся страница предоставлена единственным изображением, а чтобы отредактировать его, или хотя бы оптимизировать, нужен небесплатный акробат. Единственное, почему он ещё популярен — отсутствие других простых методов создать многостраничное изображение.
Popadanec
07.01.2019 15:01Есть TIFF к примеру. Очень удобно сканировать многостраничный документ.
Newbie2
07.01.2019 18:23+1Только вот создать многостраничный tiff это ещё постараться надо. А пдфку можно получить из любой программы, отправив содержимое на печать встроенного в винду виртуального принтера.
Popadanec
07.01.2019 18:56irfanview к примеру без заморочек позволяет создать. Выбрал многостраничное сканирование и он сам создаёт файл.
Newbie2
08.01.2019 11:31Только для этого нужно ставить irfanview, он может перегонять только растр (читай — скан). А пдфка создается штатными средствами из любого софта и это очень удобно.
saipr
07.01.2019 12:26
При этом PDF-файл можно сделать доступным только для чтения, что помогает защитить содержимое документа от копирования и внесения изменений. Для дополнительной защиты есть возможность поставить пароль или электронную подпись.
С задачей подписания и проверки подписи в PDF-файлах прекрасно справляется LibreOffice, в том числе и с электронной подписью на ГОСТ-ах.
Iwanowsky
07.01.2019 12:43Самое главное достоинство PDF — документы на любой платформе (Виндовс, Линукс и пр.), выведенные на любой монитор или распечатанные на любом принтере, будут выглядеть всегда одинаково. В отличие от формата PDF документы офисных программ (DOC, DOCX, ODT и др.) на разных устройствах могут выглядеть по-разному (шрифты, переносы, отступы, стилевое оформление, положение объектов и т.д.)
zartarn
07.01.2019 13:34+1К сожалению это не так, в векторных pdf при последующей печати на линуксе вполне можно получить квадратики вместо букв)
Popadanec
07.01.2019 15:09На старых версиях офиса помню такое было, ставишь на печать одно, вылезает жопа.
На более новых(2013/365) всё почти всегда прилично. Но иногда всё же программа умничает, так к примеру программисты мелкомягких до сих пор не осилили корректную работу с принтерами печатающими без полей.
saege5b
07.01.2019 17:38+4Это если страница там отсканированная, или правильные шрифты интегрированные.
Хотя, с шрифтами там может быть всё грустно и весело одновременно. Надуть отдельными описаниями каждого символа — сплошь и рядом.
А можно вообще шрифты не вкладывать. Место съэкономить. А как чего будет отображаться — пусть пользователь сам догадывается, каких «стандартных» шрифтов ему не хватает в системе.
Права доступа. Вот ещё зоопарк. На экране — зашибись, при печати 80-90 дпи. Сам в ответку делал максимально разрешённое рпзрешение в 1 (одина) точка на дюйм.
Внутри контейнера «pdf» вообще как левая пятка разработчика зачесалась. Захотел, положил картинки отдельным потоком «как есть». Захотел — переложил всё в жипег с качеством 50%. И вдогонку раскидал по частям.
Обычно второе. 40 кб. Пнг разложить в несколько мегабайт пдф — легко!
Текст можно разобрать по символу. А можно по составляющим символа. И завернуть каждый хвостик в индивидуальный блок. Графический. С расширенными атрибутами, байт по 500 каждый «хвостик». Потом радостно ловить тормоза на мегабайтном пдф, с одной А4 страницей текста.
Субформаты. Отдельная песня. Их там три штуки вроде. Которые обычный, архивный и ещё что-то. Если у клиента не самый свежий читатель, а вдобавок если ещё и альтернативный, могут быть разные вариации результатов попыток чтения файла.
Alexey2005
07.01.2019 12:43PDF очень тормознут. Я даже не представляю, какое должно быть железо, чтобы на тяжёлых документах не приходилось втыкать по 5 секунд в пустой экран, ожидая, пока страница отрендерится. Ну и если надо быстро проскроллить с полсотни страниц, визуально выискивая нужное, PDF тоже раздражает неимоверно своими задержками.
PDF очень сложен. Простенькую программку для рендеринга fb2 средний программист напишет за выходные, и она покажет вполне приличные результаты. В случае PDF за выходные вы даже не успеете полностью прочитать спецификацию. Также если ваша программа должна выводить некоторую информацию в виде отчёта (счета за месяц, список новых поступлений с фотографиями и краткими аннотациями), то PDF — это последний формат, о котором вы задумаетесь, потому что на коленке PDF не сгенерировать, придётся как минимум искать и подключать библиотеку.zartarn
07.01.2019 13:41Достаточно добавить несколько слоев в разных цветах или иллюстраций в jpeg2000 и даже маленький пдф на десяток страниц начинает тормознуто отображаться. ридеры очень плохо могут в многопоточность. К большому удивлению, ридер в хроме рисует заметно шустрее.
В этом djvu сильно выигрывает, малоцветный, с полноцветными бэкграундами, даже на древнем железе удобно и комфортно просматривается.
oisee
07.01.2019 19:17Это Adobe Reader (DC) стал невообразимо медленным. Тот же встроенный просмотрщик в MacOS на порядок (десятичный) быстрее и к тому же редактировать PDF'ы позволяет (менять порядок страниц, объединять несколько PDF'ов в один и т.п.) Под Win — SumatraPDF, наверное, самый быстрый и удобный.
Andronas
07.01.2019 14:47Цитата «… За Acrobat Reader просили еще 50 долларов.»
Это удивительно, наверное за использование ридера пдф всё-таки плату брали недолго, иначе этот формат никогда бы не стал популярным.
geher
07.01.2019 16:54PDF хорош тем, что он является по факту стандартом, позволяющим сохранить верстку в любых условиях. Его везде понимают, если не злоупотреблять новыми возможностями и поименять адекватные инструменты для создания.
А плох тем, что тяжелый, что мало какой софт способен изменять верстку PDF под размеры экрана (да-да, достоинство порождает недостаток), что много кривого софта, который не умеет правильно генерировать PDF с национальными символами и нестандартными шрифтами.Iwanowsky
08.01.2019 00:21Есть электронные книги, кот. могут переформатировать PDF на своем чернильном экране; и в их описании про данную опцию говорится как преимущество по сравнению с др. читалками на электронных чернилах (например, читалки teXet, которых у меня было 2 разные модели в разное время).
BugM
07.01.2019 22:52PDF Хорош своей стабильностью и универсальностью. Любой файл на любом устройстве будет показан одинаково.
И плох ей же. К примеру, электронные книги не могут отрисовывать странички красиво под свой размер.
Количество костылей в PDF просто зашкаливает. Начиная от кучи древних форматов хранения картинок. Там есть такая экзотика… Включая забагованный JBIG2.
И заканчивая множествами вариантами для производства одной операции. Все можно сделать несколькими способами. Зачем непонятно. Результат абсолютно одинаков. Нет даже рекомендаций как рекомендуется делать.
Очень хочу новую ревизию с deprecated всей экзотики и рекомендациями по использованию методов для типовых вещей. Вот в этом замучаешься разбираться: T*, Tc, Td, TD, Tj, TJ, TL, Tm, Tr, Tw, Tz И это только базовый вывод текста. Функционал дублируется раза 3.
Gluzer
07.01.2019 22:54Да, когда PDF имеет несколько слоев в разных цветах, то открытие файла и последующая работа с ним напоминает замедленную съемку. На работе у диспетчера оперативная карта в формате DWG, размером под 100 Мб открывается намного быстрее, чем та же карта, но в PDF весом 21 Мб.
SantaCluster
09.01.2019 07:48задуман и реализован формат для своего времени очень правильно.
но действительно назрела необходимость "выбрать преемника" :), чтобы сохранить плюсы и избавиться от костылей и ненужного груза времени
mediaman
Спасибо за пост, еще было бы интересно почитать про форматы epub и «уникальный» киндловский MOBI