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?
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.
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.
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(true)
func documentInteractionControllerViewControllerForPreview(controller: UIDocumentInteractionController) -> UIViewController {
return self
}
n'oubliez pas d'ajouter UIDocumentInteractionControllerDelegate
dans la classe du contrôleur de vue
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
Apple a ajouté PDFKit cadre iOS 11
Ajouter un uivi à votre contrôleur de vue et en faire une classe à 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 é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
Vous pouvez utiliser ce code dans Swift 4
- Importer PDFKit
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 }
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)
}