Как получить доступ к гиперссылкам в документах PDF (iPhone)?

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

Этот вопрос аналогичен, но не решает проблему поддержки гиперссылок.


person George Armhold    schedule 08.08.2009    source источник
comment
Что именно вы подразумеваете под ссылками между страницами? Вы говорите о ссылке на странице 1, которая ведет на страницу 4, или вы говорите о том, что за первой страницей следует страница 2 в вашем ридере? Кстати, если вы говорите о интерактивных ссылках между страницами, имейте в виду, что гиперссылки в PDF-документе представляют собой просто кликабельные прямоугольники на странице и не имеют прямого отношения к тексту, на который они кажутся гиперссылками. В этом смысле PDF-документ не похож на HTML-документ.   -  person Rowan    schedule 08.08.2009
comment
Я имею в виду поддержку ссылок с одной страницы на какую-то другую произвольную страницу в документе. Я бы использовал это для оглавления, а также для ссылок на другие страницы в случайных местах. Так что да, то, что я действительно ищу, — это HTML-подобный способ навигации по документам PDF. Я могу справиться с простым случаем следующей/предыдущей/домашней навигации без этого, но в идеале я хотел бы также поддерживать произвольную навигацию. Спасибо.   -  person George Armhold    schedule 08.08.2009
comment
Вот пример кода из моего собственного вопроса: stackoverflow.com/questions/4080373/   -  person pt2ph8    schedule 03.11.2010


Ответы (4)


См. мой ответ здесь. По сути, вам нужно ознакомиться с аннотациями ссылок в PDF.

person jbm    schedule 09.08.2010

см. этот пример кода... гиперссылки в формате PDF работают в этом

https://github.com/vfr/Reader

person phani yelugula    schedule 08.09.2011

Если вы используете Quartz для открытия и просмотра PDF, тогда да, похоже, у вас будет доступ к внутренним ссылкам. Quartz также позволяет вам добавлять новые ссылки в файлы PDF. У меня нет личного опыта разработки для iPhone/Mac, но было бы довольно странно, если бы они позволили вам добавлять гиперссылки, но не использовали их.

person Rowan    schedule 11.08.2009
comment
Обе эти ссылки указывают на справочную библиотеку Mac OS X, а не на iPhone OS. PDFKit не существует на телефоне. - person Ben Gottlieb; 24.02.2010
comment
Да, выше обе ссылки просто открывают список справочных библиотек OSX. Это не дает никакой надлежащей информации. Как это принято? -1 - person Sagar R. Kothari; 04.03.2010
comment
Извините, ребята, я больше не занимаюсь разработкой iPhone, так что это фактически заброшенный вопрос. Я не могу проверить, является ли это приемлемым ответом или нет, поэтому я просто не принял его. - person George Armhold; 10.07.2010

Вам нужно сделать в два шага.

Во-первых: проанализируйте свой 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, чтобы обработать касание этих зон и заставить пользовательский интерфейс реагировать соответствующим образом.

person VdesmedT    schedule 31.08.2010