从文档目录加载 PDF - iPhone
Posted
技术标签:
【中文标题】从文档目录加载 PDF - iPhone【英文标题】:Load PDF from documents directory - iPhone 【发布时间】:2010-10-08 22:00:37 【问题描述】:我不想从资源文件夹加载 PDF 从文档目录加载它。我一直在尝试这样做 几天,但 CGPDFDocumentRef 一直返回 NULL。这是我的 代码:
// Get Documents Directory
NSArray *searchPaths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectoryPath = [searchPaths objectAtIndex:0];
NSString *tempPath = [documentsDirectoryPath
stringByAppendingPathComponent:[appDelegate.issueToLoad
stringByAppendingPathExtension:@"pdf"]];
NSString *path = [tempPath
stringByReplacingOccurrencesOfString:@"localhost/" withString:@""];
NSLog(@"PATH: %@", path);
//Display PDF
CFURLRef pdfURL = CFURLCreateWithFileSystemPath (NULL,
(CFStringRef)path, kCFURLPOSIXPathStyle, FALSE);
NSLog(@"PDF URL: %@", pdfURL);
pdf = CGPDFDocumentCreateWithURL(finalURL);
NSLog(@"PDF: %@", pdf);
文件路径正确,我检查了模拟器文档 目录和文件肯定在那里。当我运行应用程序时 最后一个 NSLog 说 (NULL) 并显示一个空白的白页 PDF。 有什么想法有什么问题吗? 谢谢!
【问题讨论】:
假设 pdf 是一个 CGPDFDocumentRef,我们使用类似的代码。它适用于我的。不明白为什么你的失败了。 是什么让您认为“localhost/”将成为文件路径名的一部分,并且您需要从那里删除它?它通常只出现在 URL 中,但您还没有创建 URL。 【参考方案1】:显而易见的答案是在 der DocumentCreate 函数中使用 pdfURL。 finalURL 不知从何而来,它的用途也不清楚。
pdf = CGPDFDocumentCreateWithURL(pdfURL);
【讨论】:
【参考方案2】:好的,下次试试。我希望这次它会更有用:-/
您确定该文件存在于该路径中吗? 我创建了一个与您类似的测试用例。对于名为“file 123.pdf”的文件,这似乎可行。至少我可以阅读pdf的版本。
我在您的代码示例之后添加了这个,以查看是否加载了 pdf。
NSLog(@"PDF: %@", pdf);
int majorVersion;
int minorVersion;
CGPDFDocumentGetVersion(pdf, &majorVersion, &minorVersion);
NSLog(@"%d %d", majorVersion, minorVersion);
这给了我以下控制台输出:
2010-10-08 13:01:40.246 test[3517:207] PATH: /var/mobile/Applications/E9CDCAC1-430D-488E-ABC3-33F40F6A06F4/Documents/file 123.pdf
2010-10-08 13:01:40.252 test[3517:207] URL: file://localhost/var/mobile/Applications/E9CDCAC1-430D-488E-ABC3-33F40F6A06F4/Documents/file%20123.pdf
2010-10-08 13:01:40.257 test[3517:207] PDF: <NSCFType: 0x139660>
2010-10-08 13:01:40.260 test[3517:207] 1 4
里面显然有一个 %20,所以我认为这不是你的实现的问题。
编辑: 将此添加到您的代码中以确保该文件存在于此路径中。
if (![[NSFileManager defaultManager] fileExistsAtPath:path])
NSLog(@"File does not exist!");
您的路径中必须有一个有效 pdf-File。
【讨论】:
【参考方案3】:您可能在该路径中没有 PDF 文件。 CGPDFDocumentCreateWithURL
中的“Create”指的是 CGPDFDocument 对象;它不会在该 URL 创建文档文件。您只能为已存在的 PDF 文件创建 CGPDFDocument 对象。
另外,正如我在您的另一个问题中提到的,我不明白您为什么要尝试从路径中删除“localhost/”。一开始它不太可能存在(它更有可能只出现在 URL 中),如果它确实出现在那里,它应该出现在那里,并且将其剥离会导致路径错误.
【讨论】:
以上是关于从文档目录加载 PDF - iPhone的主要内容,如果未能解决你的问题,请参考以下文章
将 PDF 文档从远程服务器加载到 base64 编码数据中
在 WKWebView swift 中下载文档并加载图像(png、jpeg)、pdf、doc 等