PDF с точки зрения программиста. Формат PDF. Описание (про PostScript), преимущества, недостатки. Предназначение и особенности формата. ПО для работы с форматом

  • 21.07.2019

Приветствую, друзья!

Мне намедни сделали предложение написать обзор программы для в редактируемый формат. Естественно, от такого предложения я не смог отказаться, тем более, что мне пообещали подарить полную лицензию данной программулины. Да и лестно, если честно пообщаться с зарубежным разработчиком напрямую, а не через поддержку)))

К вопросу знания английского языка. Я как и многие в нашей стране владею только двумями)) языками: русским и матерным))) Но это не мешает мне спокойно общаться и с зарубежными разработчиками и с поддержкой (у меня есть и иногда приходиться задавать вопросы).

Вот так и переписываемся: они мне на английском, я им на русском. Причем, я как-то написал что, вот мол, звиняйте не владею английским, а мне в ответ пришло: «Ладно тебе, парень, я сам не особо владею английским, живу в Индии, работаю в поддержке удаленно и спокойно пользуюсь гугл-переводчиком». Вот так…

Сижу вот неделю уже кручу-верчу-изучаю программу, даже почти сел писать обзор… Но прежде, чем писать о программе (очень неплохая программа, кстати) решил еще раз написать о файлах PDF.

Спокойно! Не надо закрывать статью!

Все дело в том, что файлы PDF бывают разными. Да-да, именно разные. И именно поэтому, у многих людей не получается редактировать PDF-файлы. Ко всему прочему, недавно у меня сложилась некая структура того, какими бываю PDF-ки.

Итак, если рассматривать pdf-фалы с точки зрения их создания, то получим следующее:

Первое. PDF как изображения

Редактировать такие пдфки возможно только двумя способами:

  • Открывать в графическом редакторе, например в Фотошоп, и редактировать, как картинку(изменять яркость и контраст, менять насыщенность, вырезать и затирать и тд). Но если у вас отсканированный текст, то можно сделать проще.
  • Воспользоваться программой распознавания текста, так называемой системой OCR. За последние лет 20 (!), что я активно использую такие системы, пока ничего лучше программы FineReader не встречал. Нет, попадались мне хорошие решения, но как правило, с распознованием русского языка в них были проблемы…

Второе. PDF созданные из разных приложений

Еще пару лет назад создать PDF было проблемой, приходилось использовать или какие-то . Прогресс не стоит на месте и на текущий момент создать PDF-файл можно практически из любого офисного приложения (как сделать pdf в Word я писал ).

Так вот, pdf созданные подобным образом можно редактировать, практически, как угодно и чем угодно. Вплоть, до простого копировать-вставить.

Кстати, любой PDF-файл замечательно открывается в Фотошопе, имейте ввиду…

Исключением могут являться документы, на которых стоит защита. Но это уже другая, довольно занимательная, история… Я даже провел несколько экспериментов по установке и снятию защиты, но расскажу об этом в другой раз.

Третье. Интерактивные PDF

Современный тренд в подаче электронных материалов. В виде интерактивных PDF могут быть сделаны и книги, и журналы, и резюме и многое другое. Даже различные бланки и то, могут считаться интерактивными, хотя бы потому, что после заполнения такого бланка его можно отправить по электронной почте с помощью кнопки «Отправить» встроенной прямо в PDF-документ (Справедливости ради, стоит отметить, что реализован такой функционал довольно коряво — по нажатию на кнопку «Отправить» происходит запуск почтового клиента, типа OutLook, в котором уже открывается новое письмо с вложенным файлом…)

Кроме всего прочего, современный PDF позволяет встраивать и, соответственно, просматривать в любой программе для просмотра PDF:

  • Внешние и внутренние ссылки
  • Слайдеры (галерея самосдвигающихся картинок)
  • Видеоролики
  • Аудиотреки
  • Элементы интерфейса (кнопки, списки, выпадающие списки)
  • Увеличение изображений при наведении
  • Различные анимации

Если в двух словах, то в формате PDF можно сделать почти современный сайт со всем его функционалом…

Но есть тут и свои подводные камни:

Во-первых, чтобы реализовать такой интерактив, потребуется уметь пользоваться на хорошем уровне программой InDesign.

Во-вторых, не всегда и не на всех компьютерах такие файлы могут работать (на компьютере должен быть установлен флеш проигрыватель).

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

