Anatoly Vorobey (avva) wrote,
Anatoly Vorobey
avva

Category:

книги: pdf reference 1.7

(эта запись будет в основном интересна программистам)

PDF Reference 1.7, by Adobe Inc.

Эта книга, скажу сразу, не для нетерпеливых. Ее объем - 1310 страниц - может отпугнуть; если не считать приложений и индекса, выходит чуть меньше тысячи страниц (правда, некоторые из приложений необходимы, чтобы понять суть происходящего в главном тексте). Как обычно для книг в этом жанре, рекомендуется читать ее вдумчиво и внимательно; отдельные главы или разделы можно пропускать, но никогда не знаешь заранее, сошлется ли на них текст в других главах.

Полное исследование этого сложного постмодернисткого романа должно ждать своего автора; я всего лишь опишу некоторые частности, особенно привлекшие мое внимание.

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

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

Во-первых, изобретательная терминология. Так, читатель должен различать stream objects и object streams - два совершенно разных понятия. При этом object stream являeтся видом stream object, но не наоборот. Object stream может также содержать внутри себя другие объекты, но не stream objects.

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

В-третьих, тонкое введение исключений из общего правила в разнообразных частных случаях. Ни одно универсальное правило не может быть без исключений - таков неофициальный лозунг романа. Скажем, все нумерованные объекты в файле определяются так: [число] [число] obj [содержимое объекта] endobj. Кроме того случая, когда объект хранится внутри object stream, тогда все точно так же, только "obj" и "endobj" выкидываются. Скажем, все идентификаторы внутри файла, т.е. названия чего угодно: ключей в словарях данных, поименованных картинок или секций документа, шрифтов, итд. итп. начинаются с символа /. Кроме одного исключения: названия графических и текстовых команд не начинаются с /. И так далее, и так далее.

В заключение особенно отмечу тот факт, что сквозь все это мастерское жонглирование постмодернистскими темами и символами в романе тем не менее ясно выделяются определенные темы, которые можно было бы назвать в чем-то старомодными, традиционными, гуманными. Во-первых, принцип "терпенье и труд все перетрут" снова и снова демонстрируется в тексте, как например в этом отрывке из секции 3.5.2: "Do the following 50 times: Take the output from the previous MD5 hash and pass it as input to a new MD5 hash".

Во-вторых, следующая идея остается одной из центральных идей PDF Reference 1.7: никогда не поздно переменить что-то к лучшему, никогда не поздно исправиться. Секция 3.4.5, Incremental Updates, вся целиком посвящена этой теме и тому, как содержимое практически любой части PDF-файла можно изменить, добавив в конец файла определенный "апдейт", не меняя то, что в файле уже записано. Многие другие разделы и главы возвращаются к этой теме, поясняя, как такие сочетаются с другими возможностями формата. В итоге читатель не может не проникнуться глубоко гуманистическим духом этой сложной, вычурной, грандиозной по своему замыслу книги.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 61 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →