看起来像stackoverflow上的一些人让这个工作,但他们的代码没有发布.我正在使用
[web loadData:data MIMEType:MIMEType textEncodingName:@"UTF-8" baseURL:nil];
其中MIMEType是:
@ "应用程序/ vnd.ms-简报"
@"应用程序/ vnd.ms字"
@ "应用程序/ vnd.ms-EXCEL"
(顺便说一句,我看过DOC文件使用的是mimetype @"application/msword",但是"vnd"版本似乎更合适.我试过两种以防万一.)
我确认我的'数据'是正确的.PDF和TXT文件有效.当UIWebView显示PPT,DOC或XLS文件时,它是空白的.我把NSLOG语句放在我的UIWebViewDelegate调用中.
shouldStartLoadWithRequest:navType:5 webViewDidStartLoad: didFailLoadWithError:Error Domain=NSURLErrorDomain Code=100 UserInfo=0x122503a0 "Operation could not be completed. (NSURLErrorDomain error 100.)" didFailLoadWithError:Error Domain=WebKitErrorDomain Code=102 UserInfo=0x12253840 "Frame load interrupted"
显然负载是失败的,但为什么呢?如果我将我的mimetype更改为@"text/plain"以获取PPT文件,则UIWebView会正常加载,并按预期显示不可打印的字符.那告诉我传递给loadData的'数据'是好的.
意思是我的mimetypes很糟糕?
为了确保我的PPT,DOC和XLS文件确实可以显示,我创建了一个带有锚标记的简单html文件.当html文件显示在iPhone上的Safari中时,单击文件会在Safari中正确显示.
我试图研究didFailLoadWithError(100)中显示的错误代码,但所有记录的错误代码都是负数且大于1000(如NSURLError.h中所示).
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { NSLog(@"didFailLoadWithError:%@", error); }
james_womack.. 9
您是否尝试过使用以下记录的方法?:
-(void)loadDocument:(NSString*)documentName inView:(UIWebView*)webView { NSString *path = [[NSBundle mainBundle] pathForResource:documentName ofType:nil]; NSURL *url = [NSURL fileURLWithPath:path]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [webView loadRequest:request]; } // Calling -loadDocument:inView: [self loadDocument:@"mydocument.rtfd.zip" inView:self.myWebview];
它适用于iPhone OS 2.2.1:Excel(.xls)Keynote(.key.zip)Numbers(.numbers.zip)Pages(.pages.zip)PDF(.pdf)Powerpoint(.ppt)Word(. DOC)
iPhone OS 3.0支持以下其他文档类型:RTF格式(.rtf)富文本格式目录(.rtfd.zip)Keynote '09(.key)Numbers '09(.numbers)Pages '09(.pages)
您是否尝试过使用以下记录的方法?:
-(void)loadDocument:(NSString*)documentName inView:(UIWebView*)webView { NSString *path = [[NSBundle mainBundle] pathForResource:documentName ofType:nil]; NSURL *url = [NSURL fileURLWithPath:path]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [webView loadRequest:request]; } // Calling -loadDocument:inView: [self loadDocument:@"mydocument.rtfd.zip" inView:self.myWebview];
它适用于iPhone OS 2.2.1:Excel(.xls)Keynote(.key.zip)Numbers(.numbers.zip)Pages(.pages.zip)PDF(.pdf)Powerpoint(.ppt)Word(. DOC)
iPhone OS 3.0支持以下其他文档类型:RTF格式(.rtf)富文本格式目录(.rtfd.zip)Keynote '09(.key)Numbers '09(.numbers)Pages '09(.pages)
我发现读取Office对象(使用.doc或.xls测试)的唯一方法是将NSData对象保存在临时文件中,然后读取它.
-(void)openFileUsingExtension:(NSString*)extension { NSString *path = [NSString stringWithFormat:@"%@temp.%@",NSTemporaryDirectory(),extension]; NSLog(@"%@",path); if ([objectFromNSData writeToFile:path atomically:YES]) { NSLog(@"written"); NSURL *url = [NSURL fileURLWithPath:path]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [self.webview loadRequest:request]; self.webview.scalesPageToFit = YES; self.webview.delegate = self; [self.view addSubview:self.webview]; } }
然后你可以删除UIWebViewDelegate方法中的文件:
- (void)webViewDidFinishLoad:(UIWebView *)webView{ NSString *path = [NSString stringWithFormat:@"%@temp.%@",NSTemporaryDirectory(),extension]; [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; }