2010-07-15 2 views
23

Я пытаюсь написать простой просмотрщик PDF с использованием CGPDFDocument, основанный на QuartzDemo.
Существует общий рендеринг: (. Отл в случае касания)iPhone, CGPDFDocument - PDF-ссылки

-(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); 
} 

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

Есть функции which will set URL или create element with URL.

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

Спасибо!

Похожие вопросы:
PDF hyperlinks on iPhone/iPad
How to access hyperlinks in PDF documents (iPhone)?

же на
iPhone SDK Dev GGroup
macRumors Forum
iPhone Dev SDK Forum
Dev Shed Forum
iphonedevbook.com

+2

+1 для вопроса без ответа. * протирает голову и продолжает копать * – Kalle

+3

+1, 50 баллов - я бы тоже хотел узнать ответ, который мы искали в течение нескольких недель, и независимо от того, что мы пробовали, нет результата –

+2

+100 баллов за рабочий образец! –

ответ

17

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

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

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

Adobe опубликовала статью document, в которой излагаются спецификации PDF. Удачи!

+0

Спасибо, я понимаю, что это не тривиальный вопрос, следовательно, щедрость, но это очень важно, и документация на яблоки очень плоха в отношении Quartz PDF на iPhone, и нет других блогов или учебников, охватывающих его –

Смежные вопросы