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