2014-11-12 30 views

Antwort

41

Wenn Sie nur eine PDF-Datei anzeigen möchten, können Sie sie in ein UIWebView laden.

let url : NSURL! = NSURL(string: "http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIWebView_Class/UIWebView_Class.pdf") 
webView.loadRequest(NSURLRequest(URL: url)) 

Wenn Sie mehr erreichen möchten, ist ein guter Rahmen PSPDFKit.

+0

Danke für die Antwort! Aber kann das nur von einem externen pdf verwendet werden, funktioniert es, wenn ich pdf in das Programm selbst einfügen wollte? – user3706773

+2

UIWebView kann eine lokale PDF laden. Verwenden Sie stattdessen '[NSURL fileURLWithPath: strURLPath];'. .Der Pfad ist entweder Ihr Dokumentenverzeichnis oder Ihr Ressourcenpaket. . Es gibt auch eine Methode in UIWebView, um Daten zu laden, damit Sie ein NSData-Objekt füttern können. (Streaming von Datei ist jedoch wahrscheinlich besser für die Speicherauslastung). –

+0

Wenn in Ressourcen-Verzeichnis: http://stackoverflow.com/questions/6398937/getting-a-list-of-files-in-the-resources-folder-ios (ähnliche Geschichte für Dokumente dir). . . Erstellen Sie NSURL aus Zeichenfolge. –

9

Sie können UIDocumentInteractionController verwenden, um eine Vorschau der Datei in IOS anzuzeigen. In der Datei-View-Controller, eine Eigenschaft vom Typ UIDocumentInteractionController hinzufügen

und eine einfache Delegatmethode davon implementieren

self.documentInteractionController = UIDocumentInteractionController.init(URL: url) 
self.documentInteractionController?.delegate = self 
self.documentInteractionController?.presentPreviewAnimated(t‌​rue) 

func documentInteractionControllerViewControllerForPreview(controller: UIDocumentInteractionController) -> UIViewController { 
    return self 
} 

vergessen Sie nicht UIDocumentInteractionControllerDelegate in View-Controller-Klasse

+1

self.documentInteractionController = UIDocumentInteractionController.init (URL: url) self.documentInteractionController .delegate = Selbst self.documentInteractionController .presentPreviewAnimated (true) –

13

Für Xcode hinzufügen 8.1 und Swift 3.0

Speichern Sie die PDF-Datei in einem beliebigen Ordner Ihres xcode. den Dateinamen

if let pdf = Bundle.main.url(forResource: "Filename", withExtension: "pdf", subdirectory: nil, localization: nil) { 
    let req = NSURLRequest(url: pdf) 
    yourWebViewOutletName.loadRequest(req as URLRequest)   
    } 

Gleiche gilt, wenn Sie eine HTML-Datei öffnen wollen ‚Dateiname.pdf‘ ist Angenommen.

2

Sie können auch Quick Look Framework von Apple verwenden.

Es ist sehr flexibel.

Sie können Ihre PDF-Datei mit Zoom-Funktion anzeigen.

Auch Sie haben Unterstützung für alle anderen Arten (wie PNG, JPG, DOCX, TXT, RTF, XLSX, ZIP, MOV, etc) von Dateien und es ist sehr einfach zu bedienen.

Bitte beachten this Antwort, wenn Sie eine detaillierte Beschreibung wollen QuickLook.framework der Verwendung

0
let openLink = NSURL(string : self.OtherContactorProfileVview.Result.CertificateList[index].CertificateFileLink) 

     if #available(iOS 9.0, *) { 
      let svc = SFSafariViewController(url: openLink! as URL) 
      present(svc, animated: true, completion: nil) 
     } else { 
      let port : PDFViewer = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "PDFViewer") as! PDFViewer 
      port.strUrl = self.OtherContactorProfileVview.Result.CertificateList[index].CertificateFileLink 
      self.navigationController?.pushViewController(port, animated: true) 

     } 
+0

Dies wäre keine schlechte Antwort sein, wenn der richtige Kontext hinzugefügt wurde?. Um Sie zu verwenden, müssen Sie eine schnelle Datei PDFViewer erstellen und dem UIWebViewDelegate und natürlich self.OtherContactorProfileVview.Result.CertificateList [index] entsprechen. CertificateFileLink ist der Name Ihrer pdf/file im obigen Beispiel – itsmcgh

4

SWIFT 4+

Wenn hat Datei zu öffnen, aus dem lokalen Cache/Documentdiectory Das hat Dateipfad

Methode: mit UIDocumentInteractionController

class ViewController: UIViewController,UIDocumentInteractionControllerDelegate { 
    let documentInteractionController = UIDocumentInteractionController(url: URL(fileURLWithPath: path)) 
       documentInteractionController.delegate = self 
       documentInteractionController.presentPreview(animated: true) 
    } 
    //MARK: UIDocumentInteractionController delegates 
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController { 
    return self 
} 

Methode 2: Verwendung von WebView

let webview = WKWebView(frame: UIScreen.main.bounds) 
    view.addSubview(webview) 
    webview.navigationDelegate = self 
    webview.load(URLRequest(url: URL(fileURLWithPath: path)))//URL(string: "http://") for web URL 
Verwandte Themen