2020-11-11 18:48:37 +00:00
|
|
|
package document ;import (_c "encoding/binary";_ee "fmt";_da "github.com/unidoc/unipdf/v3/common";_a "github.com/unidoc/unipdf/v3/internal/bitwise";_edc "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_dac "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_db "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_b "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_fa "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_ed "io";_e "math";_d "runtime/debug";);func (_ffbg *Page )createPage (_ffdf *_db .PageInformationSegment )error {var _bbbb error ;if !_ffdf .IsStripe ||_ffdf .PageBMHeight !=-1{_bbbb =_ffbg .createNormalPage (_ffdf );}else {_bbbb =_ffbg .createStripedPage (_ffdf );};return _bbbb ;};func (_eec *Document )reachedEOF (_aacd int64 )(bool ,error ){const _gafg ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_cde :=_eec .InputStream .Seek (_aacd ,_ed .SeekStart );if _cde !=nil {_da .Log .Debug ("\u0072\u0065\u0061c\u0068\u0065\u0064\u0045\u004f\u0046\u0020\u002d\u0020\u0064\u002e\u0049\u006e\u0070\u0075\u0074\u0053\u0074\u0072\u0065\u0061\u006d\u002e\u0053\u0065\u0065\u006b\u0020\u0066a\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_cde );return false ,_fa .Wrap (_cde ,_gafg ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_cde =_eec .InputStream .ReadBits (32);if _cde ==_ed .EOF {return true ,nil ;}else if _cde !=nil {return false ,_fa .Wrap (_cde ,_gafg ,"");};return false ,nil ;};func (_fg *Document )produceClassifiedPages ()(_dgb error ){const _afb ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _fg .Classer ==nil {return nil ;};var (_egd *Page ;_aad bool ;_afg *_db .Header ;);for _dgbb :=1;_dgbb <=int (_fg .NumberOfPages );_dgbb ++{if _egd ,_aad =_fg .Pages [_dgbb ];!_aad {return _fa .Errorf (_afb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_dgbb );};if _egd .EncodingMethod ==GenericEM {continue ;};if _afg ==nil {if _afg ,_dgb =_fg .GlobalSegments .GetSymbolDictionary ();_dgb !=nil {return _fa .Wrap (_dgb ,_afb ,"");};};if _dgb =_fg .produceClassifiedPage (_egd ,_afg );_dgb !=nil {return _fa .Wrapf (_dgb ,_afb ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_dgbb );};};return nil ;};func (_gec *Page )GetWidth ()(int ,error ){return _gec .getWidth ()};func _adea (_dge _a .StreamReader ,_ggc *Globals )(*Document ,error ){_acbg :=&Document {Pages :make (map[int ]*Page ),InputStream :_dge ,OrganizationType :_db .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_ggc ,_g :9};if _acbg .GlobalSegments ==nil {_acbg .GlobalSegments =&Globals {};};if _fb :=_acbg .mapData ();_fb !=nil {return nil ,_fb ;};return _acbg ,nil ;};func (_bdad *Page )nextSegmentNumber ()uint32 {return _bdad .Document .nextSegmentNumber ()};func _ce (_ac int )int {_acc :=0;_fac :=(_ac &(_ac -1))==0;_ac >>=1;for ;_ac !=0;_ac >>=1{_acc ++;};if _fac {return _acc ;};return _acc +1;};func (_ddd *Page )clearSegmentData (){for _egf :=range _ddd .Segments {_ddd .Segments [_egf ].CleanSegmentData ();};};type Globals struct{Segments []*_db .Header ;};func (_dcae *Page )countRegions ()int {var _bge int ;for _ ,_gdfd :=range _dcae .Segments {switch _gdfd .Type {case 6,7,22,23,38,39,42,43:_bge ++;};};return _bge ;};func DecodeDocument (input _a .StreamReader ,globals *Globals )(*Document ,error ){return _adea (input ,globals );};func (_bgd *Document )produceClassifiedPage (_cc *Page ,_gaf *_db .Header )(_adf error ){const _bdd ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _de map[int ]int ;_adb :=_bgd ._bc ;_dbe :=[]*_db .Header {_gaf };if len (_bgd ._eg [_cc .PageNumber ])> 0{_de =map[int ]int {};_aadb ,_dfb :=_bgd .addSymbolDictionary (_cc .PageNumber ,_bgd .Classer .UndilatedTemplates ,_bgd ._eg [_cc .PageNumber ],_de ,false );if _dfb !=nil {return _fa .Wrap (_dfb ,_bdd ,"");};_dbe =append (_dbe ,_a
|