I'm having problem creating PDF from UIWebView.
let render = UIPrintPageRenderer();
/* 1. pdf from webView */
render.addPrintFormatter(webView.viewPrintFormatter(), startingAtPageAtIndex: 0);
// 2. Assign paperRect and printableRect
let page = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4, 72 dpi */
let printable = CGRectInset(page, 0, 0)
render.setValue(NSValue(CGRect: page), forKey: "paperRect")
render.setValue(NSValue(CGRect: printable), forKey: "printableRect")
// 3. Create PDF context and draw
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil)
for i in 1...render.numberOfPages() {
UIGraphicsBeginPDFPage();
let bounds = UIGraphicsGetPDFContextBounds()
render.drawPageAtIndex(i - 1, inRect: bounds)
}
UIGraphicsEndPDFContext();
// 4. Save PDF file
print("open \(path)");
pdfData.writeToFile(path, atomically: true);
Everything work fine, but if I use background image inside the HTML, it will disappear. Anyone know what's wrong?
First of all you need to create your html code :
than you need to instantiate your web view using the following :
aftr that you need to make your ViewController class implement
UIWebViewDelegate
and implement the methodfunc webViewDidFinishLoad(_ webView: UIWebView)
and finally add the following code insidewebViewDidFinishLoad
methodSo to resume the logic : To generate a pdf from a webView you need to prepare your html code , create the WebView and inject the html code inside the webView and in webView didFinishLoading print the html content inside the pdf using the same width and height of the webView.