В-четвертых, я так и не смог заставить работать gif-анимацию в pdf, видимо эта штука не поддерживается. Если кто знает как сделать что бы работала gif-анимация в pdf, дайте знать в комментариях.

С другой стороны, преимущества интерактивного PDF перевешивают все его минусы. Да и при необходимости, отредактировать или конвертировать такой файл так же элементарно, как и PDF сделанный из Word.

Вот какие базовые виды PDF-файлов получили нынче распространение… Есть еще комбинированные виды, например можно комбинировать pdf-изображение и интерактивный pdf. Как всегда, все зависит от того, что вам требуетcя получить на выходе от pdf.

На этом, дорогие друзья, я с вами прощаюсь до следующей статьи. Всем удачи!

Я имею дело с PDF не только как пользователь, а, прежде всего, как разработчик софта, умеющего его читать и писать (возможно, вы сталкивались с продуктами компании ABBYY, работающими с PDF – ABBYY FineReader, ABBYY PDF Transformer). Я предполагаю, что вы прочитали статью habrahabr.ru/company/abbyy/blog/105006 и далее пишу только про некоторые особенности и ограничения PDF, которые больше интересны продвинутым пользователям. Никаких сложных технических деталей при этом не буду касаться, так что программистам, желающим научиться читать или писать PDF, лучше сразу перейти к чтению спецификацию версии 1.7 со страницы www.adobe.com/devnet/pdf/pdf_reference_archive.html :)

Назначение и особенности PDF
Изначально формат PDF задумывался компанией Adobe ещё в конце 80х годов прошлого века как «электронная твёрдая копия» странично-структурированных документов, которую можно просматривать и печатать в виде, идентичном оригинальному, на разных машинах и платформах, но который не предполагается редактировать. Это определение отличает PDF от большинства других форматов хранения и распространения человеко-читаемых документов. За прошедшие годы PDF сильно эволюционировал, являясь в настоящее время контейнером для самого разнообразного контента (текст, векторная и растровая графика, интерактивные элементы, формы, аудио, видео, аннотации разных видов), но его исходное предназначение до сих пор остаётся источником как его возможностей, так и многочисленных ограничений.

Так, форматы текстовых документов (DOC, RTF, DOCX и т.д.) в основном ориентированы не на просмотр, а на редактирование документов. Созданный разумным пользователем:) документ логично реагирует на вставку/замену/удаление текста, картинок, таблиц в разных местах, изменение размеров и полей страниц, изменение форматирования фрагментов текста любого размера и тому подобные действия. Интернет страницы в формате HTML не слишком ориентированы на редактирование (хотя и допускают его), но при условии прямых рук автора нормально переносят отображение не только на экране монитора своего создателя, но и на устройствах с совершенно другими экранами и взаимодействием с пользователем.

PDF-принтер переводит GDI(«интерфейс графических устройств»)-команды вывода в нужные места символов, линий, кривых, прямоугольников, растровых изображений и прочих геометрических примитивов в соответствующие им PDF-команды с сохранением в файл. При этом, разумеется, сохраняются количество и размер страниц, на которое выполнялась печать.

Такое преобразование способно очень точно передать внешний вид того, что получилось, перед печатью (например, линии и символы не теряют своей чёткости при любом масштабировании и при этом хранятся достаточно компактно), но совершенно игнорирует устройство документа, из которого это получилось. Например, для подчёркивания слова или другого фрагмента текста в PDF не предусмотрено выделенной команды или атрибута символов – вместо этого отдельно выводятся символы (группами, которые обычно даже не совпадают со словами или строками), а отдельно рисуются линии или тоненькие прямоугольники нужной толщины и цвета в нужных местах страницы. Таблицы, которые человек воспринимает как целостный набор ячеек, для приложения, отображающего PDF, – просто хаотический набор символов и линий, по случайному совпадению образовавших нечто, воспринимаемое человеком как таблица. Гиперссылки, которые в исходном документе можно было использовать как для навигации внутри документа, так и для перехода на Веб-адреса, при печати исчезают как средство навигации, остаются лишь окрашенные и/или подчёркнутые надписи. В общем, сплошные имитация и надувательство. Такие PDF я ниже буду называть «векторными» (как состоящие из векторных команд, к которым относится и рисование символов).

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

