ios - PDF 已生成,但文件未在 swift ios 的 webView 中检索

标签 ios swift pdf webview

我正在生成 UIView 的 PDF,并在 myforms 中存储一个名称,正在生成 PFD,控制台打印 PDF 可用,但它只显示白色VC 中的屏幕

这就是我正在做的事情:

我有这个代码来生成 PDF

   @IBAction func createAct(_ sender: Any) {
    print("Creat PDF")
    self.createPdfFromView(mainView: mainView, saveToDocumentsWithFileName: "myforms")
}


func createPdfFromView(mainView: UIView, saveToDocumentsWithFileName fileName: String)
{
    let pdfData = NSMutableData()
    UIGraphicsBeginPDFContextToData(pdfData, mainView.bounds, nil)
    UIGraphicsBeginPDFPage()

    guard let pdfContext = UIGraphicsGetCurrentContext() else { return }

    mainView.layer.render(in: pdfContext)
    UIGraphicsEndPDFContext()

    if let documentDirectories = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first {
        let documentsFileName = documentDirectories + "/" + fileName
        debugPrint(documentsFileName)
        pdfData.write(toFile: documentsFileName, atomically: true)
    }
}

然后我在控制台中有这个:

创建 PDF

“/Users/jawaidahmed/Library/Developer/CoreSimulator/Devices/3F95BE09-0F25-427C-9ED9-4BDB16DC3600/data/Containers/Data/Application/1EC22FBC-79E7-4AC5-BB7D-13783CC34516/Documents/我的表格”

我正在使用这个PDFViewController来检索 WebView 中的文件

override func viewDidLoad() {
super.viewDidLoad()

       let check = "myforms"

    var pdfURL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)).last! as URL

    print("check final = \(pdfURL)")

    pdfURL = pdfURL.appendingPathComponent(check) as URL



    if let pdfBundleURL = Bundle.main.url(forResource: "myforms", withExtension: nil, subdirectory: nil)  {




        do {

            let data = try Data(contentsOf: pdfBundleURL)



            //Lastly, write your file to the disk.

            try data.write(to: pdfURL, options: .atomicWrite)



        }

        catch {

            // catch errors here

        }

    }



    do{

        let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String

        let url = URL(fileURLWithPath: path)

        var filePath = url.appendingPathComponent(check).path

        let fileManager1 = FileManager.default

        if fileManager1.fileExists(atPath: filePath) {

            print("FILE AVAILABLE in VC")

            filePath = "file://\(filePath)"

            let fileUrlkk = Foundation.URL(string: filePath)

            let data = try Data(contentsOf: fileUrlkk!)

            self.webView.load(data, mimeType: filePath, textEncodingName:"utf-8", baseURL: pdfURL.deletingLastPathComponent())

        } else {

            print("FILE NOT AVAILABLE in VC")

        }

    }

    catch let error as NSError {

        print("An error took place: \(error)")

    }

}

我在控制台中收到此消息: VC 中可用的文件

这意味着文件已生成且可用,但仅显示空的 VC 白色背景

最佳答案

self.webView.load(data, mimeType: "application/pdf", textEncodingName:"utf-8", baseURL: pdfURL.deletingLastPathComponent())

替换textEncodingName:“”

文本编码名称:“utf-8”

检查一下

关于ios - PDF 已生成,但文件未在 swift ios 的 webView 中检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48378787/

相关文章:

android - 发行为Android构建mupdf库的问题

flutter - 我想在我的 flutter 应用程序上正确加载其他屏幕

ios - 从应用内购买中获取付款信息

ios - UIStoryboardSegue sourceViewController 在 destinationViewController 之上

ios - 导出的慢动作视频有音频问题

ios - self.navigationController 使用 Storyboard到 Storyboard导航始终返回 nil

swift - 为什么我的 avfoundation swift3 不起作用

ios - Facebook 被拒绝 - iOS 模拟器构建配置不正确

Swift:无法将类型 'NSManagedObject_' 的值转换为 'dataModel.Entity'

java - 如何在 java servlet 中将图像转换为 pdf?