Ответ 1
Смотрите мой ответ здесь. В принципе, вам нужно познакомиться с аннотациями PDF-ссылок.
Можно ли получить доступ к "внутренним" ссылкам в PDF-документах с помощью CGPDFDocument
или другими способами? Я создаю простое приложение для чтения и хотел бы доставить мой контент в формате PDF, но если я не могу поддерживать ссылки между страницами в документе, это, вероятно, не сработает.
Этот вопрос похож, но не затрагивает вопрос о том, как поддерживать гиперссылки.
Смотрите мой ответ здесь. В принципе, вам нужно познакомиться с аннотациями 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);
}
(Вам необходимо заполнить и настроить этот код в соответствии с вашим требованием)
Во-вторых: ответьте на сообщение touchEEded, чтобы обработать нажатие на эти зоны и сделать соответствующий пользовательский интерфейс соответствующим образом.