avva: (Default)
[personal profile] avva
(эта запись будет в основном интересна программистам)

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-файла можно изменить, добавив в конец файла определенный "апдейт", не меняя то, что в файле уже записано. Многие другие разделы и главы возвращаются к этой теме, поясняя, как такие сочетаются с другими возможностями формата. В итоге читатель не может не проникнуться глубоко гуманистическим духом этой сложной, вычурной, грандиозной по своему замыслу книги.

postscript

Date: 2010-05-28 06:47 am (UTC)
From: (Anonymous)
a ps.gz чем не устраивает?

Re: postscript

Date: 2010-05-28 08:01 am (UTC)
From: [identity profile] alexott.livejournal.com
ps сложнее в плане реализации - там совсем полноценный язык, плюс для отображения нужно "вычислить" весь документ

Re: postscript

Date: 2010-05-28 09:42 am (UTC)
From: (Anonymous)
там совсем полноценный язык
именно поэтому он проще в плане реализации. нужно реализовать всего лишь один простой язык.

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

Re: postscript

Date: 2010-05-28 10:05 am (UTC)
From: [identity profile] alexott.livejournal.com
в начале PDF Reference написано почему он создался, и почему конкретные решения были выбраны - возможность быстрого показа части документа, возможность показа документа еще во время загрузки, и т.д.
в случае с PS такого добиться тяжело, плюс я регулярно натыкаюсь на документы, дающие ошибку в ghostscript, хотя программе куча лет и они должны были язык уже давно реализовать...

Re: postscript

Date: 2010-05-28 10:36 am (UTC)
From: (Anonymous)
почему конкретные решения были выбраны
да, но для реализации-то чем меньше возможностей, тем проще, не находите?
ошибку в ghostscript
это часто бывает не из-за того, что ghostscript не соответствует стандарту, а из-за того, что автор документа делает недопустимые предположения (о наличии в системе определенных шрифтов, например)

Re: postscript

Date: 2010-05-28 11:15 am (UTC)
From: [identity profile] alexott.livejournal.com
не всегда, самые простые решения - лучшие... про показ отдельных страниц документов я уже писал...
насчет ошибок - не всегда они из-за фонтов...

Re: postscript

Date: 2010-05-28 11:48 am (UTC)
From: (Anonymous)
я же не говорю о том, что они самые простые решения — самые лучшие. я говорю, что они — самые простые!

насчет ошибок — я других в последнее время не видел, но я нечасто открываю .ps-файлы, может, они чаще встречаются, чем я себе представляю.

Re: postscript

Date: 2010-05-28 11:59 am (UTC)
From: [identity profile] alexott.livejournal.com
много научных публикаций до сих пор в .ps, хотя меньше становится

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 11:34 am
Powered by Dreamwidth Studios