UIWebView не открывает файлы ms word (doc) и ms excel (xls)

#objective-c #excel #file-io #uiwebview #ms-word

#objective-c #excel #file-io #uiwebview #ms-word

Вопрос:

Я разрабатываю приложение для iPad с использованием XCode 3.2.5 iOS SDK 4.2. Для этого приложения требуется открыть файлы PDF, DOC и XLS и просмотреть их пользователю.

Я пытаюсь открыть их с помощью элемента управления UIWebView. Корректно открываются только файлы PDF. При открытии DOC или XLS я получал черный пустой вид. Это происходит в симуляторе и устройстве.

Что я делаю не так?

Вот код:

 -(void)prepareToShow:(NSString*)filePath fileType:(NSString*)fileType request:(NSURLRequest*)request{

UIWebView *webView = (UIWebView*)self.view;
self.actualFilePath = filePath;

NSLog(@"File Path %@",filePath);

NSString *mimeType = @"";
if ([fileType caseInsensitiveCompare:@"PDF"]==NSOrderedSame){
    mimeType = @"application/pdf";
} else  if ([fileType caseInsensitiveCompare:@"DOC"]==NSOrderedSame){
    mimeType = @"application/msword";
} else  if ([fileType caseInsensitiveCompare:@"XLS"]==NSOrderedSame){
    mimeType = @"application/vnd.ms-excel";
}

[webView loadData:[NSData dataWithContentsOfFile:filePath] MIMEType:mimeType textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@"http://www.google.com"]];

}
  

Комментарии:

1. Правильно ли установлены типы mime для .doc и .xls на сервере?

2. Сервер просто отправляет необработанные данные. У меня есть функция, которая считывает эти данные и создает файл (в соответствии с типом файла) во временном каталоге. Я протестировал это, запустив эмулятор. Файл создан, и я могу открыть его (просмотреть) на Mac. Это говорит мне о том, что файл создан правильно.

3. Попробуйте открыть их через UIDocumentController вместо UIWebView: developer.apple.com/library/ios/#documentation/UIKit/Reference /…

4. Спасибо onnoweb !! … Я не знал об этом контроллере. Я реализовал это и работает отлично.

5. @MartinGarcia — Вы можете опубликовать код, как вы это сделали? Я также хочу открыть файл open .doc в UIWebView

Ответ №1:

Для загрузки документов Word, Excel или pdf вам понадобится is physical path of document file . это означает, что файл должен saved in document or temporary directory или он может находиться в application bundle .

 //now use file path to load in webview
[yourWebView loadRequest:[NSURLRequest requestWithURL:[NSURL  fileURLWithPath:yourFilePath]]];