Некоторые современные приложения (в том числе приложения комплекта OpenOffice, Microsoft Office новых версий, ABBYY FineReader и ABBYY PDF Transformer) умеют создавать PDF самостоятельно, пользуясь при этом гораздо большим арсеналом средств, чем PDF-принтеры, ибо знают об исходном документе гораздо больше, чем нужно передать принтеру. Это позволяет сохранить, например, гиперссылки как таковые (а не просто как окрашенный и/или подчёркнутый текст) или описать некоторые элементы структуры документа для его переформатирования и показа на экранах малых разрешений. Такие документы со структурной информацией называются «тегированными» или «tagged» PDF. По замыслу Adobe, «тегирование», добавленное начиная с Acrobat 5, призвано скрыть наиболее вопиющие недостатки ранних версий PDF. Например, для нетегированных документов не гарантируется корректная работа механизма копирования фрагментов текста в буфер обмена Windows (всем привычный Copy-Paste). При этом даже сегодня тегированными являются не все создаваемые PDF, в том числе из-за ограниченных возможностей программ-генераторов (или незнания пользователями, где включить нужную для этого галочку в настройках), или просто из-за большего размера таких PDF, когда остро стоит вопрос экономии дискового пространства при хранении больших архивов.

Преобразование PDF-документов в другие форматы
Желание отредактировать содержимое PDF-документа или преобразовать его в другие, желательно редактируемые форматы (как для немедленного редактирования, так и для хранения с возможностью поиска/редактирования «когда-нибудь»), возникает по разным причинам. Простейшие средства извлечения текстового содержимого предоставляет любое приложение, отображающее PDF – я имею привычный Copy-Paste, который работает довольно примитивно – как правило, теряется символьное и абзацное форматирование, игнорируются таблицы и сложная вёрстка PDF-документа. Есть приложения, которые позволяют «точечно» редактировать PDF без преобразования в другие форматы – но их арсенал средств редактирования очень ограничен, ну просто никакого сравнения с привычными текстовыми процессорами:) В дорогущем Adobe Acrobat для многих документов единственным работающим видом редактирования является «аннотирование» – есть инструменты для добавления комментариев, выделения текста маркером, зачёркивания и т.п. Да, более продвинутое редактирование как бы есть, но вы, случайно, не встречали забавного сообщения «All or part of the selection has no available system font. You cannot add or delete text using the currently selected font.» при невинной попытке удалить символ или слово из «хорошего», «векторного» PDF-документа в Акробате? А не пробовали заменить фрагмент строки на более длинный, грустно наблюдая уползающие вправо хвосты строк? Если нет, значит любовь к продуктам Adobe у вас ещё впереди! К простым и привычным для текстовых процессоров задачам – например, «заменить за несколько секунд по всему документу слово «MS» на «Microsoft», с изменением размещения текста по колонкам и страницам» – такое «редактирование» и близко не стоит.

Неслучайно в софтверной индустрии сформировалась целая отрасль, производящая средства конверсии с лучшей функциональностью. Из написанного выше (и особенно – ниже), должно стать понятно, насколько это непростая задача. Большинство пользователей, не читавших этого креатива, так не считают – поэтому я его и пишу:)

Основные проблемы при преобразовании PDF в другие форматы
Часто в обсуждении связанных с PDF вопросов употребляется понятие «текстового слоя». Интуитивно многими пользователями предполагается, что в PDF-файлах есть такие выделенные части, где логично и понятно описаны все нужные характеристики видимого текста – или невидимого, но находимого поиском или выделяемого мышью. Хочу открыть вам страшную тайну (вероятно, с риском в ближайшее время получить пулю от киллера, подосланного авторами формата PDF и их отделом маркетинга) – никакого текстового слоя в указанном смысле в PDF нет! На деле для каждой страницы есть общий поток команд её рисования, в котором совершенно произвольно перемешаны разнотипные команды – задания областей отсечения, смены текущих толщины, цвета и шаблона пунктирности линий, изменения системы координат, смены шрифта, рисования прямых и кривых (с текущими атрибутами), вывода группы символов с текущими атрибутами и указанными «номерами глифов» (глиф – описание изображение символа, без учёта других его характеристик), вывода растровых картинок и т.п. То есть даже специальные текстовые команды – это просто один из многих инструментов рисования, не выделенный в отдельные потоки.

