【问题标题】:view .doc, .docx, .rtf, .ppt file in iphone using Webview使用 Webview 在 iphone 中查看 .doc、.docx、.rtf、.ppt 文件
【发布时间】: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 中显示。

【问题讨论】:

标签: iphone-sdk-3.0 iphone


【解决方案1】:

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

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

【讨论】:

  • 我知道你想使用 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 而不是模拟器上试用

    【讨论】:

      猜你喜欢
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 2012-01-24
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      相关资源
      最近更新 更多