Xamarin表单IOS打开PDF

时间:2017-11-09 13:48:45

标签: c# ios pdf xamarin xamarin.forms

我需要从文件系统打开pdf文件。 我知道如何获取文件的路径,但我的IPhone无法打开它。

我使用以下代码渲染器:

using Xamarin.Forms;
using IdokladX.Services;
using UIKit;
using Foundation;
[assembly: Dependency(typeof(IdokladX.iOS.Services.PdfViewer))]
namespace IdokladX.iOS.Services {
public class PdfViewer:IPdfViewer {

    public void OpenPdf(string filename)
    {
        FileWorker fl = new FileWorker();

        if (fl.Exists(filename))
        {
            string strPfad = fl.GetFilePath(filename);

            var viewer = UIDocumentInteractionController.FromUrl(NSUrl.FromFilename(strPfad));
            var controller = GetVisibleViewController();
            viewer.PresentOpenInMenu(controller.View.Frame, controller.View, true);
        }
    }
    private UIViewController GetVisibleViewController(UIViewController controller = null)
    {
        controller = controller ?? UIApplication.SharedApplication.KeyWindow.RootViewController;

        if (controller.PresentedViewController == null)
            return controller;

        if (controller.PresentedViewController is UINavigationController)
        {
            return ((UINavigationController)controller.PresentedViewController).VisibleViewController;
        }

        if (controller.PresentedViewController is UITabBarController)
        {
            return ((UITabBarController)controller.PresentedViewController).SelectedViewController;
        }

        return GetVisibleViewController(controller.PresentedViewController);
    }
    }
}

此处FileWorker是一个类,其中包含保存/删除/检查文件的方法(如果存在)。 怎么了?我还在Info.plist文件中添加了文件类型PDF。

enter image description here

有什么问题?不建议我使用WebView,我需要通过另一个程序打开pdf文件。

1 个答案:

答案 0 :(得分:1)

<强>参考:

请参阅presentOpenInMenu(from:in:animated:)的文档:

  

如果没有支持打开文档的注册应用程序,则文档交互控制器不会显示菜单。

<强>解决方案:

测试设备上的“打开方式...”和确保某些应用可以打开pdf文件(例如iBooks,Notes,Chrome等)。否则,菜单将不会显示。

<强>注意:

如果您只是需要其他应用来打开您的文件,则无需为PDF添加Document TypeDocument Type用于在“打开方式...”菜单中显示您的应用,以便在其他应用触发presentOpenInMenu时打开其他应用的文件。