Похоже, что несколько человек в stackoverflow заставляют это работать, но их код не публикуется. Я использую
[web loadData:data MIMEType:MIMEType textEncodingName:@"UTF-8" baseURL:nil];
где MIMEType:
- @ "приложение / vnd.ms-PowerPoint"
- @ "приложение / vnd.ms слово"
- @ "применение / vnd.ms-первенствует"
(Кстати, я видел DOC-файлы, использующие mimetype @ "application / msword", но версия "vnd" кажется более подходящей. Я попробовал оба варианта на всякий случай.)
Я подтвердил, что мои «данные» верны. PDF и TXT файлы работают. Когда UIWebView отображает файлы PPT, DOC или XLS, он остается пустым. Я помещаю операторы NSLOG в мои вызовы UIWebViewDelegate.
shouldStartLoadWithRequest:<NSMutableURLRequest about:blank> 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: все в порядке.
Значит, мои миметипы плохие?
И чтобы убедиться, что мои файлы PPT, DOC и XLS действительно подходят для отображения, я создал простой HTML-файл с тегами привязки к файлам. Когда html-файл отображается в Safari на iPhone, при щелчке по файлам в Safari правильно отображаются файлы.
Я пытался исследовать код ошибки, отображаемый в didFailLoadWithError (100), но все документированные коды ошибок отрицательны и больше 1000 (как видно из NSURLError.h).
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { NSLog(@"didFailLoadWithError:%@", error); }