iOS vfr阅读器框架无法使用下载的pdf

时间:2013-03-11 19:27:54

标签: ios vfr-reader

我找到了vfr阅读器框架,同时研究了在应用程序中显示pdf的更好的替代方案。在我的背景下,我需要下载pdf;它已经不包含在应用包中。使用带有嵌入式pdf的vfr框架很容易,但到目前为止,我已经难以理解它使用我写入文件的下载数据,然后使用它的路径初始化ReaderDocument。我能够将同一个文件加载到UIWebView中没问题,所以我不相信它的数据。这是代码:

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

生成的pdfDoc将为null,或者,当传递上面的完整路径时,将会因ReaderDocument的第229行的断言而崩溃

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

因为(我做出了合理的假设)这一行(217;同一类):

CGPDFDocumentRef thePDFDocRef = CGPDFDocumentCreateX(docURLRef, _password);

无法创建CGPDFDocumentRef。我之前提到过将其传递给完整路径与仅传递文件名之间的区别,以及因为在查看代码时,ReaderDocument类似乎对它希望找到文件的位置做出一些假设。无论我将文件保存到哪里,或者我将其传递给它...带有文档路径方法,我都无法使其工作。

重申一点,我能够使用完全相同的文件并在UIWebView中打开它没问题。

那么,是否有人遇到同样的问题,或者能够做我成功尝试的事情?谢谢。

1 个答案:

答案 0 :(得分:5)

很抱歉这么晚回答这个问题。我自己刚刚遇到这个问题,所以我想我会传递我的智慧。

我猜您是将PDF下载到临时目录。此框架正在NSDocumentDirectory中查找该文件。所以当你去保存下载的文件时,只需保存到这样的路径:

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

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

p.s如果我最终修改ReaderDocument以允许临时目录,我将在此处发布编辑。