J'ai trouvé le cadre de lecture vfr tout en regardant dans quelques meilleures alternatives pour l'affichage de pdf dans une application. Dans mon context, j'ai besoin de download un pdf; Ce n'est pas déjà inclus dans le bundle de l'application. Il était facile d'utiliser le framework vfr avec un pdf embarqué, mais j'ai été perplexe jusqu'à présent pour le faire fonctionner avec des données téléchargées que j'écris dans un file, puis init un ReaderDocument avec son path. Je suis capable de charger le même file dans un UIWebView sans problème, donc je ne crois pas que ce soit datatables. Voici le code:
NSSsortingng *fullPathToPDF = [[[self appDelegate] urlForFileUnderRecursiveDocWithName:self.pdfName andOptionallyStartingAtDirectory:[[self appDelegate] pathURLForImagesDirectory]] path]; ReaderDocument *pdfDoc = [ReaderDocument withDocumentFilePath:fullPathToPDF password:nil];
Le pdfDoc qui en résulte sera soit nul, soit, au passage, le path complet comme ci-dessus, se bloquera avec une assertion de la ligne 229 de ReaderDocument
NSAssert(NO, @"CGPDFDocumentRef == NULL");
parce que (je fais une hypothèse raisonnable) cette ligne (217; même class):
CGPDFDocumentRef thePDFDocRef = CGPDFDocumentCreateX(docURLRef, _password);
ne parvient pas à créer le CGPDFDocumentRef. J'ai déjà mentionné une distinction entre le passage du path complet et le passage du nom du file, car en regardant le code, la class ReaderDocument semble faire des suppositions sur l'endroit où il s'attend à find les files. Je n'ai pas réussi à le faire fonctionner, peu importe où je sauve le file, ou ce que je passe dans sa méthode … withDocumentFilePath.
Pour réitérer, je suis capable d'utiliser exactement le même file et de l'ouvrir dans un UIWebView sans problème.
Donc, quelqu'un ayant le même problème, ou capable de faire ce que j'essaye avec succès? Merci.
Désolé de répondre si tard. Je suis juste tombé sur ce problème moi-même alors pensé que je transmettrais ma sagesse.
Je suppose que vous téléchargez le file PDF dans le directory temporaire. Ce framework search le file dans NSDocumentDirectory. Donc, quand vous allez save le file téléchargé, sauvegardez simplement dans un path comme celui-ci:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSSsortingng *baseDocumentPath = [paths objectAtIndex:0]; NSSsortingng *filePath = [baseDocumentPath ssortingngByAppendingPathComponent:@"/temp.pdf"];
Une fois que vous faites cela, il se chargera correctement.
ps Si je finis par modifier ReaderDocument pour autoriser un directory temporaire, je publierai les modifications ici.