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

Posted

技术标签:

【中文标题】使用 webView ios 显示下载的 PDF 文件【英文标题】:Show downloaded PDF file with webView ios 【发布时间】:2014-05-18 21:58:36 【问题描述】:

我正在制作一个 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:信号 SIGABRT” 如果我从头开始将 pdf 文件放在 ind 文件夹中,但当我下载来自网络的pdf,它会出错...... 有更多与该错误相关的信息......它实际上发生在哪一行?实际的堆栈跟踪是什么? 首先,我对这种代码很陌生,所以希望我不要问愚蠢!?但它向我显示“线程 1:...”已打开的行: NSURL *urlen = [NSURL fileURLWithPath:path]; 它写道:DiskImageCache:无法解析旧目录的绝对路径。 *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*** -[NSURL initFileURLWithPath:]: nil string parameter” 【参考方案1】:

来自NSURLofficial 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

【讨论】:

该死的,你很好……!它有效,非常感谢。最近几天我试图解决这个问题,现在它可以工作了!!非常感谢..

以上是关于使用 webView ios 显示下载的 PDF 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 WebView 问题中查看 PDF (Xamarin.ios)

ios滚动webview以在pdf中添加书签

在 WebView 中使用 QLViewController 查看 PDF

生成PDF,但在swift ios的webView中未检索到文件

如果 url 包含嵌入 html 数据,如何在 Webview 中显示 pdf?

IOS加载PDF文件