使用webView ios显示下载的PDF文件

时间:2014-05-18 21:58:37

标签: ios objective-c pdf webview

我正在制作iPhone应用,它将下载PDF文件并将其显示在webView中。 但是我的脚本不会显示下载的PDF。它会下载并将其保存在Documents中,但webView不会显示它。

这是我的剧本:

NSString *path = [[NSBundle mainBundle] pathForResource:@"3" ofType:@"pdf"];
NSURL *urlen = [NSURL fileURLWithPath:path];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:urlen];
[webView loadRequest:urlRequest];
[webView setScalesPageToFit:YES];

1 个答案:

答案 0 :(得分:2)

来自NSURL official documentation on NSURL的官方文档。

nil作为fileURLWithPath:的参数发送会产生异常。

问题实际上是[[NSBundle mainBundle] pathForResource:ofType:]。这将返回nil,而不是文件的实际路径。

这里的问题实际上是[NSBundle mainBundle]指的是与您的应用捆绑在一起的文件。您需要查看应用程序的文档目录,该目录是存储已下载文件的位置。

此方法将为您提供应用程序文档目录的路径:

NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

现在,只需将文件名附加到此路径:

NSString *pdfPath = [documentsPath stringByAppendingPathComponent:@"3.pdf"];

为了获得良好的衡量标准(因为崩溃总是很糟糕),请确保文件存在:

BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:pdfPath];

并完成如下:

if (fileExists) {
    NSURL *urlen = [NSURL fileURLWithPath:pdfPath];
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:urlen];
    [webView loadRequest:urlRequest];
    [webView setScalesPageToFit:YES];
} else {
    // probably let the user know there's some sort of problem
}