2009-08-08 7 views
9

Est-il possible d'accéder aux liens "internes" dans les documents PDF en utilisant CGPDFDocument, ou d'autres moyens? Je construis une application de lecteur simple et voudrais livrer mon contenu au format PDF, mais si je ne peux pas soutenir les liens entre les pages dans le document, cela ne fonctionnera probablement pas.Comment accéder aux hyperliens dans les documents PDF (iPhone)?

This question est similaire, mais n'aborde pas le problème de savoir comment prendre en charge les liens hypertexte.

+0

Que voulez-vous dire par des liens entre les pages? Parlez-vous d'un lien à la page 1, qui va à la page 4, ou parlez-vous de la première page suivie de la deuxième page de votre lecteur? En passant, si vous parlez de liens cliquables entre les pages, gardez à l'esprit que les liens hypertexte dans un document PDF sont simplement des rectangles cliquables sur une page et n'ont aucune relation directe avec le texte qu'ils semblent hyperlien. Un document PDF n'est pas comme un document HTML dans ce sens. – Rowan

+0

Je veux dire des liens de soutien d'une page à une autre page arbitraire dans le document. Je l'utiliserais pour une table des matières, ainsi que pour faire référence à d'autres pages dans des endroits aléatoires. Alors oui, ce que je cherche vraiment, c'est une façon de naviguer dans les documents PDF. Je peux gérer le cas simple de la navigation "next/prev/home" sans cela, mais idéalement, je voudrais également prendre en charge la navigation arbitraire. Merci. –

+0

Voici un exemple de code, de ma propre question: http://stackoverflow.com/questions/4080373/get-pdf-hyperlinks-on-ios-with-quartz – pt2ph8

Répondre

0

Si vous utilisez Quartz to open and view a PDF, alors oui, il semble que vous aurez accès à des liens internes. Quartz vous permettra également de PDF add new links. Je n'ai aucune expérience de première main avec le développement iPhone/Mac, mais il serait assez étrange pour eux de vous laisser ajouter des hyperliens, mais ne pas les utiliser.

+2

Ces liens pointent vers la bibliothèque de référence Mac OS X, pas iPhone OS. PDFKit n'existe pas sur le téléphone. –

+0

Oui au-dessus des deux liens sont juste la liste d'ouverture des bibliothèques de référence osx. Il ne donne aucune information appropriée. Comment est-il accepté? -1 –

+0

Désolé les gens, je ne fais plus de dev iPhone, donc c'est effectivement une question abandonnée. Je suis incapable de vérifier si c'est une réponse acceptable ou non, alors je l'ai simplement "inacceptable". –

2

Voir ma réponse here. Fondamentalement, vous devez vous familiariser avec les annotations de liens PDF.

0

Vous devez faire en deux étapes.

Première: Parse votre pdf pour localiser les opérateurs de contenu marqué

C'est un exemple d'un code d'analyse syntaxique:

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

(Vous devez compléter et ajuster ce code pour correspondre à vos besoins)

Deuxièmement: répondez au message à l'aide de la touche toucherEnded sur ces zones et faites en sorte que l'interface utilisateur réponde en conséquence.