objective c - HTML to PDF conversion on iOS? -
i aware of taking screenshot of uiwebview , converting pdf need generate proper pdf (text text , not screenshot). save2pdf application creates proper pdf. have idea how it?
i created class based on every advice found around. i've been digging lot , hope class offer start trying create multi-page pdf directly out of html source.
you'll find whole code here basic sample code : https://github.com/iclems/ios-htmltopdf
i had same issue , requirements were: - full pdf (real text, no bitmap) - smart multi-pages (compared cutting full height webview every x pixels...)
thus, solution use pretty nice resorts same tools ios uses split pages print.
let me explain, setup uiprintpagerenderer based on web view print formatter (first tip) :
uiprintpagerenderer *render = [[uiprintpagerenderer alloc] init]; [render addprintformatter:webview.viewprintformatter startingatpageatindex:0]; cgrect printablerect = cgrectmake(self.pagemargins.left, self.pagemargins.top, self.pagesize.width - self.pagemargins.left - self.pagemargins.right, self.pagesize.height - self.pagemargins.top - self.pagemargins.bottom); cgrect paperrect = cgrectmake(0, 0, self.pagesize.width, self.pagesize.height); [render setvalue:[nsvalue valuewithcgrect:paperrect] forkey:@"paperrect"]; [render setvalue:[nsvalue valuewithcgrect:printablerect] forkey:@"printablerect"]; nsdata *pdfdata = [render printtopdf]; [pdfdata writetofile: self.pdfpath atomically: yes]; in meantime, have created category on uiprintpagerenderer support:
- (nsdata*) printtopdf { nsmutabledata *pdfdata = [nsmutabledata data]; uigraphicsbeginpdfcontexttodata( pdfdata, cgrectzero, nil ); [self preparefordrawingpages: nsmakerange(0, self.numberofpages)]; cgrect bounds = uigraphicsgetpdfcontextbounds(); ( int = 0 ; < self.numberofpages ; i++ ) { uigraphicsbeginpdfpage(); [self drawpageatindex: inrect: bounds]; } uigraphicsendpdfcontext(); return pdfdata; }
Comments
Post a Comment