Я пытаюсь сгенерировать 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])
Любой совет здесь, пожалуйста?