Хуже другое – даже в пределах одной страницы PDF можно использовать (слишком) широкий набор средств изображения похожего глазу текста: буквы могут быть видны как части растрового изображения – например, в логотипах (задача их распознавания – в чистом виде задача OCR-приложений, того же ABBYY FineReader), как результат рисования кривыми Безье или специальными текстовыми командами. Этот последний случай – самый лучший для обработки, но даже здесь не обязательно указываются общепринятые коды символов из Unicode или других кодировок – ибо в PDF-файл можно записывать особые шрифты из подмножества только реально использованных символов и ссылаться на символы по совершенно условным «номерам глифов», а не по кодам. То есть не всегда просто как обнаружить символы в нужном месте, так и определить их коды! С форматированием, в том числе с выбором похожего шрифта при отсутствии точного аналога, всё ещё хитрее.

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

Когда мы решили, что в некоторых местах страницы есть связный текст (а где-то даже поняли, как он сгруппирован в таблицы – это очень нетривиальная задача!), и нашли, какие символы и в какие строчки складываются, нужно преобразовать эти строчки в абзацы и более высокоуровневые элементы, привычные пользователям как текстовых процессоров, так и HTML – колонки, таблицы, врезки. Данных об абзацном форматировании в PDF обычно нет, так что все эти характеристики тоже нужно вычислять – как при всём том же распознавании. Если пытаться игнорировать элементы текста сложнее строчек или абзацев, то, выведя всё в коротких врезках, получим документ, который выглядит как настоящий, но почти не редактируется – помните задачу о замене по всему документу слова «MS» на «Microsoft»? Это очень хороший тест на редактируемость. Для редактируемого документа важна способность текста перетекать из одних зон в другие – в нужных случаях, которые ещё надо суметь отличить от ненужных.
Добавить метки

PDF(Portable Document Format), не просто всем известный и удобный формат, а и единственный, который является стандартом с 2008 года. Он был разработан командой компании Adobe Systems. Разработчики формата поставили перед собой задачу создать такой формат отображения документа, чтобы на любом устройстве документ открывался и выглядел одинаково.

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

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

Преимущества и недостатки.

Плюсы:
— стандартизованность и популярность: открывается на любых устройствах с любыми операционными системами ровно в том виде, в котором был создан;
— средство просмотра PDF формата, Adobe Acrobat Reader, часто предустановлено на компьютер, если устройство поставлялось с операционной системой. Если же нет – он доступен для скачивания с сайта разработчика Adobe Systems и это совершенно бесплатно;
— занимает мало места на жестком диске, потому что поддерживает множество алгоритмов компрессии;
— безопасность: пользователь может настроить параметры безопасности для своего PDF файла, например, запрет печати, запрет редактирования, использование электронной подписи для определения подлинности документа и т.д.

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

Где используется?

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

Свойства PDF-документа и действия, которые можно с ним выполнять, зависят от программы, в которой он был создан. Поэтому в некоторых PDF-документах всегда поддерживается копирование и поиск по тексту, а иногда это возможно только в программе ABBYY FineReader.

Можно выделить следующие типы PDF-документов:

PDF (только изображение)

PDF-документ такого типа получается при сканировании бумажных документов без распознавания текста. Каждая страница такого документа является изображением и не содержит текстового слоя. В документах PDF (только изображение) невозможны поиск, копирование и редактирование текста вне зависимости от программы для просмотра PDF-документов.

PDF-документы с возможностью поиска

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

Программа FineReader при открытии документов такого типа определяет, содержит ли данный PDF текстовый слой, и может его использовать при работе с PDF-документом. Подробнее см. "Режимы распознавания PDF ". Наличие текстового слоя обеспечивает возможность поиска и копирования текста вне зависимости от программы для просмотра PDF-документов. Редактирование текста в PDF такого типа доступно в FineReader, но может не поддерживаться в других редакторах.

С помощью FineReader документы такого типа можно получить:

  1. При добавлении текстового слоя к PDF (только изображение).
  2. При конвертации PDF или любых файлов изображений. Для этого выберите > Текст под изображением страницы . Подробнее см. настройки формата PDF .

PDF-документы, созданные в других приложениях

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

PDF-документ такого типа можно получить:

  1. При сохранении исходного документа в формате PDF непосредственно в программе, в которой он был создан.
  2. При конвертации PDF-документа другого типа или файла другого формата в программе FineReader при выборе в настройках сохранения Настройки PDF с возможностью поиска >Только текст и картинки . Подробнее см. настройки формата PDF .

В результате форматирование документа может отличаться от исходного, но при редактировании такого документа можно получить более качественные результаты.