我找到了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];
Run Code Online (Sandbox Code Playgroud)
生成的pdfDoc将为null,或者,当传递上面的完整路径时,它将与ReaderDocument的第229行的断言一起崩溃
NSAssert(NO, @"CGPDFDocumentRef == NULL");
Run Code Online (Sandbox Code Playgroud)
因为(我在做出一个合理的假设)这一行(217;同一类):
CGPDFDocumentRef thePDFDocRef = CGPDFDocumentCreateX(docURLRef, _password);
Run Code Online (Sandbox Code Playgroud)
无法创建CGPDFDocumentRef.我之前提到过将它传递给完整路径与仅传递文件名之间的区别,这是因为在查看代码时,ReaderDocument类似乎会对它希望找到文件的位置做出一些假设.无论我将文件保存到哪里,或者我传递给它的是... withDocumentFilePath方法,我都无法使它工作.
重申一下,我能够使用完全相同的文件并在UIWebView中打开它没问题.
那么,任何人都有同样的问题,或者能够做我正在尝试成功的事情吗?谢谢.
很抱歉这么晚回答这个问题.我自己刚刚遇到这个问题,所以我想我会传递我的智慧.
我的猜测是你将PDF下载到临时目录.此框架正在NSDocumentDirectory中查找该文件.所以当你去保存下载的文件时,只需保存到这样的路径:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *baseDocumentPath = [paths objectAtIndex:0];
NSString *filePath = [baseDocumentPath stringByAppendingPathComponent:@"/temp.pdf"];
Run Code Online (Sandbox Code Playgroud)
一旦你这样做,它将正确加载.
ps如果我最终修改ReaderDocument以允许临时目录,我将在此处发布编辑.
| 归档时间: |
|
| 查看次数: |
1021 次 |
| 最近记录: |