Как получить доступ к гиперссылкам в документах PDF (iPhone)?
Можно ли получить доступ к "внутренним" ссылкам в документах PDF с помощью CGPDFDocument
или другие средства? Я создаю простое приложение для чтения и хотел бы доставить свое содержимое в формате PDF, но если я не могу поддерживать ссылки между страницами в документе, это, вероятно, не сработает.
Этот вопрос похож, но не касается вопроса о том, как поддерживать гиперссылки.
4 ответа
Смотрите мой ответ здесь. По сути, вам необходимо ознакомиться с аннотациями PDF-ссылок.
Посмотрите этот пример кода... гиперссылки PDF работает в этом
Если вы используете Quartz для открытия и просмотра PDF-файла, то да, похоже, у вас будет доступ к внутренним ссылкам. Кварц также позволит вам добавлять новые ссылки на PDF-файлы. У меня нет непосредственного опыта в разработке для iPhone/Mac, но было бы довольно странно позволить вам добавлять гиперссылки, но не использовать их.
Вам нужно сделать в два этапа.
Во-первых: проанализируйте ваш PDF, чтобы найти отмеченных операторов контента
Это пример кода синтаксического анализа:
-(void)parseContent() {
CGPDFOperatorTableRef myTable;
myTable = CGPDFOperatorTableCreate();
CGPDFOperatorTableSetCallback(myTable, "BMC", &myOperator_BMC);
CGPDFContentStreamRef myContentStream = CGPDFContentStreamCreateWithPage(page);
CGPDFScannerRef myScanner = CGPDFScannerCreate(myContentStream, myTable, autoZoomAreas);
CGPDFScannerScan(myScanner);
CGPDFScannerRelease(myScanner);
CGPDFContentStreamRelease(myContentStream);
}
void myOperator_BMC(CGPDFScannerRef s, void *info)
{
const char *name;
CGPDFScannerPopName(s, &name);
}
(Вам необходимо заполнить и настроить этот код в соответствии с вашими требованиями)
Второе: ответьте на сообщение toucheEnded, чтобы обработать нажатие на эти зоны и заставить интерфейс реагировать соответствующим образом.