2014-02-05 7 views
7

Ich habe die offizielle Homepage für doc Unterstützung geprüft, und seine klar, dass docx in UIWebview nicht unterstützt wird,Docx-Unterstützung in UIWebview (iOS)?

https://developer.apple.com/library/ios/qa/qa1630/_index.html

Aber ich fand auch heraus, dass einige Jungs docx-Dateien in UIWebview öffnen konnten,

Cannot open docx file through webbrowser in app using OpenIn functionality, Why doc and docx losing style information in iOS?, How to open Microsoft Office documents in iPhone

auch afaik wird iOS Safari-Browser auf UIWebview gebaut und ich bin in der Lage docx-Datei zu öffnen s aus dem Internet im Browser. Aber wenn ich ein docx von meinem Testserver herunterlade (ich habe das heruntergeladene docx geprüft, indem ich es aus dem Simulator importiert habe und es sich perfekt auf meinem Mac öffnet), kann ich es nicht in UIWebview anzeigen.

Ich bin verwirrt, Ist docx unterstützt oder nicht? Oder scheint es, dass docx eine weitere Vielfalt von Formaten hat, von denen einige unterstützt werden?

Hier ist mein Code zum Laden,

NSURLRequest *request = [NSURLRequest requestWithURL:urlPath]; 
    [webViewForDocsView loadRequest:request]; 
+0

Ich habe docx in meinen bisherigen Apps. Meine Lösung besteht darin, auf Google Drive hochzuladen und den öffentlich freigegebenen Link des hochgeladenen Dokuments in "UIWebView" zu öffnen. Nachteil ist, dass es eine Google Drive Toolbar gibt. – Raptor

+0

Clever Problemumgehung! – BangOperator

+0

p.s. Dies funktioniert für fast alle von Google Drive unterstützten Dokumente. Auch dieselbe Methode kann auf Android Web View angewendet werden – Raptor

Antwort

7

Ich weiß nicht warum, aber nicht funktionierte docx laden sie die URL-Schema verwendet (siehe unten Code gearbeitet nicht)

NSURLRequest *request = [NSURLRequest requestWithURL:urlPath]; 
[webViewForDocsView loadRequest:request]; 

Laden Sie stattdessen die Datei in den Speicher (mit N SData) und das Laden der Daten mit MIME-Typ hat funktioniert (der untenstehende Code wirkte wie Charme!)

NSString *path = [urlFileInView path]; 
NSData *data = [[NSFileManager defaultManager] contentsAtPath:path]; 


webViewForDocsView.delegate = self; 
[webViewForDocsView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil]; 
+0

Ich weiß, das ist alt, aber für zukünftige Leser, überprüfen Sie die HTTP-Antwort-Header des Servers, von dem Sie versuchten, es zu laden. Wahrscheinlich ist das der Unterschied, wenn der Server nicht den richtigen MIME-Typ zurückgibt, wahrscheinlich, warum er nicht funktioniert (meiner Erfahrung nach). – eselk

6

Ja UIWebView die docx unterstützt. Gerade versucht eine docx-Datei aus Bündel Laden und es scheint gut arbeiten (in diesem Beispiel dem Namen „DOC1.docx“) ::

NSString *path = [[NSBundle mainBundle] pathForResource:@"DOC1" ofType:@"docx"]; 
NSURL *targetURL = [NSURL fileURLWithPath:path]; 
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL]; 
[mywebView loadRequest:request]; 

und wenn Sie versuchen, eine docx-Datei irgendwo auf einem Server befindet anzuzeigen, Sie kann einfach auf Ihre Web-Ansicht laden sie es direkt:

NSURL *targetURL = [NSURL URLWithString:@"http://www.central.wa.edu.au/Current_Students/JobsCareersandLeavingCentral/Documents/Resume%20Template.docx"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL]; 
[mywebView loadRequest:request]; 
+0

Vom Server bekomme ich nicht den genauen URL-Speicherort, ich bekomme die Base64-codierten Daten, mit dieser i create docx-Datei in der Anwendung Sandbox-Ordner. Daher befindet sich die Datei weder im Hauptpaket noch an einem bestimmten Serverstandort. Wie auch immer, ich habe die Antwort darauf bekommen. – BangOperator