Es sieht aus wie ein paar Leute auf stackoverflow bekommen dies zu arbeiten, aber ihr Code ist nicht veröffentlicht. Ich verwendeAnzeigen von PPT, doc und xls in UIWebView funktioniert nicht, aber pdf tut
[web loadData:data MIMEType:MIMEType textEncodingName:@"UTF-8" baseURL:nil];
wo Mimetype ist:
- @ "application/vnd.ms-Powerpoint"
- @ "application/vnd.ms-Wort"
- @ "-Anwendung /vnd.ms-excel“
(BTW, ich habe DOC gesehen Dateien MIME-Typ verwenden @ "application/msword", sondern die "VND" -Version scheint besser geeignet. ich habe gerade versucht, sowohl für den Fall.)
Ich habe überprüft, dass meine 'Daten' korrekt sind. PDF- und TXT-Dateien funktionieren. Wenn das UIWebView PPT-, DOC- oder XLS-Dateien anzeigt, ist es leer. Ich habe NSLOG-Anweisungen in meine UIWebViewDelegate-Aufrufe eingefügt.
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"
so offensichtlich die Last versagt, aber warum? Wenn ich meinen MIME-Typ für eine PPT-Datei in @ "text/plain" ändere, lädt das UIWebView ordnungsgemäß und zeigt nicht druckbare Zeichen wie erwartet an. Das sagt mir die 'Daten', die an loadData übergeben werden: ist in Ordnung.
Bedeutung meine Mimetypen sind schlecht?
Und nur um sicherzustellen, dass meine PPT, DOC und XLS-Dateien in der Tat in Ordnung sind, habe ich eine einfache HTML-Datei mit Anchor-Tags zu den Dateien erstellt. Wenn die HTML-Datei in Safari auf dem iPhone angezeigt wird, wird das Klicken auf die Dateien in Safari korrekt angezeigt.
Ich habe versucht, den in didFailLoadWithError (100) angezeigten Fehlercode zu recherchieren, aber alle dokumentierten Fehlercodes sind negativ und größer als 1000 (wie in NSURLError.h zu sehen).
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { NSLog(@"didFailLoadWithError:%@", error); }
Ja, ich habe loadRequest verwendet und das funktioniert gut, wenn ich die Anhangsdatei als Teil meines Projekts habe. Ich habe das nur zum Testen gemacht, um sicherzustellen, dass meine Dateien in Ordnung waren. In meiner realen Anwendung wird die Datei jedoch von einem Server heruntergeladen, und alles, was ich habe, ist NSData. – slugolicious
Kann nicht verwendet werden NSURL * url = [NSURL fileURLWithPath: Pfad]; und NSURLRequest * Anfrage = [NSURLRequest requestWithURL: URL]; von Ihrem Server herunterladen? Ich kann. Gibt es einen Grund, warum Sie die URL der Datei nicht auf Ihrem Server laden können? –
Diese Methode funktioniert gut, Prost !!! – AdamM