Comment puis-je ajouter un fichier PDF pour une application, où vous cliquez sur un bouton pour afficher le fichier & lorsque vous avez terminé, vous revenez à l'écran où vous vous trouviez?
Si vous souhaitez simplement afficher un fichier PDF, vous pouvez le charger dans un 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 .
Swift 4+
Si doit ouvrir le fichier à partir du cache local/Documentdiectory qui a le chemin du fichier
Méthode 1: utiliser 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: utilisation de 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
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)
}
Idem s’applique si vous voulez ouvrir n’importe quel fichier html.
vous pouvez utiliser UIDocumentInteractionController pour prévisualiser un fichier dans IOS. Dans le fichier du contrôleur de vue, ajoutez une propriété de type UIDocumentInteractionController
et implémenter une méthode de délégué simple
self.documentInteractionController = UIDocumentInteractionController.init(URL: url)
self.documentInteractionController?.delegate = self
self.documentInteractionController?.presentPreviewAnimated(true)
func documentInteractionControllerViewControllerForPreview(controller: UIDocumentInteractionController) -> UIViewController {
return self
}
n'oubliez pas d'ajouter UIDocumentInteractionControllerDelegate
dans la classe du contrôleur de vue
Apple a ajouté PDFKit framework in iOS 11
Ajoutez un UIView à votre contrôleur de vue et définissez sa classe en PDFView
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
.
Vous pouvez utiliser ce code dans Swift 4
Copiez 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
}
Vous pouvez également utiliser Quick Look Framework d’Apple.
C'est très flexible.
Vous pouvez afficher votre fichier PDF avec la fonction de zoom.
Aussi, vous avez un 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.
Veuillez vous référer à this answer si vous souhaitez une description détaillée de l’utilisation de QuickLook.framework
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)
}