簡體   English   中英

如何在iOS中打開PDF文件?

[英]How to open PDF file in iOS?

我嘗試在iOS設備上打開現有的PDF文件。 該文件必須使用默認的PDF閱讀器打開。

在這一刻,我使用“依賴服務”來運行本機代碼。

    public void Save(string filename, byte[] byPDF)
    {
        string strPfad = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), filename);
        if(File.Exists(strPfad))
        {
            File.Delete(strPfad);
            File.WriteAllBytes(strPfad, byPDF);
        }
        else
            File.WriteAllBytes(strPfad, byPDF);

        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);
    }

如果我運行此代碼,則什么也沒發生(只有文件被寫入)。

我只是使用標准的UIViewController並將路徑(將pdf保存在設備上的路徑)傳遞給控制器​​,並將其加載到UIWebview中。

  public class PdfController : UIViewController
{
    public PdfController(string pdfPath)
    {
        NavigationItem.LeftBarButtonItem = new NavBarButton("Back", (sender, args) =>
        {
            NavigationController.PopViewController(true);
        });

        var webView = new UIWebView(View.Bounds);
        View.AddSubview(webView);

        webView.LoadRequest(new NSUrlRequest(new NSUrl(pdfPath, false)));
        webView.ScalesPageToFit = true;
    }
}

但是您需要先下載它,然后將其傳遞給此控制器。此代碼段可讓您下載pdf並保存。

Public void DownloadPDF()
{
       Utility.AddNetworkConnection();
        var webClient = new WebClient();

        loadingView = new LoadingView();
        loadingView.Show("Downloading PDF");

        webClient.DownloadDataCompleted += (s, e) =>
        {
            Utility.RemoveNetworkConnection();
            File.WriteAllBytes(_pdfPathLocation, e.Result); // writes to local storage

            InvokeOnMainThread(() =>
            {
                loadingView.Hide();
                _pdfImageElement.SetValueAndUpdate("Open PDF");
                var a = new UIAlertView("Done", "File downloaded and saved", null, "OK", "Open PDF");
                a.Show();

                a.Clicked += OpenPdf;
            });
        };

        var url = new Uri(_wreck.PdfURL);
        webClient.Encoding = Encoding.UTF8;
        webClient.DownloadDataAsync(url);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM