The webview used is Wkwebview, the core part code (Swift 4):
//Create a print renderLet Printpagerenderer:pdfrender =Pdfrender ()//Get render FormatLet Viewformatter:uiviewprintformatter =Webview.viewprintformatter ()//Set Rendering FormatPrintpagerenderer.addprintformatter (Viewformatter, startingatpageat:0)//render HTML as PDFLet Pdfdata:nsdata =printpagerenderer.drawpdf ()//Output FileLet pdffilename:string = "\ (nshomedirectory ())/documents/test.pdf"//SavePdfdata.write (Tofile:pdffilename, atomically:true)//get the location where the file is savedLet URL = url.init (fileurlwithpath:pdffilename)
Implementation of the Pdfreader class
Import Uikitclass Pdfrender:uiprintpagerenderer {//A4 paper Size 595*842Let Pageframe:cgrect = CGRect (x:0.0, y:0.0, width:595, height:842) override Init () {super.init ()//set the size of the printer paperSelf.setvalue (PageFrame, Forkey: "Paperrect") //Set content area sizeSelf.setvalue (PageFrame, Forkey: "PrintableRect") } ///Draw PDF and generate NSDataFunc drawpdf ()-nsdata!{Let Data:nsmutabledata=Nsmutabledata ()//Be careful! The second parameter, if set to cgrect.zero,pdf size, will be the default 612*792uigraphicsbeginpdfcontexttodata (data, pageframe, nil) self.prepare (ForDrawingPages:NSRange.init (Locati On:0, Length:self.numberOfPages)) Let Bounds:cgrect=PageFrame forIinch0..<self.numberofpages{uigraphicsbeginpdfpage () self.drawpage (at:i,inch: Bounds)} Uigraphicsendpdfcontext ()returnData}}
Ficow Original, reproduced please specify the source:http://www.cnblogs.com/ficow/p/7859462.html
IOS prints HTML in Wkwebview as PDF