исследование pdf-формата в hex-редакторе
Имена начинаются с наклонной черты, той самой, которой разделяют каталоги в UNIX (например, "/ThisIsName"), ссылки на объекты обозначаются парой чисел — номер объекта/поколения, за которыми идем ключевое слово "R" (например, "23 0 R"). Данные разных типов могут быть объединены в массив (array) или словарь (dictionary). Массив обрамляется прямыми скобами (например, "[23 0 R /XYZ null]"), а словарь "типографскими кавычками" (например, "<</Name1 (Val1) /Name2 /Val2>>")
Это минимум информации, которую необходимо знать для низкоуровневой работы с pdf-документом.
базовые типы данных | примеры использования |
Boolean | true
|
Numeric | 3.1415926 |
Object reference | 23 0 R |
Name | /ProcSet |
String | (Contents) * |
Stream | {binary data}* |
Array | [23 0 R /XYZ null] |
Dictionary | <</Name1 (Val1) /Name2 /Val2>> |