#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]]];