//---------------------------------------------------------------- ----------------------- Ċ // ĠCopyright Ġ( c ) Ġ 2 0 0 1 - 2 0 1 8 Ġby ĠPDF Tr on ĠSystems ĠInc . ĠAll ĠRights ĠReserved . Ċ // ĠConsult Ġlegal . txt Ġregarding Ġlegal Ġand Ġlicense Ġinformation . Ċ //---------------------------------------------------------------- ----------------------- Ċ Ċ package Ġcom . pdf tron . android . pdf net sdk samples . samples Ċ Ċ import Ġcom . pdf tron . android . pdf net sdk samples . Output Listener Ċ import Ġcom . pdf tron . android . pdf net sdk samples . PDF Net Sample Ċ import Ġcom . pdf tron . android . pdf net sdk samples . R Ċ import Ġcom . pdf tron . android . pdf net sdk samples . util . Utils Ċ import Ġcom . pdf tron . common . Matrix 2 D Ċ import Ġcom . pdf tron . common . PDF Net Exception Ċ import Ġcom . pdf tron . filters . Filter Reader Ċ import Ġcom . pdf tron . pdf . Char Data Ċ import Ġcom . pdf tron . pdf . Char Iterator Ċ import Ġcom . pdf tron . pdf . Color Pt Ċ import Ġcom . pdf tron . pdf . Color Space Ċ import Ġcom . pdf tron . pdf . Element Ċ import Ġcom . pdf tron . pdf . Element Reader Ċ import Ġcom . pdf tron . pdf . Font Ċ import Ġcom . pdf tron . pdf . GS Changes Iterator Ċ import Ġcom . pdf tron . pdf . G State Ċ import Ġcom . pdf tron . pdf . Image 2 RGB Ċ import Ġcom . pdf tron . pdf . PDF Doc Ċ import Ġcom . pdf tron . pdf . Page Ċ import Ġcom . pdf tron . pdf . Page Iterator Ċ import Ġcom . pdf tron . pdf . Path Data Ċ import Ġcom . pdf tron . pdf . Pattern Color Ċ import Ġcom . pdf tron . pdf . Shading Ċ Ċ import Ġjava . util . ArrayList Ċ Ċ class ĠElement Reader Adv Test Ġ: ĠPDF Net Sample () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠsetTitle ( R . string . sample _ element reader adv _ title ) ĊĠĠĠĠĠĠĠ Ġset Description ( R . string . sample _ element reader adv _ description ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun ( output Listener : ĠOutput Listener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . run ( output Listener ) ĊĠĠĠĠĠĠĠ Ġm Output Listener Ġ= Ġoutput Listener ĊĠĠĠĠĠĠĠ Ġm FileList . clear () ĊĠĠĠĠĠĠĠ Ġprint Header ( output Listener !! ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġstring Ġoutput _ path Ġ= Ġ"../../ Test Files / Output /"; ĊĊĠĠĠĠĠĠĠ Ġtry ĊĠĠĠĠĠĠĠ Ġ// ĠExtract Ġtext Ġdata Ġfrom Ġall Ġpages Ġin Ġthe Ġdocument ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" ________________________________ ________________ __ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" Extract Ġpage Ġelement Ġinformation Ġfrom Ġall Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" pages Ġin Ġthe Ġdocument .") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠPDF Doc ( Utils . get Asset TempFile ( PDF Net Sample . Companion . INPUT _ PATH Ġ+ Ġ" newsletter . pdf ") !!. absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdoc . init Security Handler () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpg num Ġ= Ġdoc . page Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage _ begin Ġ= Ġdoc . page Iterator ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage _ reader Ġ= ĠElement Reader () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitr : ĠPage Iterator ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġitr Ġ= Ġpage _ begin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( itr . hasNext ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠRead Ġevery Ġpage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Page Ġ= Ġitr . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" Page Ġ" Ġ+ Ġnext Page ?. index Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" -------------------------------- -------- ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage _ reader . begin ( next Page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Elements ( page _ reader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage _ reader . end () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Close Ġthe Ġopen Ġdocument Ġto Ġfree Ġup Ġdocument ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// memory Ġsoon er Ġthan Ġwaiting Ġfor Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// garbage Ġcollector ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdoc . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" Done ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println ( e . stack Trace ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġm FileList ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ToFile List ( file ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprint Footer ( output Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Output Listener : ĠOutput Listener ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm FileList Ġ= ĠArrayList < String >() ĊĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġm _ buf : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( PDF Net Exception :: class ) ĊĠĠĠĠĠĠĠ Ġinternal Ġfun ĠProcess Path ( reader : ĠElement Reader , Ġpath : ĠElement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path . is Cli pping Path ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" This Ġis Ġa Ġclipping Ġpath ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Data Ġ= Ġpath . path Data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġpath Data . points ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo pr Ġ= Ġpath Data . operators ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx 1 : ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy 1 : ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx 2 : ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy 2 : ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx 3 : ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy 3 : ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUse Ġpath . get CT M () Ġif Ġyou Ġare Ġinterested Ġin ĠC TM Ġ( current Ġtransformation Ġmatrix ). ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. print (" ĠPath ĠData ĠPoints Ġ:= Ġ\" ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdata _ index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( op r _ index Ġin Ġo pr . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( op r [ op r _ index ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPath Data . e _ mov eto . to Byte () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx 1 Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy 1 Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. print (" M $ x 1 Ġ$ y 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPath Data . e _ lin eto . to Byte () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx 1 Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy 1 Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. print (" ĠL $ x 1 Ġ$ y 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPath Data . e _ cub ict o . to Byte () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx 1 Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy 1 Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx 2 Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy 2 Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx 3 Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy 3 Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. print (" ĠC $ x 1 Ġ$ y 1 Ġ$ x 2 Ġ$ y 2 Ġ$ x 3 Ġ$ y 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPath Data . e _ rect . to Byte () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx 1 Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy 1 Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġdata [ data _ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ++ data _ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx 2 Ġ= Ġx 1 Ġ+ Ġw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy 2 Ġ= Ġy 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx 3 Ġ= Ġx 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy 3 Ġ= Ġy 1 Ġ+ Ġh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. print (" M $ x 1 Ġ$ y 1 ĠL $ x 2 Ġ$ y 2 ĠL $ x 3 Ġ$ y 3 ĠL $ x 1 Ġ$ y 3 ĠZ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPath Data . e _ close path . to Byte () Ġ-> Ġm Output Listener !!. println (" ĠClose ĠPath ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠPDF Net Exception (" Invalid ĠElement ĠType ", Ġ 0 , Ġ"", Ġ"", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. print ("\" Ġ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgs Ġ= Ġpath . g State ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet ĠPath ĠState Ġ 0 Ġ( stroke , Ġfill , Ġfill - rule ) Ġ-------------------------------- --- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path . is St rok ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" Stroke Ġpath ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( gs . stroke Color Space . type Ġ== ĠColor Space . e _ pattern ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" Path Ġhas Ġassociated Ġpattern ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġstroke Ġcolor Ġ( you Ġcan Ġuse ĠPDF Net Ġcolor Ġconversion Ġfacilities ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrgb Ġ= ĠColor Pt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrgb Ġ= Ġgs . stroke Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġv Ġ= Ġrgb . get ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrgb Ġ= Ġgs . stroke Color Space . convert 2 RGB ( rgb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ġ= Ġrgb . get ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġnot Ġstroke Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path . is Filled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" Fill Ġpath ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( gs . fill Color Space . type Ġ== ĠColor Space . e _ pattern ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" Path Ġhas Ġassociated Ġpattern ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpat Ġ= Ġgs . fill Pattern ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġpat . type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠPattern Color . e _ sh ading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" Shading ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsh ading Ġ= Ġpat . sh ading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sh ading . type Ġ== ĠSh ading . e _ function _ sh ading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" FUN CT ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( sh ading . type Ġ== ĠSh ading . e _ ax ial _ sh ading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" AX IAL ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( sh ading . type Ġ== ĠSh ading . e _ radial _ sh ading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" RAD IAL ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== ĠPattern Color . e _ colored _ til ing _ pattern ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" e _ colored _ til ing _ pattern ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== ĠPattern Color . e _ un colored _ til ing _ pattern ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" e _ un colored _ til ing _ pattern ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" ?") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrgb Ġ= ĠColor Pt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrgb Ġ= Ġgs . fill Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġv Ġ= Ġrgb . get ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrgb Ġ= Ġgs . fill Color Space . convert 2 RGB ( rgb ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ġ= Ġrgb . get ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġnot Ġfill Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠProcess Ġany Ġchanges Ġin Ġgraphics Ġstate Ġ Ġ-------------------------------- - ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgs _ itr Ġ= Ġreader . changes Iterator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( gs _ itr . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( gs _ itr . next () !!. toInt ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG State . e _ transform Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG State . e _ line _ width Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG State . e _ line _ cap Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG State . e _ line _ join Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG State . e _ flat ness Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG State . e _ mit er _ limit Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG State . e _ dash _ pattern Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// double [] Ġdas hes ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// das hes = gs . get D ashes (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// gs . get Phase (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG State . e _ fill _ color Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( gs . fill Color Space . type Ġ== ĠColor Space . e _ pattern Ġ&& Ġgs . fill Pattern . type Ġ!= ĠPattern Color . e _ sh ading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// process Ġthe Ġpattern Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader . pattern Begin ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Elements ( reader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader . end () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}// ĠGet Ġtransform Ġmatrix Ġfor Ġthis Ġelement . ĠUn like Ġpath . Get CT M () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthat Ġreturn Ġfull Ġtransformation Ġmatrix Ġgs . Get Transform () Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġonly Ġthe Ġtransformation Ġmatrix Ġthat Ġwas Ġinstalled Ġfor Ġthis Ġelement . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// gs . get Transform (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// gs . get LineWidth (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// gs . getLine Cap (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// gs . getLine Join (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// gs . getM iter Limit (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreader . clear Change List () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( PDF Net Exception :: class ) ĊĠĠĠĠĠĠĠ Ġinternal Ġfun ĠProcess Text ( page _ reader : ĠElement Reader ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBegin Ġtext Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" Begin ĠText ĠBlock :") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġelement : ĠElement ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġpage _ reader . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( element . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . e _ text _ end Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFinish Ġthe Ġtext Ġblock ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" End ĠText ĠBlock .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . e _ text Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgs Ġ= Ġelement . g State ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcs _ fill Ġ= Ġgs . fill Color Space ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfill Ġ= Ġgs . fill Color ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout : ĠColor Pt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Ġ= Ġcs _ fill . convert 2 RGB ( fill ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcs _ stroke Ġ= Ġgs . stroke Color Space ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstroke Ġ= Ġgs . stroke Color ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfont Ġ= Ġgs . font ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" Font ĠName : Ġ" Ġ+ Ġfont . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// font . is Fixed Width (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// font . is Ser if (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// font . is Symbolic (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// font . is Italic (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// double Ġfont _ size Ġ= Ġgs . get FontSize (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// double Ġword _ spacing Ġ= Ġgs . get Word Spacing (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// double Ġchar _ spacing Ġ= Ġgs . get Char Spacing (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// String Ġtxt Ġ= Ġelement . getText String (); ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( font . type Ġ== ĠFont . e _ Type 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// type Ġ 3 Ġfont , Ġprocess Ġits Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitr Ġ= Ġelement . char Iterator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( itr . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage _ reader . type 3 Font Begin ( itr . next (), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Elements ( page _ reader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage _ reader . end () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext _ mtx Ġ= Ġelement . text Matrix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġx : ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġy : ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchar _ code : ĠLong ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitr Ġ= Ġelement . char Iterator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( itr . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġitr . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchar _ code Ġ= Ġdata !!. charCode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// m Output Listener . print (" Character Ġcode : Ġ"); ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. print ( char _ code . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġdata . get Glyph X () ĠĠĠĠĠĠĠ Ġ// Ġcharacter Ġposition ing Ġinformation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġdata . get Glyph Y () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUse Ġelement . get CT M () Ġif Ġyou Ġare Ġinterested Ġin Ġthe ĠC TM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( current Ġtransformation Ġmatrix ). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc tm Ġ= Ġelement . ct m ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTo Ġget Ġthe Ġexact Ġcharacter Ġposition ing Ġinformation Ġyou Ġneed Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġconcatenate Ġcurrent Ġtext Ġmatrix Ġwith ĠC TM Ġand Ġthen Ġmultiply ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrelative Ġposition ing Ġcoordinates Ġwith Ġthe Ġresulting Ġmatrix . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmtx Ġ= Ġc tm . multiply ( text _ mtx ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġmtx . mult Point ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġt . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġt . y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// m Output Listener . println (" ĠPosition : Ġx =" Ġ+ Ġx Ġ+ Ġ" Ġy =" Ġ+ Ġy Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( PDF Net Exception :: class ) ĊĠĠĠĠĠĠĠ Ġinternal Ġfun ĠProcess Image ( image : ĠElement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage _ mask Ġ= Ġimage . is Image Mask ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinterpolate Ġ= Ġimage . is Image Interpol ate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġimage . image Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġimage . image Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout _ data _ sz Ġ= Ġwidth Ġ* Ġheight Ġ* Ġ 3 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Output Listener !!. println (" Image : Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġwidth =\"" Ġ+ Ġwidth Ġ+ Ġ"\"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Ġheight =\"" Ġ+ Ġheight ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMatrix 2 D & Ġmtx Ġ= Ġimage -> Get CT M (); Ġ// Ġimage Ġmatrix Ġ( page Ġposition ing Ġinfo ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠYou Ġcan Ġuse ĠGet ImageData Ġto Ġread Ġthe Ġraw Ġ( decoded ) Ġimage Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// image -> Get Bits Per Component (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// image -> Get ImageData (); ĉ // Ġget Ġraw Ġimage Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ.... Ġor Ġuse ĠImage 2 RGB Ġfilter Ġthat Ġconverts Ġevery Ġimage Ġto ĠRGB Ġformat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġshould Ġsave Ġyou Ġtime Ġsince Ġyou Ġdon 't Ġneed Ġto Ġdeal Ġwith Ġcolor Ġconversions , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġimage Ġup - sampling , Ġdecoding Ġetc . ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimg _ conv Ġ= ĠImage 2 RGB ( image ) ĠĠĠ Ġ// ĠExtract Ġand Ġconvert Ġimage Ġto ĠRGB Ġ 8 - b pc Ġformat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠFilter Reader ( img _ conv ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠA Ġbuffer Ġused Ġto Ġkeep Ġimage Ġdata . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= ĠByteArray ( out _ data _ sz ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage _ data _ out Ġ= Ġreader . read ( buf ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ& image _ data _ out . front () Ġcontains ĠRGB Ġimage Ġdata . ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNote Ġthat Ġyou Ġdon 't Ġneed Ġto Ġread Ġa Ġwhole Ġimage Ġat Ġa Ġtime . ĠAlternatively ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġyou Ġcan Ġread Ġa Ġchunk Ġat Ġa Ġtime Ġby Ġrepeatedly Ġcalling Ġreader . Read ( buf ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġuntil Ġthe Ġfunction Ġreturns Ġ 0 . ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( PDF Net Exception :: class ) ĊĠĠĠĠĠĠĠ Ġinternal Ġfun ĠProcess Elements ( reader : ĠElement Reader ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġelement : ĠElement ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġpage Ġcontents ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġreader . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( element . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . e _ path ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠProcess Ġpath Ġdata ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Path ( reader , Ġelement ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . e _ text _ begin ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠProcess Ġtext Ġblock ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Text ( reader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . e _ form ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠProcess Ġform ĠX Objects ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader . form Begin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Elements ( reader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader . end () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . e _ image ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠProcess ĠImages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Image ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }