iphone cocoa-touch pdf hyperlink quartz-2d

iPhone, CGPDFDocument-Enlaces PDF



cocoa-touch hyperlink (1)

Esta es una pregunta no trivial, por lo que no has 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 pseudo código muy áspero:

  • use CGPDFDocumentGetCatalog para obtener el catálogo del PDF
  • busque en el elemento "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 operación simple no es tan simple).
  • ahora usa CGPDFDictionaryGetArray para obtener el objeto "Annots"
  • a continuación, debe recorrer las anotaciones y buscar objetos "Enlace".

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

CGPDFDocument escribir un simple visor de PDF usando CGPDFDocument , basado en QuartzDemo.
Hay representación común:

-(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, es solo un dibujo, por lo que toda la estructura de navegación o los enlaces de salida deben manejarse manualmente (por ejemplo, en evento táctil).

Hay funciones que establecerán URL o crearán elementos con URL .

La pregunta es: ¿cómo obtener la URL del enlace saliente de cierto bloque PDF?

¡Gracias!

Preguntas similares:
Hipervínculos PDF en iPhone / iPad
¿Cómo acceder a hipervínculos en documentos PDF (iPhone)?

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