iPhone, CGPDFDocument - ссылки в формате PDF - PullRequest
24 голосов
/ 15 июля 2010

Я пытаюсь написать простую программу просмотра PDF, используя CGPDFDocument , основанную на QuartzDemo.
Есть общий рендеринг:

-(void)drawInContext:(CGContextRef)context
{
    // PDF page drawing expects a Lower-Left coordinate system, 
    // so we flip the coordinate system before we start drawing.
    CGContextTranslateCTM(context, 0.0, self.bounds.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);

    // Grab the first PDF page
    CGPDFPageRef page = CGPDFDocumentGetPage(pdf, pageNumber);
    // We're about to modify the context CTM to draw the PDF page
    //  where we want it, so save the graphics state 
    // in case we want to do more drawing
    CGContextSaveGState(context);
    // CGPDFPageGetDrawingTransform provides an easy way 
    // to get the transform for a PDF page. It will scale down to fit, 
    // including any base rotations necessary to display the PDF page correctly. 
    CGAffineTransform pdfTransform = 
            CGPDFPageGetDrawingTransform(page, 
                    kCGPDFCropBox, self.bounds, 0, true);
    // And apply the transform.
    CGContextConcatCTM(context, pdfTransform);
    // Finally, we draw the page 
    // and restore the graphics state for further manipulations!
    CGContextDrawPDFPage(context, page);
    CGContextRestoreGState(context);
}

Как я понимаю, это единственный рисунок, поэтому вся структура навигации или исходящие ссылки должны обрабатываться вручную (например, в событии touch).

Существуют функции , которые будут устанавливать URL или создать элемент с URL .

Вопрос: как получить URL исходящей ссылки из определенного блока PDF?

Спасибо!

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

То же самое на
iPhone SDK Dev GGroup
macRumors Forum
iPhone Dev SDK Forum
Dev Shed Forum
iphonedevbook.com

1 Ответ

17 голосов
/ 28 сентября 2010

Это нетривиальный вопрос, поэтому вы не нашли простого ответа.Решение: вы должны проанализировать PDF документ.Хорошей новостью является то, что Apple предоставляет вам функции, позволяющие вам сделать это.Плохая новость в том, что они процедурные, и человек, это запутанный беспорядок.

В очень грубом псевдокоде:

  • используйте CGPDFDocumentGetCatalog, чтобы получить каталог для PDF
  • , посмотрите в элементе "pages" каталога для страницы, которую выищите (да, это словарь, а не массив и вложенный, так что эта простая операция не так проста).
  • теперь используйте CGPDFDictionaryGetArray для получения объекта "Annots"
  • Далее вам нужно перебрать аннотации и искать объекты «Ссылка».

Adobe опубликовала документ , в котором изложена спецификация PDF.Удачи!

...