使用loadData在UIWebView中显示PDF

我正在尝试显示我在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];
我也试过传递nil for textEncoding,以及使用UIWebView的loadRequest。结果是一个显示空白页面的UIWebView。 UIWebView委托方法中没有错误发生。奇怪的是,对于我试图显示的PDF,数据具有正确的长度(以字节为单位),这意味着正在找到并正确加载文件。 有没有人知道这里可能出现的问题或者我如何更好地调试这个问题?     
已邀请:
您可以在下面找到两种不同的方法来打开
UIWebView
上的
.pdf
文件;一个来自
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];
}
    
事实证明,这个问题与PDF的文件格式有关。我使用Illustrator编辑它们并重新保存它们。我猜Mobile Safari不喜欢Illustrator格式化文件的方式,因为当使用模拟器的浏览器查看时,每个文件都是空白的(虽然我可以在普通的Safari中打开PDF就好了)。 解决方案是使用预览打开PDF并重新保存。通过预览保存例程运行每个PDF后,我能够在不更改任何代码的情况下将每个PDF显示在UIWebView中。     
您不需要NSData来加载本地文件,loadRequest应该直接使用NSURL
[self.webView loadRequest:[NSURLRequest requestWithURL:nsurl]];
我只能建议像这样制作NSURL
nsurl = [NSURL URLWithString:[self.url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    
NSData
用于在本地存储在任何目录中时加载pdf文件。 要加载应用程序中的pdf,请使用以下代码。
NSString *path = [[NSBundle mainBundle] pathForResource:@"FileNameHere" 
                                             ofType:@"pdf"];
NSURL *url = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
    

要回复问题请先登录注册