package Ġcom . utt amp anch as ara . pdf generator Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . print . Pdf Print Ċ import Ġandroid . print . Print Attributes Ċ import Ġandroid . print . Print Document Adapter Ċ import Ġandroid . print . Print Manager Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġorg . jetbrains . annotations . NotNull Ċ import Ġorg . jetbrains . annotations . Nullable Ċ import Ġjava . io . File ĊĊ Ċ /** Ċ Ġ* Ġ@ since Ġ 1 1 / 3 0 / 2 0 1 8 Ċ Ġ*/ Ċ open Ġclass ĠCreate Pdf ( private Ġval ĠmContext : ĠContext ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar ĠMime Type Ġ= Ġ" text / html " ĊĠĠĠ Ġprivate Ġvar ĠEN CODING Ġ= Ġ" utf - 8 " ĊĊĠĠĠ Ġprivate Ġvar Ġm Base URL : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Pdf Name : ĠString ? Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġm Callbacks : ĠPdf Callback Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Content : ĠString ? Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġdo Print : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġfile Ġwill Ġbe Ġsaved Ġas Ġ: Ġpdf Name ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ**/ ĊĠĠĠ Ġfun Ġset Pdf Name (@ NotNull Ġpdf Name : ĠString ): ĠCreate Pdf Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Pdf Name Ġ= Ġ"$ pdf Name . pdf " ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġif Ġcontent Ġgoing Ġto Ġbe Ġload Ġfrom Ġassets Ġor Ġfrom Ġother Ġsource ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Content BaseUrl (@ Nullable ĠbaseUrl : ĠString ?): ĠCreate Pdf Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Base URL Ġ= ĠbaseUrl ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Content (@ NotNull Ġcontent : ĠString ?): ĠCreate Pdf Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Content Ġ= Ġcontent ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Print Dialog ( do Print : ĠBoolean ): ĠCreate Pdf Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . do Print Ġ= Ġdo Print ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Callback Listener (@ NotNull Ġcallbacks : ĠPdf Callback Listener ): ĠCreate Pdf Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Callbacks Ġ= Ġcallbacks ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Set JavaScript Enabled ") ĊĠĠĠ Ġfun Ġcreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠwebView : ĠWebView ? Ġ= ĠWebView ( mContext ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m Content ?. isNotEmpty () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView ?. load Data With Base URL ( m Base URL , Ġm Content , ĠMime Type , ĠEN CODING , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView ?. settings ?. java Script Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView ?. clear Cache ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView ?. web View Client Ġ= Ġobject Ġ: ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView ?, Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġa Ġprint Ġadapter Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprint Adapter Ġ= ĠwebView ?. create Print Document Adapter ( m Pdf Name ) !! ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( do Print ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġa ĠPrint Manager Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprint Manager Ġ= ĠmContext . getSystem Service ( Context . PRINT _ SERVICE ) Ġas ĠPrint Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġprint Ġjob Ġwith Ġname Ġand Ġadapter Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint Manager . print ( m Pdf Name !! , Ġprint Adapter , ĠPrint Attributes . Builder (). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Pdf ( print Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠwebView Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Callbacks ?. on Failure (" Empty Ġor Ġnull Ġcontent ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Pdf ( print Adapter : ĠPrint Document Adapter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// save Ġpdf ĊĠĠĠĠĠĠĠ Ġval Ġprint Attributes Ġ= ĠPrint Attributes . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Media Size ( Print Attributes . Media Size . ISO _ A 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Resolution ( Print Attributes . Resolution (" pdf ", Ġ" pdf ", Ġ 6 0 0 , Ġ 6 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Min Margins ( Print Attributes . Margins . NO _ M ARG INS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠPdf Print ( print Attributes ). print ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint Adapter , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( mContext . cacheDir ?. absolute Path ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Pdf Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠPdf Print . Callback Print Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsuccess ( path : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Callbacks ?. on Success ( path !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error Msg : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Callbacks ?. on Failure ( error Msg !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠPdf Callback Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Failure ( error Msg : ĠString ) ĊĠĠĠĠĠĠĠ Ġfun ĠonSuccess ( filePath : ĠString ) ĊĠĠĠ Ġ} Ċ }