package Ġandroid . print Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Cancellation Signal Ċ import Ġandroid . os . Parcel FileDescriptor Ċ import Ġandroid . util . Log Ċ import Ġandroid . webkit . Web Resource Request Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . TextView Ċ import Ġcom . stem aker . ar be its ber icht . data . Report Data Ċ import Ġcom . stem aker . ar be its ber icht . helpers . Html Report Ċ import Ġcom . stem aker . ar be its ber icht . output . Report Generator Ċ import Ġjava . io . File Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" Pdf Print " Ċ Ċ class ĠPdf Generator ( activity : ĠActivity , Ġreport : ĠReport Data , ĠprogressBar : ĠProgress Bar ?, ĠtextView : ĠTextView ?) Ġ: ĊĠĠĠ ĠReport Generator ( activity , Ġreport , ĠprogressBar , ĠtextView , Ġtrue ){ ĊĊĠĠĠ Ġval Ġjob Name Ġ= Ġ" pdf _ print _" Ġ+ Ġreport . id . value ĊĠĠĠ Ġvar ĠwebView : ĠWebView ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġhtml : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġval Ġattributes Ġ= ĠPrint Attributes . Builder () ĊĠĠĠĠĠĠĠ Ġ. set Media Size ( Print Attributes . Media Size . ISO _ A 4 ) ĊĠĠĠĠĠĠĠ Ġ. set Resolution ( Print Attributes . Resolution (" pdf ", Ġ" pdf ", Ġ 3 0 0 , Ġ 3 0 0 )) ĊĠĠĠĠĠĠĠ Ġ. set Min Margins ( Print Attributes . Margins . NO _ M ARG INS ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġoverride Ġfun Ġcreate Doc ( files : ĠArray < File >, Ġdone : Ġ( success : Boolean ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGenerate Ġa Ġweb view Ġincluding Ġsignatures Ġand Ġthen Ġprint Ġit Ġto Ġpdf ĊĠĠĠĠĠĠĠ Ġhtml Ġ= ĠHtml Report . encode Report ( report , Ġactivity . files Dir , Ġtrue ) ĊĠĠĠĠĠĠĠ ĠwebView Ġ= ĠWebView ( activity ) ĊĊĠĠĠĠĠĠĠ ĠwebView ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . web View Client Ġ= Ġobject Ġ: ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView , Ġrequest : ĠWeb Resource Request ) Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView , Ġurl : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Page Finished ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprint Adapter Ġ= Ġit . create Print Document Adapter ( job Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint Adapter . on Layout ( null , Ġattributes , Ġnull , Ġobject Ġ: ĠPrint Document Adapter . Layout Result Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Layout Finished ( info : ĠPrint Document Info , Ġchanged : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Layout Finished ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint Adapter . on Write ( array Of ( Page Range . ALL _ PAGES ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠParcel FileDescriptor . open ( files [ 0 ], ĠParcel FileDescriptor . MODE _ READ _ WRITE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ancellation Signal (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠPrint Document Adapter . Write Result Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Write Finished ( pages : ĠArray < Page Range >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Write Finished ( pages ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . load Data With Base URL ("", Ġhtml ? :" Internal Ġerror Ġoccured ", Ġ" text / html ", Ġ" UTF - 8 ", Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġdone ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġfile Post Fix Ext : ĠArray < Pair < String , ĠString >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠarrayOf ( Pair ("", Ġ" pdf ")) ĊĊĠĠĠ Ġoverride Ġfun Ġget Hash ( files : ĠArray < File >): ĠString ? Ġ= Ġnull Ċ } Ċ