Iphone 从自己的应用程序中查看PDF和Office文档?

Iphone 从自己的应用程序中查看PDF和Office文档?,iphone,objective-c,xamarin.ios,Iphone,Objective C,Xamarin.ios,我正在计划一个iOS应用程序,它将允许使用Web服务在我的服务器上浏览文档。用户可以选择下载文档(PDF和MS Office),以便脱机使用。 现在我知道iPhone/iPad能够查看各种文档格式,包括PDF、DOC(X)、XLS(X),如果它们是通过电子邮件接收的话。我假设它们都由同一个“预览模块”处理 问题是:如果我的应用程序存储中有文档,我如何使用相同的功能 ObjC或MONOTOUCH中的解决方案很好,或者只是将my指向正确的方向 René在我的应用程序中,我允许用户使用UIWebVie

我正在计划一个iOS应用程序,它将允许使用Web服务在我的服务器上浏览文档。用户可以选择下载文档(PDF和MS Office),以便脱机使用。 现在我知道iPhone/iPad能够查看各种文档格式,包括PDF、DOC(X)、XLS(X),如果它们是通过电子邮件接收的话。我假设它们都由同一个“预览模块”处理

问题是:如果我的应用程序存储中有文档,我如何使用相同的功能

ObjC或MONOTOUCH中的解决方案很好,或者只是将my指向正确的方向


René

在我的应用程序中,我允许用户使用UIWebView控件在应用程序中查看PDF,并在其中加载PDF的url。这也适用于内部PDF。我从未尝试过其他类型的文档,但我想同样的方法也会奏效。

您可以使用
UIDocumentInteractionController
,它将向用户提供一个菜单,为他们提供“快速查看”(将在应用程序中打开文件)或者根据用户安装的内容在另一个应用程序中打开文件的选项

我使用的相同示例代码如下所示(其中e.Result是调用我的web服务的结果)


委托类包含将显示预览视图的视图的替代(因此您希望将当前视图传递给该视图,并确保该视图将显示预览)

谢谢!你知道在没有第三方应用注册文档类型的新安装中,是否有一个本机支持的文件类型列表?有一个苹果文档列出了iOS本机支持的文件类型。可以在这里找到:
string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
string filePath = Path.Combine(path, e.Result.Filename);
if (!File.Exists(filePath))
{
    File.WriteAllBytes(filePath, e.Result.DocumentData);
}

UIDocumentInteractionController docControl = UIDocumentInteractionController.FromUrl(NSUrl.FromFilename(filePath));
docControl.Delegate = new UIDocumentInteractionControllerDelegateClass(this);

InvokeOnMainThread(delegate {
    docControl.PresentOptionsMenu(new RectangleF(0,-260,320,320), tbnv.View, true);
});