使用 Webview 在 iphone 中查看 .doc、.docx、.rtf、.ppt 文件

Posted

技术标签:

【中文标题】使用 Webview 在 iphone 中查看 .doc、.docx、.rtf、.ppt 文件【英文标题】:view .doc, .docx, .rtf, .ppt file in iphone using Webview 【发布时间】:2011-02-23 05:01:42 【问题描述】:

我想在 iphone 中查看 .doc、.docx、.rtf、.ppt 文件。

但我猜我这边出了点问题,它不适用于上述格式,但我的代码适用于 .txt 和 .pdf 文件。

我已经阅读了有关 Webview 的文档,它声明它支持查看上述文档。

下面是我的 .doc 的 sn-p

[webView loadData:requestData MIMEType:@"application/msword" textEncodingName:@"UTF-8" baseURL:nil];

对于 .ppt,我使用 MIME 类型为 "application/vnd.ms-powerpoint"

注意:如果我将 MIME 类型设置为 .doc/.rtf 的“text/html”,那么它会显示一些垃圾数据所以我认为 MIME 类型中缺少一些东西。

非常感谢任何帮助。

等待您的回复。

更新:........

在打开这些类型的文件格式时,NSData 似乎存在一些问题。 我的数据已加密,因此我无法使用 requestWithURL 直接,其他事情是我需要传递凭据来获取文件,如果我使用

保存凭据,凭据将无法正常工作
[[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:credential
                                        forProtectionSpace:protectionSpace];

然后使用下面的方式发出请求

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]] ]

有什么方法可以将 NSData 用于上述格式,以便我可以进行异步调用并传递我的凭据,然后解密数据并在 WebView 中显示。

【问题讨论】:

请参考这组mime类型(适用于pptx)-***.com/questions/4212861/… 【参考方案1】:

尝试使用 QuickLook 框架,这是 Apple 提供的一项了不起的功能。如果您已经看到,当您在 MAC 系统上选择任何文件并单击空格键时,您将快速预览您的文件,它可能是任何东西... *.pdf、*.doc、*.docx 或任何东西。 .. 即使您没有为相同的文件安装这些软件,您也会获得这些文件的预览...

QuickLook 框架也提供相同的功能...请浏览一些相同的链接..

http://robsprogramknowledge.blogspot.com/2011/02/quick-look-for-ios_21.html https://github.com/rob-brown/Demos https://github.com/rob-brown/RBFilePreviewer http://robsprogramknowledge.blogspot.com/2011/02/quick-look-for-ios_21.html (推荐..)http://iosdevelopertips.com/data-file-management/preview-documents-with-qlpreviewcontroller.html

【讨论】:

我知道你想使用 WebView 但这也最适合任何文件... :) 我无法使用Quick Look Framework 打开.docx 文件。我的文件已下载到 Documents 目录。【参考方案2】:

并非所有这些格式 (docx) 都受支持。这看起来像official word。在示例中,Apple 没有指定 mime 类型。

This question 建议您必须使用 NSURLRequest 而不是 loadData。

编辑:

据我所知,对于这些类型,您不能直接将数据传递给 loadData。

简单的解决方法是写入临时文件。您可以在 webViewDidFinishLoad 中删除它,或者从技术上讲,在文件打开后立即删除。

困难的工作是使用 NSURLCache。您应该能够实现自定义 NSURLCache 并让 WebKit 通过 setSharedURLCache 使用它。您的缓存基本上知道如何获取本地加密文件并假装它们已被缓存。我没有试过这个,但我认为这是你最好的选择。这种方法可能会像 loadData 一样被阻止。

【讨论】:

感谢您的回复。由于数据是加密的,所以我似乎不能直接使用 NSURLRequest 。有什么方法可以使用 NSData 打开我的 .doc、.ppt 文件。 感谢您的回复。我已经尝试了第一种方法它的工作原理。研究第二种方法【参考方案3】:

您需要向 baseURL: 提供一些内容。例如:

[webView loadData:requestData MIMEType:@"application/msword" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@"http://localhost/"]];

现在为我工作。

【讨论】:

【参考方案4】:

在 iPhone 而不是模拟器上试用

【讨论】:

以上是关于使用 Webview 在 iphone 中查看 .doc、.docx、.rtf、.ppt 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从 iPhone 应用程序的 webview 中的外部链接返回

使用 webview 在 iphone 应用程序中播放来自 youtube 的视频

iPhone:等待 webview 在自动化测试中加载

如果它不适合 webView (iphone),则从 html 字符串中裁剪最后一句

没有 WebView 的 iOS 应用程序中的 Google 日历

在 iPhone 上加载 url 时在 webview 中添加阴影