-(void)createPDFfromUIView:(UIView*)aView saveToDocumentsWithFileName:(NSString*)aFilename
{
// Creates a mutable data object for updating with binary data, lik
Swift 2.0 solution, how to save pdf from webview to NSData:
func webViewDidFinishLoad(webView: UIWebView) {
let pdfData = createPdfFile(webView.viewPrintFormatter())
pdfData.writeToFile("/path/to/file", atomically: true)
}
func createPdfFile(printFormatter: UIViewPrintFormatter) -> NSData {
let renderer = UIPrintPageRenderer()
renderer.addPrintFormatter(printFormatter, startingAtPageAtIndex: 0);
let paperSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height)
let printableRect = CGRectMake(0, 0, paperSize.width, paperSize.height)
let paperRect = CGRectMake(0, 0, paperSize.width, paperSize.height);
renderer.setValue(NSValue(CGRect: paperRect), forKey: "paperRect")
renderer.setValue(NSValue(CGRect: printableRect), forKey: "printableRect")
return renderer.printToPDF()
}
You also need to add UIWebViewDelegate to your ViewController and extension for UIPrintPageRenderer.
extension UIPrintPageRenderer {
func printToPDF() -> NSData {
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, self.paperRect, nil)
self.prepareForDrawingPages(NSMakeRange(0, self.numberOfPages()))
let bounds = UIGraphicsGetPDFContextBounds()
for i in 0..