Swift: соответствие политике ATS при отображении PDF из файловой системы - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь сгенерировать pdf из файла HTML, а затем отображать этот сгенерированный pdf в веб-представлении. Однако, моя реализация бросает проблему соответствия политике ATS, которая действительно озадачивает меня. Моя реализация как таковая:

func export() {
    let filePath = Bundle.main.path(forResource: "index", ofType: "html")

    do {
        let htmlContent = try String(contentsOfFile: filePath!)

        if let pdfFileName = exportHTMLContentToPDF(HTMLContent: htmlContent) {
            let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
            let url = URL(fileURLWithPath: documentsPath, isDirectory: true).appendingPathComponent(pdfFileName).appendingPathExtension("pdf")

            let vc = WebViewController()
            vc.url = url
            vc.hidesBottomBarWhenPushed = true
            navigationController?.pushViewController(vc, animated: true)
        }

    } catch let error {
        print(error.localizedDescription)
    }

}

func exportHTMLContentToPDF(HTMLContent: String) -> String? {
    let printPageRenderer = CustomPrintPageRenderer()

    let printFormatter = UIMarkupTextPrintFormatter(markupText: HTMLContent)
    printPageRenderer.addPrintFormatter(printFormatter, startingAtPageAt: 0)

    if let pdfData = drawPDFUsingPrintPageRenderer(printPageRenderer: printPageRenderer) {
        let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
        let pdfFilename = "\(documentsPath)/Exports.pdf"
        pdfData.write(toFile: pdfFilename, atomically: true)
        print(pdfFilename)
        return pdfFilename
    }

    return nil
}

//At WebViewController's viewDidLoad
var url: URL?
override func viewDidLoad() {
    super.viewDidLoad()

    if let url = url {
        let request = URLRequest(url: url)
        webView.load(request)
    }
}

Здесь выдается мое сообщение об ошибке:

App Transport Security заблокировал открытый текстовый HTTP-ресурс (http://)) загрузить, так как это небезопасно. Временные исключения могут быть настроены через файл Info.plist вашего приложения. 2018-09-09 14: 17: 28.909834 + 0800 Приложение [1776: 93209] Не удается запустить загрузку задачи <038CF619-0F68-4196-8B76-4E70DFD678A8>. <0>, так как он не соответствует к политике ATS 2018-09-09 14: 17: 28.910996 + 0800 App [1776: 93173] NSURLConnection завершено с ошибкой - код -1022 /Users/MyName/Library/Developer/CoreSimulator/Devices/29504265-F97B-4145-AA09-7E8AD66C5F99/data/Containers/Data/Application/78C96743-8EFC-4D53-8ABA-D384321D2156/Documents/Exports.pdf 2018-09-09 14: 17: 29.078694 + 0800 Приложение [1776: 93160] Задача <4F930735-1374-4DF3-A72B-F698A2BEA8BB>. <0> Ошибка загрузки HTTP (ошибка код: -999 [1:89])

Любой совет здесь, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...