2017-03-13 2 views
1

Ich versuche, eine vorhandene PDF-Datei auf einem iOS-Gerät zu öffnen. Diese Datei muss mit dem Standard-PDF-Reader geöffnet sein.Wie öffne ich eine PDF-Datei in iOS?

In diesem Moment verwende ich den "Abhängigkeitsdienst", um nativen Code auszuführen.

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

Wenn ich diesen Code ausführen ist nichts passiert (nur die Datei wird geschrieben).

Antwort

2

Ich habe gerade einen Standard-UIViewController verwendet und den Pfad (wo die PDF-Datei auf dem Gerät gespeichert ist) an den Controller übergeben und ihn in eine UIWebview geladen.

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

Aber Sie werden es brauchen, um zuerst herunterladen und auf diesem Controller Diese snippit passieren können Sie das pdf herunterladen und speichern.

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

Die Datei ist aktuell vorhanden. – Nyxero

+0

Das oberste Snippet pdfPath ist der Speicherort auf dem Telefon. Dadurch wird das heruntergeladene PDF geöffnet – InitLipton