package Ġse . score board . service Ċ Ċ import Ġcom . google . zx ing . Barcode Format Ċ import Ġcom . google . zx ing . client . j 2 se . Matrix To Image Writer Ċ import Ġcom . google . zx ing . qrcode . QR Code Writer Ċ import Ġorg . apache . pdf box . cos . COS Dictionary Ċ import Ġorg . apache . pdf box . cos . COS Name Ċ import Ġorg . apache . pdf box . pd model . P DD ocument Ċ import Ġorg . apache . pdf box . pd model . PD Page Ċ import Ġorg . apache . pdf box . pd model . PD Page Content Stream Ċ import Ġorg . apache . pdf box . pd model . font . PD Type 1 Font Ċ import Ġorg . apache . pdf box . pd model . graphics . image . Loss less Factory Ċ import Ġorg . apache . pdf box . pd model . graphics . image . PD Image X Object Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . beans . factory . annotation . Value Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjava . awt . Color Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjavax . image io . Image IO ĊĊ Ċ @ Service Ċ class ĠPdf Service Ġ@ Autowired Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ@ Value ("\ ${ site . url . web }") Ġval Ġweb Url : ĠString ) Ġ{ ĊĊĠĠĠ Ġval Ġqr Code Writer Ġ= ĠQR Code Writer () ĊĊĠĠĠ Ġfun Ġcreate Pdf ( codes : ĠList < String >): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠP DD ocument () ĊĠĠĠĠĠĠĠ Ġval Ġlogo Object Ġ= Ġget Logo ( document ) ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġpage : PD Page Ġ= ĠPD Page () ĊĠĠĠĠĠĠĠ Ġvar Ġoffset Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġdocument . add Page ( page ) ĊĠĠĠĠĠĠĠ Ġcodes . forEach Ġ{ Ġcode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( count Ġ== Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= ĠPD Page () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . add Page ( page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġadd Header ( document , Ġoffset , Ġlogo Object , Ġpage , Ġcode ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠByteArrayOutputStream (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . save ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit . toByteArray () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Pdf ( pdf Template : ĠByteArray , Ġcodes : ĠList < String >): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠP DD ocument . load ( pdf Template ) ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġdocument . getPage ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġpage Dict Ġ= Ġpage . cos Object ĊĠĠĠĠĠĠĠ Ġdocument . remove Page ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlogo Object Ġ= Ġget Logo ( document ) ĊĊĠĠĠĠĠĠĠ Ġcodes . forEach Ġ{ Ġcode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Page Dict Ġ= ĠCOS Dictionary ( page Dict ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Page Dict . removeItem ( COS Name . AN NOT S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Page Ġ= ĠPD Page ( new Page Dict ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Header ( document , Ġ 0 f , Ġlogo Object , Ġnew Page , Ġcode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . add Page ( new Page ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠByteArrayOutputStream (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . save ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit . toByteArray () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Logo ( document : ĠP DD ocument ): ĠPD Image X Object Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlogo : ĠBufferedImage ? ĊĠĠĠĠĠĠĠ ĠPdf Service :: class . java . getResource AsStream ("/ logo . png "). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogo Ġ= ĠImage IO . read ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠLoss less Factory . createFrom Image ( document , Ġlogo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Header ( document : ĠP DD ocument , Ġoffset : ĠFloat , Ġlogo : ĠPD Image X Object , Ġpage : ĠPD Page , Ġcode : ĠString ) Ġ: ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcs Ġ= ĠPD Page Content Stream ( document , Ġpage , ĠPD Page Content Stream . Append Mode . PRE PEND , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġouter M Ġ= Ġ 2 0 f ĊĠĠĠĠĠĠĠ Ġval Ġqr M Ġ= Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= Ġ 5 f ĊĠĠĠĠĠĠĠ Ġval Ġbox W Ġ= Ġpage . media Box . width Ġ- Ġouter M Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġbox H Ġ= Ġ 8 0 ĊĠĠĠĠĠĠĠ Ġval Ġbox X Ġ= Ġouter M ĊĠĠĠĠĠĠĠ Ġval Ġbox Y Ġ= Ġpage . media Box . height Ġ- Ġbox H Ġ- Ġouter M Ġ- Ġoffset ĊĊĠĠĠĠĠĠĠ Ġval Ġqr Size Ġ= Ġbox H Ġ- Ġqr M Ġ* Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġlogo H Ġ= Ġbox H Ġ- Ġm Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġlogo W Ġ= Ġlogo H Ġ* Ġlogo . width Ġ/ Ġlogo . height ĊĊĠĠĠĠĠĠĠ Ġcs . set LineWidth ( 1 f ) ĊĠĠĠĠĠĠĠ Ġcs . set St ro king Color ( Color . black ) ĊĠĠĠĠĠĠĠ Ġcs . set Non St ro king Color ( Color . black ) ĊĠĠĠĠĠĠĠ Ġcs . moveTo ( box X Ġ, box Y ) ĊĠĠĠĠĠĠĠ Ġcs . lineTo ( box X Ġ+ Ġbox W , Ġbox Y ) ĊĠĠĠĠĠĠĠ Ġcs . lineTo ( box X Ġ+ Ġbox W , Ġbox Y Ġ+ Ġbox H ) ĊĠĠĠĠĠĠĠ Ġcs . lineTo ( box X , Ġbox Y Ġ+ Ġbox H ) ĊĠĠĠĠĠĠĠ Ġcs . lineTo ( box X Ġ, box Y ) ĊĠĠĠĠĠĠĠ Ġcs . close And Stroke () ĊĊĠĠĠĠĠĠĠ Ġcs . begin Text () ĊĠĠĠĠĠĠĠ Ġcs . new Line At Offset ( box X Ġ+ Ġlogo W Ġ+ Ġm Ġ* Ġ 3 , Ġbox Y Ġ+ Ġm Ġ* Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġcs . setFont ( ĠPD Type 1 Font . CO URI ER , Ġ 2 0 f Ġ) ĊĠĠĠĠĠĠĠ Ġcs . show Text ( code ) ĊĠĠĠĠĠĠĠ Ġcs . end Text () ĊĊĠĠĠĠĠĠĠ Ġcs . begin Text () ĊĠĠĠĠĠĠĠ Ġcs . new Line At Offset ( box X Ġ+ Ġlogo W Ġ+ Ġm Ġ* Ġ 3 , Ġbox Y Ġ+ Ġm Ġ* Ġ 3 Ġ+ Ġ 2 0 ) ĊĠĠĠĠĠĠĠ Ġcs . setFont ( ĠPD Type 1 Font . HE LV ET ICA , Ġ 1 0 f Ġ) ĊĠĠĠĠĠĠĠ Ġcs . show Text (" Din Ġakt iver ing sk od ĠpÃ¥ Ġ" Ġ+ Ġweb Url ) ĊĠĠĠĠĠĠĠ Ġcs . end Text () ĊĊĠĠĠĠĠĠĠ Ġcs . drawImage ( logo , Ġbox X Ġ+ Ġm , Ġbox Y Ġ+ Ġm , Ġlogo W , Ġlogo H ) ĊĊĠĠĠĠĠĠĠ Ġval Ġqr Code Ġ= ĠLoss less Factory . createFrom Image ( document , Ġget QR Code ("$ web Url /$ code ", Ġ 4 0 0 )) ĊĠĠĠĠĠĠĠ Ġcs . drawImage ( qr Code , Ġbox X Ġ+ Ġbox W Ġ- Ġqr Size Ġ- Ġqr M , Ġbox Y Ġ+ Ġqr M , Ġqr Size , Ġqr Size ) ĊĊĠĠĠĠĠĠĠ Ġcs . close () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġoffset Ġ+ Ġbox H Ġ+ Ġ( outer M Ġ* Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget QR Code ( text : ĠString , Ġdimension : ĠInt ): ĠBufferedImage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbit Matrix Ġ= Ġqr Code Writer . encode ( text , ĠBar code Format . QR _ CODE , Ġdimension , Ġdimension ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMatrix To Image Writer . to Buffered Image ( bit Matrix ) ĊĠĠĠ Ġ} Ċ }