2010-07-15 19 views
23

Sto provando a scrivere un semplice visualizzatore PDF usando CGPDFDocument, basato su QuartzDemo.
C'è resa comuni: (Es. In contatto evento)iPhone, CGPDFDocument - PDF links

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

quanto ho capito, il suo unico disegno, in modo che tutti la navigazione struttura o link in uscita deve essere maneggiato manualmente.

Ci sono funzioni which will set URL o create element with URL.

La domanda è: come ottenere l'URL del link in uscita da un determinato blocco PDF?

Grazie!

domande simili:
PDF hyperlinks on iPhone/iPad
How to access hyperlinks in PDF documents (iPhone)?

stesso su
iPhone SDK Dev GGroup
macRumors Forum
iPhone Dev SDK Forum
Dev Shed Forum
iphonedevbook.com

+2

+1 per una domanda senza risposta da nessuna parte. * strofina la testa e continua a scavare * – Kalle

+3

+1, taglia 50 punti - Mi piacerebbe sapere anche la risposta che stiamo cercando da qualche settimana e non importa quello che non abbiamo provato nessun risultato –

+2

+100 punti per campione di lavoro! –

risposta

17

Questa è una domanda non banale, motivo per cui non hai trovato una risposta facile. La soluzione è: devi analizzare il documento PDF. La buona notizia è che ci sono funzioni fornite da Apple per consentirvi di farlo. Le cattive notizie sono, sono procedurali, e l'uomo, è un caos contorto.

In pseudo-codice molto approssimativa:

  • uso CGPDFDocumentGetCatalog per ottenere il catalogo per il PDF
  • sguardo nell'elemento "pagine" del catalogo per la pagina che stai cercando (sì, è un dizionario, non un array e uno nidificato, quindi questa semplice operazione non è così semplice).
  • ora utilizzare CGPDFDictionaryGetArray per ottenere l'oggetto "Annot"
  • successivo, è necessario scorrere le annotazioni e cercare gli oggetti "Link".

Adobe ha pubblicato uno document che espone le specifiche PDF. In bocca al lupo!

+0

Grazie mi rendo conto che questa non è una domanda banale, quindi la taglia, ma è molto importante e la documentazione delle mele è molto scarsa per quanto riguarda Quartz PDF su iPhone, e non ci sono altri blog o tutorial che lo coprono –

Problemi correlati