2009-08-08 13 views
9

¿Es posible acceder a enlaces "internos" en documentos PDF usando CGPDFDocument, u otros medios? Estoy construyendo una aplicación de lector simple y me gustaría entregar mi contenido en formato PDF, pero si no puedo soportar enlaces entre páginas en el documento, probablemente esto no funcione.¿Cómo acceder a hipervínculos en documentos PDF (iPhone)?

This question es similar, pero no aborda el problema de cómo admitir hipervínculos.

+0

¿Qué es exactamente lo que quiere decir con enlaces entre páginas? ¿Estás hablando de un enlace en la página 1, que va a la página 4, o estás hablando de la página uno seguido de la página 2 en tu lector? Por cierto, si habla de enlaces clicables entre páginas, tenga en cuenta que los hipervínculos en un documento PDF son simplemente rectángulos de punto de acceso seleccionables en una página y no tienen ninguna relación directa con el texto que parecen hipervincular. Un documento PDF no es como un documento HTML en ese sentido. – Rowan

+0

Me refiero a los enlaces de apoyo de una página a otra página arbitraria en el documento. Utilizaría esto para una tabla de contenido, así como para hacer referencia a otras páginas en lugares aleatorios. Así que sí, lo que realmente estoy buscando es una forma similar a HTML para navegar documentos PDF. Puedo manejar el caso simple de navegación "next/prev/home" sin esto, pero idealmente también me gustaría apoyar la navegación arbitraria. Gracias. –

+0

Aquí hay un código de muestra, de mi propia pregunta: http://stackoverflow.com/questions/4080373/get-pdf-hyperlinks-on-ios-with-quartz – pt2ph8

Respuesta

0

Si está usando Quartz to open and view a PDF, entonces sí, parece que tendrá acceso a enlaces internos. Quartz también le permitirá add new links en archivos PDF. No tengo ninguna experiencia de primera mano con el desarrollo de iPhone/Mac, pero sería bastante extraño para ellos permitirle agregar hipervínculos, pero no usarlos.

+2

Estos enlaces apuntan a la biblioteca de referencia de Mac OS X, no iPhone OS. PDFKit no existe en el teléfono. –

+0

Sí, ambos enlaces están abriendo la lista de bibliotecas de referencia de osx. No da ninguna información adecuada. ¿Cómo es aceptado? -1 –

+0

Lo siento amigos, ya no estoy desarrollando el iPhone, así que esta es una pregunta abandonada. No puedo verificar si esta es una respuesta aceptable o no, así que simplemente la he "rechazado". –

2

Ver mi respuesta here. Básicamente, deberá familiarizarse con las anotaciones de enlaces PDF.

0

Tiene que hacer en dos pasos.

Primero: Analizar el pdf para localizar los operadores de contenido marcado

Eso es un exemple de un código de análisis:

-(void)parseContent() { 
    CGPDFOperatorTableRef myTable; 
    myTable = CGPDFOperatorTableCreate(); 
    CGPDFOperatorTableSetCallback(myTable, "BMC", &myOperator_BMC); 
    CGPDFContentStreamRef myContentStream = CGPDFContentStreamCreateWithPage(page); 
    CGPDFScannerRef myScanner = CGPDFScannerCreate(myContentStream, myTable, autoZoomAreas); 
    CGPDFScannerScan(myScanner); 
    CGPDFScannerRelease(myScanner); 
    CGPDFContentStreamRelease(myContentStream); 
} 

void myOperator_BMC(CGPDFScannerRef s, void *info) 
{ 
    const char *name; 
    CGPDFScannerPopName(s, &name); 
} 

(que necesita para completar y ajustar el código para que coincida con su requisito)

Segundo: responda al mensaje de toucheEnded para manejar el toque en esas zonas y haga que la UI responda en consecuencia.

Cuestiones relacionadas