我正在计划一个iOS应用程序,它允许使用WebService在我的服务器上浏览文档。用户可以选择下载文档(PDF和MS Office)以使其脱机使用。 现在我知道iPhone / iPad能够查看各种文档格式,包括PDF,DOC(X),XLS(X),如果它们是通过电子邮件接收的话。我假设它们都由相同的“预览模块”处理。
问题是:如果我的应用程序存储中有文档,我该如何使用相同的功能?
ObjC或MONOTOUCH中的解决方案很好,或者只是指向正确的方向。
勒
答案 0 :(得分:3)
您可以使用UIDocumentInteractionController
向用户显示一个菜单,提供“Quick Look”(将在应用程序中打开文件)或选项以在另一个应用程序中打开文件,具体取决于用户已安装。
我使用的相同示例代码看起来像这样(其中e.Result是调用我的Web服务的结果)。
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);
});
委托类包含将显示预览视图的视图的覆盖(因此您希望将当前视图传递给此视图,并确保这是预览将显示在其中的视图)。
答案 1 :(得分:0)
在我的应用程序中,我允许用户使用UIWebView控件查看PDF的应用程序,只需在其中加载PDF的URL。这应该适用于内部PDF。我从来没有尝试过其他类型的文档,但我想同样的方法也可以。