我正在使用我的 iPhone 访问我的 PHP 服务器中可用的 PDF 文件,并将文件 url 传递给 CGPDFDocumentCreateWithURL。每当我访问将下载到我的 iphone 文档目录的文件时,我的问题是什么?
因为如果我的应用程序处于活动状态一段时间,我会收到错误 CFURLCreateDataAndPropertiesFromResource 错误代码 -14。收到此错误后,我的应用程序没有崩溃,但无法正常运行。
我无法理解内部流程?请帮我解决这个问题?
我正在使用我的 iPhone 访问我的 PHP 服务器中可用的 PDF 文件,并将文件 url 传递给 CGPDFDocumentCreateWithURL。每当我访问将下载到我的 iphone 文档目录的文件时,我的问题是什么?
因为如果我的应用程序处于活动状态一段时间,我会收到错误 CFURLCreateDataAndPropertiesFromResource 错误代码 -14。收到此错误后,我的应用程序没有崩溃,但无法正常运行。
我无法理解内部流程?请帮我解决这个问题?
我认为你误解了什么CGPDFDocumentCreateWithURL
。它不会将 PDF 文档下载到文件系统。它根据提供的 URL 在内存中创建 PDF。它不会将任何内容保存到文件系统中。
我强烈建议您使用网络类(NSURLConnection、ASI 等)先下载 PDF ,然后再打开它。这将使您能够提供更好的反馈,并支持更高级的下载功能,例如恢复部分下载、提供进度和更好的线程管理。
保存 PDF
NSString *urlString = @"http://www.web.com/url/for/document.pdf";
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [NSData dataWithContentsOfURL:url];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfPath = [documentsDirectory stringByAppendingPathComponent:@"myLocalFileName.pdf"];
[data writeToFile:pdfPath atomically:YES];
然后将该保存的文件加载到 Web 视图中:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfPath = [documentsDirectory stringByAppendingPathComponent:@"myLocalFileName.pdf"];
NSURL *url = [NSURL fileURLWithPath: pdfPath];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[[self mainWebView] loadRequest:request];