Попытка аннотировать PDF-файл с помощью потоков XREF

У меня есть этот образец PDF-файла:

Исходный файл

к которому я пытался прикрепить текстовую аннотацию, что привело к следующему:

Аннотированный файл

Однако предварительный просмотр в MAC OSX по-прежнему показывает документ без новой аннотации, где Adobe Reader не может даже открыть аннотированный документ, заявив:

При открытии этого документа произошла ошибка. Файл поврежден и не может быть восстановлен.

До сих пор мне очень повезло, что я аннотировал другие файлы, имеющие «классические таблицы XREF», а не закодированные. Однако написание моих собственных закодированных потоков XREF, похоже, не работает. Я почти уверен, что мои потоки в порядке, но все же может быть что-то еще, что мне не хватает?


person Hasib. A. Samad    schedule 20.02.2013    source источник


Ответы (1)


Я не знаю, какое программное обеспечение вы использовали для добавления аннотаций, но вам следует выбросить его и никогда больше не использовать. Почему? Потому что он не добавляет запись startxref в трейлер и, следовательно, нарушает ISO-32000-1. Даже файлы со сжатыми таблицами перекрестных ссылок нуждаются в такой записи.

Прочтите раздел 7.5.8 ISO-32000-1, озаглавленный «Потоки перекрестных ссылок»:

Значение, следующее за ключевым словом startxref, должно быть смещением потока перекрестных ссылок, а не ключевым словом xref. Для файлов, которые полностью используют потоки перекрестных ссылок (то есть файлов, которые не являются файлами гибридных ссылок), ключевые слова xref и трейлер больше не должны использоваться. Следовательно, за исключением адреса startxref, сегмента %% EOF и комментариев, файл может быть целиком последовательностью объектов.

person Bruno Lowagie    schedule 20.02.2013
comment
Вот и все! Иногда за деревьями просто не видно леса! - person Hasib. A. Samad; 21.02.2013