在我的工作中,我只想阅读iphone设备中下载的PDF
首先,我尝试使用“bundleRoot”目录,它在模拟器中工作但在设备上没有。现在,我只是在模拟器中测试文档目录或缓存。
How can I get a writable path on the iPhone?
在我阅读上述主题后,
我尝试过使用文档目录或缓存。
这是我找到可写路径的代码
/ ********************************************** ******************************** /
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];
BOOL isDir = NO;
NSError *error;
if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir == NO) {
[[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error];
}
NSString *path_to_file = [cachePath stringByAppendingPathComponent:@"testing6.pdf"];
/ ********************************************** ********* /
我可以找到下载的文件并获取此目录中的大小,但我无法使用以下代码读取该文件:
pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);
page = CGPDFDocumentGetPage(pdf, 1);
CGPDFPageRetain(page);
CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
返回pageRect.size.width为0
打印出下载和检索文件路径后,还有:
/ Users / ITDEV / Library / Application Support / iPhone Simulator / 4.3.2 / Applications / 806ED359-70F8-4C07-996F-6AFC959B3FC7 / Library / Caches / testing6.pdf
任何人都可以帮助我吗?
答案 0 :(得分:0)
您可以在UIWebView中阅读该文件。
使用以下代码即可打开文件。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];
BOOL isDir = NO;
NSError *error;
if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir == NO) {
[[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error];
}
NSString *path_to_file = [cachePath stringByAppendingPathComponent:@"testing6.pdf"];
NSURL *targetURL = [NSURL fileURLWithPath:path_to_file];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[YourWebViewName loadRequest:request];
请勿忘记将您的网页浏览的IBOutlet
与nib文件的UIWebview相关联。
答案 1 :(得分:0)
如果所有其他答案都不起作用,请尝试使用NSBundle,如下所示:
NSString *path = [[NSBundle mainBundle] pathForResource:@"myfilename" ofType:@"pdf"];
NSLog("path : %@",path);
我面临同样的问题,我发现我的plist文件不在Documents目录中,而是显示我的应用程序的路径,然后它显示MYAppName.app/myPlist.plist文件。这意味着app文件在我自己的包中包含我的plist文件,即MainBundle。