Ouvrir le fichier PDF en utilisant swift

Comment puis-je ajouter un fichier PDF pour une application , lorsque vous cliquez sur un bouton pour afficher le fichier et lorsque vous avez terminé, vous revenez à l'écran?

24
demandé sur Jack 2014-11-12 12:48:05

8 réponses

si vous voulez simplement visualiser un fichier PDF, vous pouvez le charger dans UIWebView.

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

Swift 4.1:

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

Si vous souhaitez obtenir plus, un bon cadre est PSPDFKit.

44
répondu Jasper Blues 2018-06-19 11:01:05

pour Xcode 8.1 et Swift 3.0

enregistrez le fichier PDF dans n'importe quel dossier de votre xcode. Supposons que le nom du fichier soit 'Filename.pdf'

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

il en sera de même si vous souhaitez ouvrir un fichier html.

14
répondu Anil shukla 2017-01-05 14:17:56

vous pouvez utiliser Uidocumenttinteractioncontroller pour prévisualiser le fichier dans IOS. Dans le fichier du contrôleur de la vue, ajoutez une propriété de type UIDocumentInteractionController

et mettre en œuvre un simple délégué de la méthode de

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

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

n'oubliez pas d'ajouter UIDocumentInteractionControllerDelegate dans la classe du contrôleur de vue

11
répondu Shan Shafiq 2018-04-13 11:26:07

SWIFT 4+

Si doit ouvrir le fichier depuis le cache local / Documentdiectory qui a un chemin de fichier

Méthode 1: utilisation de UIDocumentInteractionController

class ViewController: UIViewController,UIDocumentInteractionControllerDelegate {
   //let path =  Bundle.main.path(forResource: "Guide", ofType: ".pdf")!
    let dc = UIDocumentInteractionController(url: URL(fileURLWithPath: path))
    dc.delegate = self
    dc.presentPreview(animated: true)
 }
   //MARK: UIDocumentInteractionController delegates
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
     return self//or use return self.navigationController for fetching app navigation bar colour
 }

Méthode 2: utiliser 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
10
répondu Jack 2018-06-13 10:21:21

Apple a ajouté PDFKit cadre iOS 11

Ajouter un uivi à votre contrôleur de vue et en faire une classe à PDFView

enter image description here

import UIKit
import PDFKit

class ViewController: UIViewController {

    @IBOutlet var pdfView: PDFView!

    override func viewDidLoad() {
        super.viewDidLoad()

        if let path = Bundle.main.path(forResource: "sample", ofType: "pdf") {
            if let pdfDocument = PDFDocument(url: URL(fileURLWithPath: path)) {
                pdfView.displayMode = .singlePageContinuous
                pdfView.autoScales = true
                pdfView.displayDirection = .vertical
                pdfView.document = pdfDocument
            }
        }
    }
}

il y a 4 modes d'affichage : singlePage, singlePageContinuous,twoUp,twoUpContinuous .

6
répondu Akila Wasala 2018-05-23 15:00:51

vous pouvez également utiliser le Framework Quick Look D'Apple.

Il est très flexible.

vous pouvez afficher votre fichier PDF avec la fonction zoom.

vous avez aussi le support pour tous les autres types (comme png, jpg, docx, txt, rtf, xlsx, zip, mov, etc) de fichiers et il est très facile à utiliser.

prière de se référer réponse si vous voulez une description détaillée de l'utilisation de QuickLook.framework

2
répondu Prashant Gaikwad 2017-10-03 09:18:53

Vous pouvez utiliser ce code dans Swift 4

  1. Importer PDFKit
  2. copier ce code

    let pdfView = PDFView()        
    pdfView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(pdfView)
    
    pdfView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
    pdfView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
    pdfView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
    pdfView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
    
    guard let path = Bundle.main.url(forResource: "test", withExtension: "pdf") else { return }
    
    if let document = PDFDocument(url: path) {
        pdfView.document = document
    }
    
1
répondu Enamul Haque 2018-06-19 10:25:56
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
répondu Gaurav Gudaliya 2017-10-28 06:47:10