Parece que algunas personas en stackoverflow hacen que esto funcione, pero su código no se publica. Estoy usandoMostrar ppt, doc y xls en UIWebView no funciona, pero el pdf hace
[web loadData:data MIMEType:MIMEType textEncodingName:@"UTF-8" baseURL:nil];
donde MIMEType es:
- @ "application/vnd.ms-powerpoint"
- @ "application/vnd.ms-palabra"
- @ "aplicación /vnd.ms-excel"
(archivos DOC por cierto, que he visto usan mimetype @ 'aplicación/pdf', pero el 'dong' versión parece más apropiado. he intentado tanto por si acaso.)
He verificado que mis "datos" son correctos. Los archivos PDF y TXT funcionan. Cuando UIWebView muestra archivos PPT, DOC o XLS, está en blanco. Puse declaraciones NSLOG en mis llamadas 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"
obviamente la carga está fallando, pero ¿por qué? Si cambio mi mimetype a @ "text/plain" para un archivo PPT, UIWebView se carga bien y muestra caracteres no imprimibles, como se esperaba. Eso me dice que los 'datos' pasaron a loadData: está bien.
¿Significado mis tipos de mimet son malos?
Y para asegurarme de que mis archivos PPT, DOC y XLS están realmente bien para mostrar, creé un archivo html simple con etiquetas de anclaje para los archivos. Cuando el archivo html se muestra en Safari en el iPhone, al hacer clic en los archivos se muestra correctamente en Safari.
Intenté investigar el código de error que se muestra en didFailLoadWithError (100) pero todos los códigos de error documentados son negativos y superiores a 1000 (como se ve en NSURLError.h).
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { NSLog(@"didFailLoadWithError:%@", error); }
Sí, he utilizado loadRequest y funciona bien cuando tengo el archivo adjunto como parte de mi proyecto. Lo hice solo por probar para asegurarme de que mis archivos estaban bien. Sin embargo, en mi aplicación real, el archivo se descarga de un servidor y todo lo que tengo es NSData. – slugolicious
No se puede usar NSURL * url = [NSURL fileURLWithPath: ruta]; y NSURLRequest * request = [NSURLRequest requestWithURL: url]; para descargar desde tu servidor? Puedo. ¿Hay algún motivo por el que no pueda cargar la URL del archivo en su servidor? –
Este método funciona muy bien, ¡¡aplausos !!! – AdamM