базовые типы данных, используемые в pdf-документах
Что ж! Мы довольно глубоко увязли в теории, пора вылезать на поверхность. Возьмем любой pdf-файл (пусть для определенности это будет http://www.encode-sec.com/pdf/esp0302.pdf) и загрузим его в свой любимый HEX-редактор.
Как и любой другой pdf он содержит так называемый "trailer dictionary" (дословно "словарь прицепа"), содержащий ссылки на важнейшие объекты документа, в том числе и словарь шифрования (encryption dictionary), который присутствует в любом зашифрованном pdf'е и без которого его невозможно ни открыть, ни прочитать.
Словарь прицепа может быть расположен в любом месте документа (как начале, так и конце), но его легко обнаружить по ключевому слову "trailer", которое стоит в его начале (в нашем случае оно расположено по смещению 451h), а следом за ним идут типографские скобки "<<", символизирующие собственно сам словарь. Заглянем, что у нас там?
trailer
<<
/Size 519 % кол-во объектов в файле
/Info 460 0 R % ссылка на объект info
/Encrypt 475 0 R % ссылка на объект словаря шифрования
/Root 474 0 R % ссылка на объект "дерева страниц"
/Prev 234761 % ID - необязательный идентификатор объекта
/ID[<e1cbefe9c1eaa9478e694f620070dd20>
<eefb91f095d06a4b361ec3b16a9145c6>
]
>
>