package Ġandroid . print Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Parcel FileDescriptor Ċ import Ġandroid . util . Log Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġjava . io . File Ċ Ċ internal Ġclass ĠPdf Converter Ġprivate Ġconstructor () Ġ: ĠRunnable Ġ{ ĊĊĠĠĠ Ġprivate Ġvar ĠmContext : ĠContext ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Html String : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Pdf File : ĠFile ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpdf Print Attrs : ĠPrint Attributes ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( field Ġ!= Ġnull ) Ġfield Ġelse Ġdefault Print Attrs ĊĠĠĠ Ġprivate Ġvar Ġm Is Currently Con verting : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm WebView : ĠWebView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm On Complete : ĠOn Complete ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġoutput FileDescriptor : ĠParcel FileDescriptor ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Pdf File !!. createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠParcel FileDescriptor . open ( m Pdf File , ĠParcel FileDescriptor . MODE _ TRUNC ATE Ġor ĠParcel FileDescriptor . MODE _ READ _ WRITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Failed Ġto Ġopen ĠParcel FileDescriptor ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdefault Print Attrs : ĠPrint Attributes ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . KIT K AT ) Ġnull Ġelse ĠPrint Attributes . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Media Size ( Print Attributes . Media Size . ISO _ A 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Resolution ( Print Attributes . Resolution (" RESOL UTION _ ID ", Ġ" RESOL UTION _ ID ", Ġ 6 0 0 , Ġ 6 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Min Margins ( Print Attributes . Margins . NO _ M ARG INS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġm WebView Ġ= ĠWebView ( mContext ) ĊĠĠĠĠĠĠĠ Ġm WebView !!. web View Client Ġ= Ġobject Ġ: ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView , Ġurl : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . KIT K AT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" call Ġrequires ĠAPI Ġlevel Ġ 1 9 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Adapter Ġ= Ġm WebView !!. create Print Document Adapter (" PDF ĠExport ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument Adapter . on Layout ( null , Ġpdf Print Attrs , Ġnull , Ġobject Ġ: ĠPrint Document Adapter . Layout Result Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Layout Finished ( info : ĠPrint Document Info ?, Ġchanged : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Layout Finished ( info , Ġchanged ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument Adapter . on Write ( array Of ( Page Range . ALL _ PAGES ), Ġoutput FileDescriptor , Ġnull , Ġobject Ġ: ĠPrint Document Adapter . Write Result Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Write Finished ( pages : ĠArray < Page Range >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm On Complete ?. on Write Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestroy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Write Failed ( error : ĠCharSequence ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Write Failed ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm On Complete ?. on Write Failed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm WebView !!. load Data With Base URL ("", Ġm Html String , Ġ" text / html ", Ġ" UTF - 8 ", Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġconvert ( context : ĠContext ?, Ġhtml String : ĠString ?, Ġfile : ĠFile ?, ĠonComplete : ĠOn Complete ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" context Ġcan 't Ġbe Ġnull ") ĊĠĠĠĠĠĠĠ Ġif Ġ( html String Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" html String Ġcan 't Ġbe Ġnull ") ĊĠĠĠĠĠĠĠ Ġif Ġ( file Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" file Ġcan 't Ġbe Ġnull ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Is Currently Con verting ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ ĠmContext Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġm Html String Ġ= Ġhtml String ĊĠĠĠĠĠĠĠ Ġm Pdf File Ġ= Ġfile ĊĠĠĠĠĠĠĠ Ġm Is Currently Con verting Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm On Complete Ġ= ĠonComplete ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun On Ui Thread ( run nable : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠHandler ( mContext !!. main Looper ) ĊĠĠĠĠĠĠĠ Ġhandler . post ( run nable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠ ĠmContext Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġm Html String Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġm Pdf File Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġpdf Print Attrs Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġm Is Currently Con verting Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm WebView Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġm On Complete Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Pdf Converter " ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġs Instance : ĠPdf Converter ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate With Print Attributes ( attrs : ĠPrint Attributes ): ĠPdf Converter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠPdf Converter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance . pdf Print Attrs Ġ= Ġattrs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġinstance : ĠPdf Converter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Synchron ized Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Instance Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Instance Ġ= ĠPdf Converter () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs Instance !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinterface ĠOn Complete Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Write Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Write Failed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }