使用loadData在UIWebView中显示PDF

mmo*_*lbo 11 pdf uiwebview nsdata

我正在尝试显示我在UIWebView中本地存储的PDF.这就是我目前尝试这样做的方式:

if (![[NSFileManager defaultManager] fileExistsAtPath:self.url]) {
LOG_ERROR(@"Couldn't load local file. File at path: %@ doesn't exist", self.url);
        return; 
}

nsurl=[NSURL fileURLWithPath:self.url];
NSData *data = [NSData dataWithContentsOfFile:self.url];
LOG_DEBUG(@"data length:%d",[data length]);
[self.webView loadData:data MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];
Run Code Online (Sandbox Code Playgroud)

我也试过传递nil for textEncoding,以及使用UIWebView的loadRequest.结果是一个显示空白页面的UIWebView.UIWebView委托方法中没有错误发生.奇怪的是,对于我试图显示的PDF,数据具有正确的长度(以字节为单位),这意味着正在找到并正确加载文件.

有没有人知道这里可能出现的问题或者我如何更好地调试这个问题?

Yun*_*hel 4

您可以在下面找到两种不同的方法来打开.pdf您的文件UIWebView;一来自 a url,一作为NSData

if (self.pdfDataToLoad) //Loading the pdf as NSData
{ 
    [self.webView loadData:self.pdfData 
                  MIMEType:@"application/pdf" 
          textEncodingName:@"UTF-8" 
                   baseURL:nil];
}
else  //Open the pdf from a URL 
{ 
    NSURL *targetURL = [NSURL URLWithString:@"https://bitcoin.org/bitcoin.pdf"];
    NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
    [self.webView loadRequest:request];
}
Run Code Online (Sandbox Code Playgroud)

  • 这。每个人都在说“你不需要它,只需加载文件 URL 即可!”。但就我而言,我在 RAM 中将 PDF 作为“NSData()”(我只是从 HTML 渲染它),将其保存到临时文件中是没有意义的。感谢您回答实际问题。 (3认同)