从文档 URL 加载 PDF
Posted
技术标签:
【中文标题】从文档 URL 加载 PDF【英文标题】:Loading PDF From Documents URL 【发布时间】:2016-02-11 12:10:25 【问题描述】:我是 ios 开发的新手,所以对于我提出的所有新问题,我深表歉意。在 Swift 中将 PDF 加载到我的 WebView 时,我似乎遇到了问题。 打印出 Documents 目录中的所有文件,结果是:
file:///Users/adriandavidsmith/Library/Developer/CoreSimulator/Devices/B537EBE4-14AE-439A-B84B-31342E233367/data/Containers/Data/Application/E791BF20-CC53-4FBB-B34A-F73CED74EB5D /Documents/ST_Business%20Times_07022016.pdf
但是,当我尝试将该文件加载到 WebView 中时,没有显示任何内容。好像找不到文件一样。
if let pdf = NSBundle.mainBundle().URLForResource("ST_Business%20Times_07022016", withExtension: "pdf", subdirectory: "Documents", localization: nil)
let req = NSURLRequest(URL: pdf)
webView.loadRequest(req)
我确定我错过了一些非常小的和令人沮丧的东西!
提前致谢!
【问题讨论】:
文档存放在 Application Documents 目录中,而不是存放在 Application bundle 中。 ***.com/questions/14937846/… 【参考方案1】:兼容 Swift 3
var pdfURL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)).last! as URL
pdfURL = pdfURL.appendingPathComponent( "example.pdf") as URL
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)
【讨论】:
谢谢。只是。谢谢你。我爱你。【参考方案2】:您是从捆绑包中获取它,而不是从文档目录中获取它。
试试这个....
var pdf = (NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)).last as? NSURL
pdf = pdf?.URLByAppendingPathComponent( "ST_Business%20Times_07022016.pdf")
let req = NSURLRequest(URL: pdf)
webView.loadRequest(req)
【讨论】:
【参考方案3】:E791BF20-CC53-4FBB-B34A-F73CED74EB5D 是应用程序文件夹,其中包含您要查看的 pdf 文件的 Documents 文件夹。
这将给出 Documents 文件夹的路径。
let fileManager = NSFileManager.defaultManager()
let documentsUrl = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL
print(documentsUrl)
您需要更改代码
let pdf = documentsUrl + "/<your pdf file name>"
let req = NSURLRequest(URL: pdf)
webView.loadRequest(req)
希望这对你有用。
【讨论】:
【参考方案4】:请在加载文件之前检查您的路径是否存在有效文件。
let webView : UIWebView!
webView = UIWebView()
webView.frame = self.view.bounds
self.view.addSubview(webView)
let PDF_FILE_PATH = NSBundle.mainBundle().pathForResource("ST_Business%20Times_07022016", ofType: "pdf")
let checkValidation = NSFileManager.defaultManager()
if (checkValidation.fileExistsAtPath(PDF_FILE_PATH!))
print("FILE AVAILABLE");
let req = NSURLRequest(URL: NSURL(string: PDF_FILE_PATH!)!)
webView.loadRequest(req)
else
print("FILE NOT AVAILABLE");
【讨论】:
以上是关于从文档 URL 加载 PDF的主要内容,如果未能解决你的问题,请参考以下文章
从远程 url 加载 pdf 以作为 Mandrill 附件发送
在 WKWebView swift 中下载文档并加载图像(png、jpeg)、pdf、doc 等