如何在PDFKit中显示从Internet下载的pdf?

问题描述 投票:0回答:1

我已经从Internet成功下载了pdf文件,并将其保存在文档目录中。网址如下下载文件

file:///Users/heetshah/Library/Developer/CoreSimulator/Devices/4BF83AAF-A910-46EB-AE76-91BC6BEED033/data/Containers/Data/Application/B4532805-2842-431F-B16C-C5E448C8366F/Documents/TPAFForm.pdf

我正尝试将其显示为如下所示的PDFKit。

let path = URL(fileURLWithPath: pdfUrl!)
if let document = PDFDocument(url: path) {
pdfView.document = document
pdfView.displayMode = .singlePageContinuous
pdfView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
pdfView.displaysAsBook = true
pdfView.displayDirection = .vertical
pdfView.autoScales = true
pdfView.maxScaleFactor = 4.0
pdfView.minScaleFactor = pdfView.scaleFactorForSizeToFit
}

我没有收到任何错误

我经历了很多堆栈溢出帖子,它显示的解决方案与上述相同,但在我的情况下不起作用。我也尝试了以下解决方案,但不起作用

if let path = Bundle.main.path(forResource: pdfUrl, ofType: "pdf") {
            let url = URL(fileURLWithPath: path)
            if let pdfDocument = PDFDocument(url: url) {..
ios swift pdfkit
1个回答
0
投票

由于您没有显示足够的代码来调试问题,所以这里是complete代码,可以按照您的描述进行操作,并且you可以通过将代码与我的代码进行比较来调试问题:

import UIKit
import PDFKit

class ViewController: UIViewController {

    let pdfurl = URL(string:"https://www.apeth.com/rez/release.pdf")!
    let pdffileurl : URL = {
        let fm = FileManager.default
        let docsurl = try! fm.url(
            for: .documentDirectory, in: .userDomainMask, 
            appropriateFor: nil, create: true)
        return docsurl.appendingPathComponent("mypdf.pdf")
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        let sess = URLSession.shared
        sess.downloadTask(with: self.pdfurl) { (url, resp, err) in
            if let url = url {
                let fm = FileManager.default
                try? fm.removeItem(at: self.pdffileurl)
                try? fm.moveItem(at: url, to: self.pdffileurl)
                DispatchQueue.main.async {
                    self.displayPDF()
                }
            }
        }.resume()
    }

    func displayPDF() {
        let pdfview = PDFView(frame:self.view.bounds)
        pdfview.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        pdfview.autoScales = true
        self.view.addSubview(pdfview)
        let doc = PDFDocument(url: self.pdffileurl)
        pdfview.document = doc
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.