Знай врага в лицо: формат PDF
Jan. 25th, 2010 05:26 pmЯ тут неожиданно ознакомился с форматом PDF и теперь ищу, на кого бы излить распирающее меня знание. Один пострадавший уже есть, но этого мало.
- Официальная спецификация PDF занимает 530 страниц (я полагаю в PDF :) ) и продается ISO за 70 франков. Правда, есть неофициальная, где содержится вся та же информация и которую можно сгрузить бесплатно. Поэтому, как сказано на одном из сайтов "редкий программист воплощает весь стандарт в одиночку", но генерировать PDF относительно просто.
- Во-первых, к моему удивлению, PDF оказался текстовым форматом, точнее он был задуман, как чисто-текстовой формат, а когда выяснилось, что некоторые почтовые программы режут 8-мой бит, его переопределили, как "нетекстовой" и во вторую строку вписывают комментарий со "странными" (>127) символами. Тем не менее, элементами PDF в первом приближении являются текстовые команды записанными нормальными ASCII символами, его можно открыть в текстовом редакторе и почитать.
- Это, разумеется, несколько неэффективно с точки зрения об'ёма, поэтому отдельные секции, например страницы заменяются своим ужатым текстом - но это его не превращает в бинарный, так же как зазипованный XML это все равно текст - его сначала надо раскрыть и только потом обрабатывать. А здесь это верно для отдельных секций. Ужимаются они алгоритмом Flate, являющимся разновидостью Zlib, и нигде больше не использующимся. По крайней мере, я их раскрыть не смог ничем, кроме специальной утилиты, которая делает uncompress PDF.
- PDF представляет из себя контейнер для подмножества Postscript - из Postscript выкинуты функции и т.п., зато PDF добавляет мета-информацию - описание струкуры документа, деление на страницы, оглавление и т.п., поэтому по PDF документу гораздо проще передвигаться, чем по PostScript
- Т.к. это Postscript, то он жестко прописывает для каждого кусочка текста, где тот находится. Именно поэтому, PDF non-reflowable, т.е. жестко привязан к размеру листа, на котором его собираются печатать, в подавляющем большинстве случаев A4. И поэтому из него так муторно извлекать текст. Особенно когда текст набран в два столбца, т.к. эти столбцы исключительно визуальные, внутри PDF столбец как таковой никак не обозначен, просто часть текста размещена при помощи координат в одном месте листа, а часть в другом.
- Т.к. для любого куска текста можно указать шрифт и определение шрифта можно включить в сам файл, то можно не заморачиваться указанием кодировки, а просто для отрывка на определенном языке указать шрифт, который его правильно отобразит. Я даже не выяснил еще, есть ли вообще в PDF возможность указать кодировку, если хочется. Поэтому при попытке извлечь нелатинский текст из PDF получается фигня, а именно, в случае русского, буквы с акцентами (диакритическими значками: умалуты, правые штрихи, левые штрихи и т.п.)
- Из-за всего вышеуказанного, все чужие утилиты (Adobe не Reader не проверял) позорно валятся на сложном PDF, портят текст, не понимают кодиривок, не понимают колонок, оставляют headers and footers посреди текста и т.д. И что делать - непонятно. Хотя для каждой конкретной книги несложно (реально) сделать custom script, который извлечет ее содержимое и сохранит часть форматов.
- Это я еще часть и забыл и немного остыл.
- Все это превращает PDF в формат, абсолютно не подходящий для передачи информации, если не считать таковой печать. Читать его даже с экрана компьютера неудобно, потому что скролится он не гладко, а постранично, а уж с меньшего устройства только при отсутствии выбора.
- В общем, тех кто отсканированные и распознанные книги выкладывает в PDF надо
вешать на первом попавшемся сукузаставлять из этого PDF извлекать обратно текст, вручную. А особенно тех, кто создавал PDF при помощи виртуального принтера, который в низ каждой страницы впендюривает полный путь файла и номера страниц.
no subject
Date: 2010-02-16 08:08 pm (UTC)Их я как раз понимаю - что есть, то и выкладывают. Журналы-то хотят PDF. Впрочем, особенного выбора-то нет - написано в Латехе, так что или PDF или PostScript, который еще хуже. Не Латех же им выкладывать в самом деле. Можно еще HTML генерировать из Латеха, но там формулы только картинками (даже если MathML, то кто его понимает). Потом, я PDF не люблю в контексте ридера, а вы?
no subject
Date: 2010-02-16 08:18 pm (UTC)И да, с математическими статьями беда. Latex не выложишь, нормальных программ для него тоже нет, а все остальное формулы либо картинками, либо ужасно (либо никак).
no subject
Date: 2010-02-16 08:27 pm (UTC)Да и Calibre (супер программа для электронной библиотеке) его б/м переводит во что хошь (если не два столбца), единственно, что каждую строчку делает абзацем. Но это, может, исправят. Или можно сначала в .mobi, а потом во что хошь.
> все остальное формулы либо картинками, либо ужасно (либо никак).
Ну вот потому и PDF. Для Sony Reader, говорят, его легко повернуть в ландшафт и нарезать под размер экрана.
no subject
Date: 2010-02-16 08:36 pm (UTC)По поводу статей -- это просто мне иногда надо формулы из них в Word переводить. Та еще работа.
no subject
Date: 2010-02-16 08:41 pm (UTC)Да уж, не для faint of heart. Странно, что не написали чего-нибудь автоматического. Хотя, MS западло, наверное, а те, кто пользуются Латехом, не видят необходимости