Как получить оглавление в Vfr Reader для PDF в iphone SDK?

Я использую VFR Reader для отображения моего PDF. Мне нужно извлечь содержание одним нажатием кнопки и отобразить его в виде таблицы, после чего оно должно вести к соответствующим страницам при нажатии на каждую из них.

1 ответ

Парсинг PDF Оглавление на самом деле не очень сложно. Вы можете использовать такой инструмент, как Apple Voyeur, чтобы увидеть структуру, или что-то вроде Preflight Browser от Adobe Acrobat:

Вы видите, что "Outline" - это довольно простое дерево, которое может быть проанализировано с использованием различных CGPDF* функции. Задача здесь состоит в том, чтобы также проанализировать пункт назначения / тип действия. PDF не делает вещи слишком простыми и не дает вам номер страницы, вместо этого обычно вы найдете ссылку с именем места назначения. Эту проблему можно решить путем перекрестной ссылки на другую таблицу, лучше всего это найти в спецификации PDF. Это, конечно, только один из вариантов, также может быть, что пункт назначения является одним из> 10 типов действий, которые берут начало от GoTo над именованными действиями (например, Next Page) до JavaScript (например, this.pageNum = x). На изображении выше вы видите классическое действие GoTo с более длинной строкой, являющейся именованной ссылкой.

Существуют также некоторые другие особые случаи, особенно для старых латексных документов и некоторых страниц из спецификации PDF 1.1, которые делали вещи немного по-другому, поэтому будьте осторожны с реализацией всех угловых случаев спецификации PDF, чтобы впоследствии не получить сюрпризов.

Схемы иногда также включают в себя действия URI, поэтому, по крайней мере, реализуйте этот тип. И у них также могут быть стили шрифта и цвет, так что вам никогда не будет скучно. Был там, сделал это в нашем коммерческом PSPDFKit PDF SDK для iOS и Android.

Другие вопросы по тегам