2010-07-15 14 views
23

Estoy tratando de escribir un simple visor de PDF usando CGPDFDocument, basado en QuartzDemo.
No es común la representación: (Ej. En el caso de contacto)iPhone, CGPDFDocumento - Enlaces 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); 
} 

Según tengo entendido, su único dibujo, por lo que toda la navegación estructura o enlaces salientes debe ser manejado manualmente.

Hay funciones which will set URL o create element with URL.

Pregunta es: cómo obtener la URL del enlace de salida de un determinado bloque de PDF?

¡Gracias!

preguntas similares:
PDF hyperlinks on iPhone/iPad
How to access hyperlinks in PDF documents (iPhone)?

mismo en
iPhone SDK Dev GGroup
macRumors Forum
iPhone Dev SDK Forum
Dev Shed Forum
iphonedevbook.com

+2

+1 para una pregunta sin respuesta en cualquier lugar. * se frota la cabeza y sigue cavando * – Kalle

+3

+1, 50 puntos de recompensa - Me gustaría saber la respuesta también que hemos estado buscando desde hace unas semanas y no importa lo que hemos intentado ningún resultado –

+2

+100 puntos para muestra de trabajo! –

Respuesta

17

Esta es una pregunta no trivial, por lo que no ha encontrado una respuesta fácil. La solución es: tienes que analizar el documento PDF. La buena noticia es que hay funciones proporcionadas por Apple para permitirte hacer esto. La mala noticia es que son de procedimiento, y hombre, es un lío enrevesado.

En muy áspera pseudo código:

  • uso CGPDFDocumentGetCatalog para obtener el catálogo para el PDF
  • mirada en el elemento de "páginas" del catálogo de la página que está buscando (sí, es un diccionario, no una matriz, y una anidada, por lo que esta simple operación no es tan simple).
  • ahora usa CGPDFDictionaryGetArray para obtener el objeto "Annots"
  • siguiente, necesita repetir las anotaciones y buscar objetos "Enlace".

Adobe ha publicado un document que establece la especificación de PDF. ¡Buena suerte!

+0

Gracias, me doy cuenta de que esta no es una pregunta trivial, de ahí la recompensa, pero es muy importante y la documentación de Apple es muy pobre con respecto a Quartz PDF en el iPhone, y no hay otros blogs o tutoriales que lo cubran –

Cuestiones relacionadas