swift - 从文件系统显示 PDF 时符合 ATS 政策
问题描述
我正在尝试从 HTML 文件生成 pdf,然后在 webView 上显示生成的 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 App[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 App[1776:93160] 任务 <4F930735-1374-4DF3-A72B-F698A2BEA8BB>。 0> HTTP 加载失败(错误代码:-999 [1:89])
我可以尝试什么来解决这个问题?
解决方案
推荐阅读
- r - 如何通过机器学习产生具有各种输入的结果?
- node.js - 子子路线在角度 6 中不起作用
- ruby-on-rails - 哈希中时间戳的 Rspec 问题
- javascript - Jquery根据输入值显示或隐藏元素?
- r - 基于R中的列标题合并两个表
- php - 在属性变化 Woocommerce 中获取颜色代码
- ios - 单元格选择后 UITableView 向上滚动
- python - 如何获取数据框中所有列的数据类型?
- react-native - 在反应导航中单击汉堡图标时无法打开抽屉
- java - 修复 Apache-Camel 的 Socket 处于“CLOSE_WAIT”状态的问题