ios – 如何在Swift中的UIWebView中加载本地PDF

ios – 如何在Swift中的UIWebView中加载本地PDF,第1张

概述所以我目前正试图在UIWebview中显示一个本地的PDF,这是我使用的代码: @IBOutlet weak var webView:UIWebView!override func viewDidLoad() { super.viewDidLoad() var pdfLoc = NSURL(fileURLWithPath:NSBundle.mainBundle().pathFo 所以我目前正试图在UIWebvIEw中显示一个本地的pdf,这是我使用的代码:
@IBOutlet weak var webVIEw:UIWebVIEw!overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()    var pdfLoc = NSURL(fileURLWithPath:NSBundle.mainBundle().pathForResource("Sample",ofType:"pdf")!) var request = NSURLRequest(URL: pdfLoc);self.webVIEw.loadRequest(request);}

代码将成功构建,但是当我运行该应用程序时,它会崩溃与错误:
线程1:EXC_BAD_INSTRUCTION(代码= EXC-I386_INVOP,子代码= 0x0)

我已经找到了一些关于如何做到这一点的教程,但是他们都是非常过时的,或者是Objective-C.

解决方法 干得好:
if let pdf = NSBundle.mainBundle().URLForResource("mypdf",withExtension: "pdf",subdirectory: nil,localization: nil)  {            let req = NSURLRequest(URL: pdf)            let webVIEw = UIWebVIEw(frame: CGRectMake(20,20,self.vIEw.frame.size.wIDth-40,self.vIEw.frame.size.height-40))            webVIEw.loadRequest(req)            self.vIEw.addSubvIEw(webVIEw)        }

编辑

替代方法是通过NSData:

if let pdfURL = NSBundle.mainBundle().URLForResource("mypdf",localization: nil),data = NSData(contentsOfURL: pdfURL),baseURL = pdfURL.URLByDeletingLastPathComponent  {    let webVIEw = UIWebVIEw(frame: CGRectMake(20,self.vIEw.frame.size.height-40))    webVIEw.loadData(data,MIMEType: "application/pdf",textEnCodingname:"",baseURL: baseURL)    self.vIEw.addSubvIEw(webVIEw)}

Apple建议您不要在本地html文件中使用.loadRequest,而不能将其明确地扩展到其他数据类型.所以我提供了上面的NSData路线.如果你想指定一个textEnCodingname,它可以是“utf-8”,“utf-16”等

编辑:Swift 3

这是一个Swift 3版本的代码,正如苹果建议的,WKWebVIEw代替UIWebVIEw.

import UIKitimport WebKitclass VIEwController: UIVIEwController {    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        // Do any additional setup after loading the vIEw,typically from a nib.        if let pdfURL = Bundle.main.url(forResource: "mypdf",localization: nil)  {            do {                let data = try Data(contentsOf: pdfURL)                let webVIEw = WKWebVIEw(frame: CGRect(x:20,y:20,wIDth:vIEw.frame.size.wIDth-40,height:vIEw.frame.size.height-40))                webVIEw.load(data,mimeType: "application/pdf",characterEnCodingname:"",baseURL: pdfURL.deletingLastPathComponent())               vIEw.addSubvIEw(webVIEw)            }            catch {                // catch errors here            }        }    }}
总结

以上是内存溢出为你收集整理的ios – 如何在Swift中的UIWebView中加载本地PDF全部内容,希望文章能够帮你解决ios – 如何在Swift中的UIWebView中加载本地PDF所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1111797.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存