iOS vrr阅读器框架不能使用下载的pdf

我发现了vfr阅读器框架,同时寻找一些更好的替代方法来在应用程序中显示PDF。 在我的情况下,我需要下载一个pdf; 它不包含在应用程序包中。 使用带有embedded式pdf的vfr框架非常简单,但是我一直坚持使用下载的数据写入文件,然后使用它的path初始化ReaderDocument。 我能够加载相同的文件到UIWebView没有问题,所以我不相信这是数据。 代码如下:

NSString *fullPathToPDF = [[[self appDelegate] urlForFileUnderRecursiveDocWithName:self.pdfName andOptionallyStartingAtDirectory:[[self appDelegate] pathURLForImagesDirectory]] path]; ReaderDocument *pdfDoc = [ReaderDocument withDocumentFilePath:fullPathToPDF password:nil]; 

得到的pdfDoc将是null,或者当传递它像上面那样的完整path时,将会从ReaderDocument的第229行

 NSAssert(NO, @"CGPDFDocumentRef == NULL"); 

因为(我正在做一个合理的假设)这条线(217;同一class):

 CGPDFDocumentRef thePDFDocRef = CGPDFDocumentCreateX(docURLRef, _password); 

无法创buildCGPDFDocumentRef。 我之前提到了传递完整path与传递文件名之间的区别,这是因为在查看代码时,ReaderDocument类似乎对预期在哪里find文件做了一些假设。 我无法得到它的工作,无论我在哪里保存文件,或者我传入它的…与DocumentFilePath方法。

重申一下,我可以使用完全相同的文件,并在UIWebView中打开它没有问题。

那么,任何人有这个相同的问题,或者,能够做我试图成功? 谢谢。

对不起,这么晚回答。 我自己也遇到了这个问题,所以以为我会传递我的智慧。

我猜你正在下载PDF到临时目录。 这个框架正在NSDocumentDirectory中查找文件。 所以,当你去保存下载的文件只是保存到这样的path:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *baseDocumentPath = [paths objectAtIndex:0]; NSString *filePath = [baseDocumentPath stringByAppendingPathComponent:@"/temp.pdf"]; 

一旦你这样做,它会正确加载。

ps如果我最终修改ReaderDocument以允许临时目录,我将在这里发布编辑。