我正在尝试为我的应用中的报告创建和保存pdf。我搜索并发现this -- Create and store PDF document programmatically using Swift for iOS非常有用,它从html创建pdf,这很棒,但它不适用于<img>
。我希望徽标出现在我的报告/ pdf中。
当我在浏览器上尝试时它显示了工作和图像,但在我检查文件后图像没有保存到pdf中。我已经搜索并尝试执行base64编码的图像,但也失败了。
或者,有没有更好的方法来设计和创建美丽的pdf报告?
提前致谢。
答案 0 :(得分:2)
我已经有一段时间了,终于有了一些突破
由于您正在加载html字符串,因此无法处理图片,您必须在网络视图中加载html,然后将UIViewPrintFormatter
格式设为_webVeiw.viewPrintFormatter()
另外,请不要忘记为baseURL
设置UIWebView
,否则无法加载本地图片。
请查看我的要点以获得更多帮助。
Generate PDF from html iOS swift
创建分页符时我也遇到了麻烦,因此我创建了多个html以适应这一点。
希望它有所帮助,如果您需要更多信息,请告诉我们。)
答案 1 :(得分:0)
我有同样的问题,试试这段代码:
let render = UIPrintPageRenderer()
render.addPrintFormatter(webView.viewPrintFormatter(), startingAtPageAt: 0)
let paperRect = CGRect(x: 0, y: 0, width: 595.2, height: 841.8)
let printableRect = paperRect.insetBy(dx: 10, dy: 10)
render.setValue(NSValue(cgRect: paperRect), forKey: "paperRect")
render.setValue(NSValue(cgRect: printableRect), forKey: "printableRect")
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, CGRect.zero, nil)
for i in 0 ..< render.numberOfPages {
UIGraphicsBeginPDFPage()
let bounds = UIGraphicsGetPDFContextBounds()
render.drawPage(at: i, in: bounds)
}
UIGraphicsEndPDFContext()
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let filePath = "\(documentsPath)/name.pdf"
pdfData.write(toFile: filePath, atomically: true)
let url = URL(fileURLWithPath: filePath)
webView.loadRequest(urlRequest)