mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-29 13:48:54 +08:00
12 lines
39 KiB
Go
12 lines
39 KiB
Go
//
|
|
// Copyright 2020 FoxyUtils ehf. All rights reserved.
|
|
//
|
|
// This is a commercial product and requires a license to operate.
|
|
// A trial license can be obtained at https://unidoc.io
|
|
//
|
|
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
|
|
//
|
|
// Use of this source code is governed by the UniDoc End User License Agreement
|
|
// terms that can be accessed at https://unidoc.io/eula/
|
|
|
|
package document ;import (_c "encoding/binary";_e "fmt";_fb "github.com/unidoc/unipdf/v3/common";_fc "github.com/unidoc/unipdf/v3/internal/bitwise";_cf "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_a "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_d "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_fe "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_caf "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_ca "io";_ff "math";_g "runtime/debug";);func (_eedc *Page )Encode (w _fc .BinaryWriter )(_cgb int ,_fbbe error ){const _afac ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _ceec int ;for _ ,_cbde :=range _eedc .Segments {if _ceec ,_fbbe =_cbde .Encode (w );_fbbe !=nil {return _cgb ,_caf .Wrap (_fbbe ,_afac ,"");};_cgb +=_ceec ;};return _cgb ,nil ;};func (_aaga *Document )parseFileHeader ()error {const _efc ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_aff :=_aaga .InputStream .Seek (8,_ca .SeekStart );if _aff !=nil {return _caf .Wrap (_aff ,_efc ,"\u0069\u0064");};_ ,_aff =_aaga .InputStream .ReadBits (5);if _aff !=nil {return _caf .Wrap (_aff ,_efc ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_affg ,_aff :=_aaga .InputStream .ReadBit ();if _aff !=nil {return _caf .Wrap (_aff ,_efc ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _affg ==1{_aaga .GBUseExtTemplate =true ;};_affg ,_aff =_aaga .InputStream .ReadBit ();if _aff !=nil {return _caf .Wrap (_aff ,_efc ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _affg !=1{_aaga .NumberOfPagesUnknown =false ;};_affg ,_aff =_aaga .InputStream .ReadBit ();if _aff !=nil {return _caf .Wrap (_aff ,_efc ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_aaga .OrganizationType =_d .OrganizationType (_affg );if !_aaga .NumberOfPagesUnknown {_aaga .NumberOfPages ,_aff =_aaga .InputStream .ReadUint32 ();if _aff !=nil {return _caf .Wrap (_aff ,_efc ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_aaga ._gg =13;};return nil ;};func (_bcc *Document )encodeEOFHeader (_acb _fc .BinaryWriter )(_egc int ,_fggf error ){_dec :=&_d .Header {SegmentNumber :_bcc .nextSegmentNumber (),Type :_d .TEndOfFile };if _egc ,_fggf =_dec .Encode (_acb );_fggf !=nil {return 0,_caf .Wrap (_fggf ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _egc ,nil ;};func (_ega *Globals )GetSegmentByIndex (index int )(*_d .Header ,error ){const _ceb ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _ega ==nil {return nil ,_caf .Error (_ceb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_ega .Segments )==0{return nil ,_caf .Error (_ceb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_ega .Segments )-1{return nil ,_caf .Error (_ceb ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _ega .Segments [index ],nil ;};func (_ag *Document )AddClassifiedPage (bm *_a .Bitmap ,method _fe .Method )(_ec error ){const _fd ="\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0041\u0064d\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064P\u0061\u0067\u0065";if !_ag .FullHeaders &&_ag .NumberOfPages !=0{return _caf .Error (_fd ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");};if _ag .Classer ==nil {if _ag .Classer ,_ec =_fe .Init (_fe .DefaultSettings ());_ec !=nil {return _caf .Wrap (_ec ,_fd ,"");};};_gd :=int (_ag .nextPageNumber ());_bb :=&Page {Segments :[]*_d .Header {},Bitmap :bm ,Document :_ag ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_gd };_ag .Pages [_gd ]=_bb ;switch method {case _fe .RankHaus :_bb .EncodingMethod =RankHausEM ;case _fe .Correlation :_bb .EncodingMethod =CorrelationEM ;};_bb .AddPageInformationSegment ();if _ec =_ag .Classer .AddPage (bm ,_gd ,method );_ec !=nil {return _caf .Wrap (_ec ,_fd ,"");};if _ag .FullHeaders {_bb .AddEndOfPageSegment ();};return nil ;};func (_ge *Document )determineRandomDataOffsets (_abde []*_d .Header ,_ed uint64 ){if _ge .OrganizationType !=_d .ORandom {return ;};for _ ,_adg :=range _abde {_adg .SegmentDataStartOffset =_ed ;_ed +=_adg .SegmentDataLength ;};};func (_gdad *Page )createNormalPage (_fcgf *_d .PageInformationSegment )error {const _ece ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_gdad .Bitmap =_a .New (_fcgf .PageBMWidth ,_fcgf .PageBMHeight );if _fcgf .DefaultPixelValue ()!=0{_gdad .Bitmap .SetDefaultPixel ();};for _ ,_ffg :=range _gdad .Segments {switch _ffg .Type {case 6,7,22,23,38,39,42,43:_fb .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_ffg .SegmentNumber );_cdca ,_caa :=_ffg .GetSegmentData ();if _caa !=nil {return _caa ;};_cac ,_dgec :=_cdca .(_d .Regioner );if !_dgec {_fb .Log .Debug ("\u0053\u0065g\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0054\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0052\u0065\u0067\u0069on\u0065\u0072",_cdca );return _caf .Errorf (_ece ,"i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062i\u0067\u0032\u0020\u0073\u0065\u0067\u006den\u0074\u0020\u0074\u0079p\u0065\u0020\u002d\u0020\u006e\u006f\u0074\u0020\u0061 R\u0065\u0067i\u006f\u006e\u0065\u0072\u003a\u0020\u0025\u0054",_cdca );};_ecad ,_caa :=_cac .GetRegionBitmap ();if _caa !=nil {return _caf .Wrap (_caa ,_ece ,"");};if _gdad .fitsPage (_fcgf ,_ecad ){_gdad .Bitmap =_ecad ;}else {_cfa :=_cac .GetRegionInfo ();_gdbe :=_gdad .getCombinationOperator (_fcgf ,_cfa .CombinaionOperator );_caa =_a .Blit (_ecad ,_gdad .Bitmap ,int (_cfa .XLocation ),int (_cfa .YLocation ),_gdbe );if _caa !=nil {return _caf .Wrap (_caa ,_ece ,"");};};};};return nil ;};func (_cb *Document )completeSymbols ()(_de error ){const _cabd ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _cb .Classer ==nil {return nil ;};if _cb .Classer .UndilatedTemplates ==nil {return _caf .Error (_cabd ,"\u006e\u006f t\u0065\u006d\u0070l\u0061\u0074\u0065\u0073 de\u0066in\u0065\u0064\u0020\u0066\u006f\u0072\u0020th\u0065\u0020\u0063\u006c\u0061\u0073\u0073e\u0072");};_cda :=len (_cb .Pages )==1;_ac :=make ([]int ,_cb .Classer .UndilatedTemplates .Size ());var _fa int ;for _ae :=0;_ae < _cb .Classer .ClassIDs .Size ();_ae ++{_fa ,_de =_cb .Classer .ClassIDs .Get (_ae );if _de !=nil {return _caf .Wrap (_de ,_cabd ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");};_ac [_fa ]++;};var _aee []int ;for _ffb :=0;_ffb < _cb .Classer .UndilatedTemplates .Size ();_ffb ++{if _ac [_ffb ]==0{return _caf .Error (_cabd ,"\u006eo\u0020\u0073y\u006d\u0062\u006f\u006cs\u0020\u0069\u006es\u0074\u0061\u006e\u0063\u0065\u0073\u0020\u0066\u006fun\u0064\u0020\u0066o\u0072\u0020g\u0069\u0076\u0065\u006e\u0020\u0063l\u0061\u0073s\u003f\u0020");};if _ac [_ffb ]> 1||_cda {_aee =append (_aee ,_ffb );};};_cb ._dd =len (_aee );var _abg ,_bcf int ;for _fbbc :=0;_fbbc < _cb .Classer .ComponentPageNumbers .Size ();_fbbc ++{_abg ,_de =_cb .Classer .ComponentPageNumbers .Get (_fbbc );if _de !=nil {return _caf .Wrapf (_de ,_cabd ,"p\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027 \u006e\u006f\u0074\u0020\u0066\u006f\u0075nd\u0020\u0069\u006e\u0020t\u0068\u0065\u0020\u0063\u006c\u0061\u0073\u0073\u0065r \u0070\u0061g\u0065\u006e\u0075\u006d\u0062\u0065\u0072\u0073",_fbbc );};_bcf ,_de =_cb .Classer .ClassIDs .Get (_fbbc );if _de !=nil {return _caf .Wrapf (_de ,_cabd ,"\u0063\u0061\u006e\u0027\u0074\u0020\u0067e\u0074\u0020\u0073y\u006d\u0062\u006f\u006c \u0066\u006f\u0072\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027\u0020\u0066\u0072\u006f\u006d\u0020\u0063\u006c\u0061\u0073\u0073\u0065\u0072",_abg );};if _ac [_bcf ]==1&&!_cda {_cb ._fed [_abg ]=append (_cb ._fed [_abg ],_bcf );};};if _de =_cb .Classer .ComputeLLCorners ();_de !=nil {return _caf .Wrap (_de ,_cabd ,"");};return nil ;};func (_cab *Document )produceClassifiedPages ()(_fgg error ){const _cd ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _cab .Classer ==nil {return nil ;};var (_dge *Page ;_bdg bool ;_ad *_d .Header ;);for _gf :=1;_gf <=int (_cab .NumberOfPages );_gf ++{if _dge ,_bdg =_cab .Pages [_gf ];!_bdg {return _caf .Errorf (_cd ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_gf );};if _dge .EncodingMethod ==GenericEM {continue ;};if _ad ==nil {if _ad ,_fgg =_cab .GlobalSegments .GetSymbolDictionary ();_fgg !=nil {return _caf .Wrap (_fgg ,_cd ,"");};};if _fgg =_cab .produceClassifiedPage (_dge ,_ad );_fgg !=nil {return _caf .Wrapf (_fgg ,_cd ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_gf );};};return nil ;};func (_ga *Document )addSymbolDictionary (_bae int ,_gc *_a .Bitmaps ,_dc []int ,_ebc map[int ]int ,_agg bool )(*_d .Header ,error ){const _agcd ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";_fgd :=&_d .SymbolDictionary {};if _aa :=_fgd .InitEncode (_gc ,_dc ,_ebc ,_agg );_aa !=nil {return nil ,_aa ;};_age :=&_d .Header {Type :_d .TSymbolDictionary ,PageAssociation :_bae ,SegmentData :_fgd };if _bae ==0{if _ga .GlobalSegments ==nil {_ga .GlobalSegments =&Globals {};};_ga .GlobalSegments .AddSegment (_age );return _age ,nil ;};_gda ,_db :=_ga .Pages [_bae ];if !_db {return nil ,_caf .Errorf (_agcd ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_bae );};var (_ce int ;_eeg *_d .Header ;);for _ce ,_eeg =range _gda .Segments {if _eeg .Type ==_d .TPageInformation {break ;};};_ce ++;_gda .Segments =append (_gda .Segments ,nil );copy (_gda .Segments [_ce +1:],_gda .Segments [_ce :]);_gda .Segments [_ce ]=_age ;return _age ,nil ;};func (_gcf *Document )encodeFileHeader (_ceg _fc .BinaryWriter )(_cde int ,_dgga error ){const _dad ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_cde ,_dgga =_ceg .Write (_ffc );if _dgga !=nil {return _cde ,_caf .Wrap (_dgga ,_dad ,"\u0069\u0064");};if _dgga =_ceg .WriteByte (0x01);_dgga !=nil {return _cde ,_caf .Wrap (_dgga ,_dad ,"\u0066\u006c\u0061g\u0073");};_cde ++;_ccg :=make ([]byte ,4);_c .BigEndian .PutUint32 (_ccg ,_gcf .NumberOfPages );_ffbd ,_dgga :=_ceg .Write (_ccg );if _dgga !=nil {return _ffbd ,_caf .Wrap (_dgga ,_dad ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_cde +=_ffbd ;return _cde ,nil ;};func (_dada *Document )mapData ()error {const _acg ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_dab []*_d .Header ;_cdf int64 ;_fad _d .Type ;);_fcg ,_bbg :=_dada .isFileHeaderPresent ();if _bbg !=nil {return _caf .Wrap (_bbg ,_acg ,"");};if _fcg {if _bbg =_dada .parseFileHeader ();_bbg !=nil {return _caf .Wrap (_bbg ,_acg ,"");};_cdf +=int64 (_dada ._gg );_dada .FullHeaders =true ;};var (_daf *Page ;_bdf bool ;);for _fad !=51&&!_bdf {_bgf ,_ffd :=_d .NewHeader (_dada ,_dada .InputStream ,_cdf ,_dada .OrganizationType );if _ffd !=nil {return _caf .Wrap (_ffd ,_acg ,"");};_fb .Log .Trace ("\u0044\u0065c\u006f\u0064\u0069\u006eg\u0020\u0073e\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u0075m\u0062\u0065\u0072\u003a\u0020\u0025\u0064\u002c\u0020\u0054\u0079\u0070e\u003a\u0020\u0025\u0073",_bgf .SegmentNumber ,_bgf .Type );_fad =_bgf .Type ;if _fad !=_d .TEndOfFile {if _bgf .PageAssociation !=0{_daf =_dada .Pages [_bgf .PageAssociation ];if _daf ==nil {_daf =_ggae (_dada ,_bgf .PageAssociation );_dada .Pages [_bgf .PageAssociation ]=_daf ;if _dada .NumberOfPagesUnknown {_dada .NumberOfPages ++;};};_daf .Segments =append (_daf .Segments ,_bgf );}else {_dada .GlobalSegments .AddSegment (_bgf );};};_dab =append (_dab ,_bgf );_cdf =_dada .InputStream .StreamPosition ();if _dada .OrganizationType ==_d .OSequential {_cdf +=int64 (_bgf .SegmentDataLength );};_bdf ,_ffd =_dada .reachedEOF (_cdf );if _ffd !=nil {_fb .Log .Debug ("\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u0072\u0065\u0061\u0063h\u0065\u0064\u0020\u0045\u004f\u0046\u0020\u0077\u0069\u0074\u0068\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_ffd );return _caf .Wrap (_ffd ,_acg ,"");};};_dada .determineRandomDataOffsets (_dab ,uint64 (_cdf ));return nil ;};func (_cca *Page )AddPageInformationSegment (){_fga :=&_d .PageInformationSegment {PageBMWidth :_cca .FinalWidth ,PageBMHeight :_cca .FinalHeight ,ResolutionX :_cca .ResolutionX ,ResolutionY :_cca .ResolutionY ,IsLossless :_cca .IsLossless };_edg :=&_d .Header {PageAssociation :_cca .PageNumber ,SegmentDataLength :uint64 (_fga .Size ()),SegmentData :_fga ,Type :_d .TPageInformation };_cca .Segments =append (_cca .Segments ,_edg );};func _adc (_cagc int )int {_afe :=0;_gb :=(_cagc &(_cagc -1))==0;_cagc >>=1;for ;_cagc !=0;_cagc >>=1{_afe ++;};if _gb {return _afe ;};return _afe +1;};var _ffc =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_fca *Page )getWidth ()(int ,error ){const _deb ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _fca .FinalWidth !=0{return _fca .FinalWidth ,nil ;};_gdbb :=_fca .getPageInformationSegment ();if _gdbb ==nil {return 0,_caf .Error (_deb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bdfe ,_bafe :=_gdbb .GetSegmentData ();if _bafe !=nil {return 0,_caf .Wrap (_bafe ,_deb ,"");};_agcdf ,_cea :=_bdfe .(*_d .PageInformationSegment );if !_cea {return 0,_caf .Errorf (_deb ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_bdfe );};_fca .FinalWidth =_agcdf .PageBMWidth ;return _fca .FinalWidth ,nil ;};func (_ceea *Page )GetResolutionY ()(int ,error ){return _ceea .getResolutionY ()};func (_addb *Page )GetSegment (number int )(*_d .Header ,error ){const _gga ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_cge :=range _addb .Segments {if _cge .SegmentNumber ==uint32 (number ){return _cge ,nil ;};};_eccf :=make ([]uint32 ,len (_addb .Segments ));for _ddc ,_afaa :=range _addb .Segments {_eccf [_ddc ]=_afaa .SegmentNumber ;};return nil ,_caf .Errorf (_gga ,"\u0073e\u0067\u006d\u0065n\u0074\u0020\u0077i\u0074h \u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0069\u006e\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u003a\u0020'%\u0064'\u002e\u0020\u004b\u006e\u006f\u0077n\u0020\u0073\u0065\u0067\u006de\u006e\u0074\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0073\u003a \u0025\u0076",number ,_addb .PageNumber ,_eccf );};func (_abe *Page )composePageBitmap ()error {const _egac ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _abe .PageNumber ==0{return nil ;};_bga :=_abe .getPageInformationSegment ();if _bga ==nil {return _caf .Error (_egac ,"\u0070\u0061\u0067e \u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069o\u006e \u0073e\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};_fbc ,_dbg :=_bga .GetSegmentData ();if _dbg !=nil {return _dbg ;};_defa ,_fbbg :=_fbc .(*_d .PageInformationSegment );if !_fbbg {return _caf .Error (_egac ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006da\u0074\u0069\u006f\u006e \u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070\u0065");};if _dbg =_abe .createPage (_defa );_dbg !=nil {return _caf .Wrap (_dbg ,_egac ,"");};_abe .clearSegmentData ();return nil ;};func (_bca *Globals )GetSegment (segmentNumber int )(*_d .Header ,error ){const _ccd ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _bca ==nil {return nil ,_caf .Error (_ccd ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_bca .Segments )==0{return nil ,_caf .Error (_ccd ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _abac *_d .Header ;for _ ,_abac =range _bca .Segments {if _abac .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _abac ==nil {return nil ,_caf .Error (_ccd ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _abac ,nil ;};func (_dgg *Document )completeClassifiedPages ()(_bg error ){const _cag ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";if _dgg .Classer ==nil {return nil ;};_dgg ._ee =make ([]int ,_dgg .Classer .UndilatedTemplates .Size ());for _fbb :=0;_fbb < _dgg .Classer .ClassIDs .Size ();_fbb ++{_bd ,_bea :=_dgg .Classer .ClassIDs .Get (_fbb );if _bea !=nil {return _caf .Wrapf (_bea ,_cag ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_fbb );};_dgg ._ee [_bd ]++;};var _eb []int ;for _af :=0;_af < _dgg .Classer .UndilatedTemplates .Size ();_af ++{if _dgg .NumberOfPages ==1||_dgg ._ee [_af ]> 1{_eb =append (_eb ,_af );};};var (_ddb *Page ;_dfb bool ;);for _ab ,_bc :=range *_dgg .Classer .ComponentPageNumbers {if _ddb ,_dfb =_dgg .Pages [_bc ];!_dfb {return _caf .Errorf (_cag ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ab );};if _ddb .EncodingMethod ==GenericEM {_fb .Log .Error ("\u0047\u0065\u006e\u0065\u0072\u0069c\u0020\u0070\u0061g\u0065\u0020\u0077i\u0074\u0068\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020ma\u0070\u0070\u0065\u0064\u0020\u0061\u0073\u0020\u0063\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0020\u0070\u0061\u0067\u0065",_ab );continue ;};_dgg ._cc [_bc ]=append (_dgg ._cc [_bc ],_ab );_bbe ,_afc :=_dgg .Classer .ClassIDs .Get (_ab );if _afc !=nil {return _caf .Wrapf (_afc ,_cag ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_ab );};if _dgg ._ee [_bbe ]==1&&_dgg .NumberOfPages !=1{_gdg :=append (_dgg ._fed [_bc ],_bbe );_dgg ._fed [_bc ]=_gdg ;};};if _bg =_dgg .Classer .ComputeLLCorners ();_bg !=nil {return _caf .Wrap (_bg ,_cag ,"");};if _ ,_bg =_dgg .addSymbolDictionary (0,_dgg .Classer .UndilatedTemplates ,_eb ,_dgg ._df ,false );_bg !=nil {return _caf .Wrap (_bg ,_cag ,"");};return nil ;};func (_cfg *Page )getPageInformationSegment ()*_d .Header {for _ ,_adgg :=range _cfg .Segments {if _adgg .Type ==_d .TPageInformation {return _adgg ;};};_fb .Log .Debug ("\u0050\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0066o\u0072\u0020\u0070\u0061\u0067\u0065\u003a\u0020%\u0073\u002e",_cfg );return nil ;};func (_efg *Document )isFileHeaderPresent ()(bool ,error ){_efg .InputStream .Mark ();for _ ,_aag :=range _ffc {_dcb ,_gfb :=_efg .InputStream .ReadByte ();if _gfb !=nil {return false ,_gfb ;};if _aag !=_dcb {_efg .InputStream .Reset ();return false ,nil ;};};_efg .InputStream .Reset ();return true ,nil ;};func (_dfg *Document )GetGlobalSegment (i int )(*_d .Header ,error ){_eac ,_adf :=_dfg .GlobalSegments .GetSegment (i );if _adf !=nil {return nil ,_caf .Wrap (_adf ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");};return _eac ,nil ;};func (_agc *Document )produceClassifiedPage (_bef *Page ,_bf *_d .Header )(_abd error ){const _ba ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _cdg map[int ]int ;_gde :=_agc ._dd ;_eg :=[]*_d .Header {_bf };if len (_agc ._fed [_bef .PageNumber ])> 0{_cdg =map[int ]int {};_cfd ,_dgf :=_agc .addSymbolDictionary (_bef .PageNumber ,_agc .Classer .UndilatedTemplates ,_agc ._fed [_bef .PageNumber ],_cdg ,false );if _dgf !=nil {return _caf .Wrap (_dgf ,_ba ,"");};_eg =append (_eg ,_cfd );_gde +=len (_agc ._fed [_bef .PageNumber ]);};_cdd :=_agc ._cc [_bef .PageNumber ];_fb .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_bef .PageNumber ,_cdd );_bef .addTextRegionSegment (_eg ,_agc ._df ,_cdg ,_agc ._cc [_bef .PageNumber ],_agc .Classer .PtaLL ,_agc .Classer .UndilatedTemplates ,_agc .Classer .ClassIDs ,nil ,_adc (_gde ),len (_agc ._cc [_bef .PageNumber ]));return nil ;};func (_gcg *Page )AddGenericRegion (bm *_a .Bitmap ,xloc ,yloc ,template int ,tp _d .Type ,duplicateLineRemoval bool )error {const _abga ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_cbd :=&_d .GenericRegion {};if _ead :=_cbd .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_ead !=nil {return _caf .Wrap (_ead ,_abga ,"");};_edd :=&_d .Header {Type :_d .TImmediateGenericRegion ,PageAssociation :_gcg .PageNumber ,SegmentData :_cbd };_gcg .Segments =append (_gcg .Segments ,_edd );return nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_b :_fc .BufferedMSB (),Pages :map[int ]*Page {},_fed :map[int ][]int {},_df :map[int ]int {},_cc :map[int ][]int {}};};func (_adfe *Page )String ()string {return _e .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_adfe .PageNumber );};func (_bcff *Page )GetHeight ()(int ,error ){return _bcff .getHeight ()};func (_faf *Page )AddEndOfPageSegment (){_cgc :=&_d .Header {Type :_d .TEndOfPage ,PageAssociation :_faf .PageNumber };_faf .Segments =append (_faf .Segments ,_cgc );};func (_gea *Page )getResolutionY ()(int ,error ){const _eedca ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _gea .ResolutionY !=0{return _gea .ResolutionY ,nil ;};_fec :=_gea .getPageInformationSegment ();if _fec ==nil {return 0,_caf .Error (_eedca ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_cga ,_feb :=_fec .GetSegmentData ();if _feb !=nil {return 0,_caf .Wrap (_feb ,_eedca ,"");};_gca ,_geef :=_cga .(*_d .PageInformationSegment );if !_geef {return 0,_caf .Errorf (_eedca ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0074\u0079\u0070\u0065\u003a\u0027%\u0054\u0027",_cga );};_gea .ResolutionY =_gca .ResolutionY ;return _gea .ResolutionY ,nil ;};func _ggae (_ecb *Document ,_cddf int )*Page {return &Page {Document :_ecb ,PageNumber :_cddf ,Segments :[]*_d .Header {}};};type Page struct{Segments []*_d .Header ;PageNumber int ;Bitmap *_a .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;};func (_beg *Globals )GetSymbolDictionary ()(*_d .Header ,error ){const _ecdf ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";if _beg ==nil {return nil ,_caf .Error (_ecdf ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_beg .Segments )==0{return nil ,_caf .Error (_ecdf ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};for _ ,_agba :=range _beg .Segments {if _agba .Type ==_d .TSymbolDictionary {return _agba ,nil ;};};return nil ,_caf .Error (_ecdf ,"\u0067\u006c\u006fba\u006c\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u0020d\u0069c\u0074i\u006fn\u0061\u0072\u0079\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};func (_cdc *Globals )AddSegment (segment *_d .Header ){_cdc .Segments =append (_cdc .Segments ,segment )};type Globals struct{Segments []*_d .Header ;};func (_egg *Page )lastSegmentNumber ()(_bge uint32 ,_eccb error ){const _fbg ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_egg .Segments )==0{return _bge ,_caf .Errorf (_fbg ,"\u006e\u006f\u0020se\u0067\u006d\u0065\u006e\u0074\u0073\u0020\u0066\u006fu\u006ed\u0020i\u006e \u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027",_egg .PageNumber );};return _egg .Segments [len (_egg .Segments )-1].SegmentNumber ,nil ;};func (_bac *Page )countRegions ()int {var _gee int ;for _ ,_begd :=range _bac .Segments {switch _begd .Type {case 6,7,22,23,38,39,42,43:_gee ++;};};return _gee ;};func (_ecc *Page )addTextRegionSegment (_dgfa []*_d .Header ,_eea ,_fggd map[int ]int ,_eaa []int ,_cbf *_a .Points ,_dgff *_a .Bitmaps ,_ceee *_cf .IntSlice ,_cbda *_a .Boxes ,_bec ,_caff int ){_feg :=&_d .TextRegion {NumberOfSymbols :uint32 (_caff )};_feg .InitEncode (_eea ,_fggd ,_eaa ,_cbf ,_dgff ,_ceee ,_cbda ,_ecc .FinalWidth ,_ecc .FinalHeight ,_bec );_gdb :=&_d .Header {RTSegments :_dgfa ,SegmentData :_feg ,PageAssociation :_ecc .PageNumber ,Type :_d .TImmediateTextRegion };_afa :=_d .TPageInformation ;if _fggd !=nil {_afa =_d .TSymbolDictionary ;};var _gac int ;for ;_gac < len (_ecc .Segments );_gac ++{if _ecc .Segments [_gac ].Type ==_afa {_gac ++;break ;};};_ecc .Segments =append (_ecc .Segments ,nil );copy (_ecc .Segments [_gac +1:],_ecc .Segments [_gac :]);_ecc .Segments [_gac ]=_gdb ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_gba *Page )GetResolutionX ()(int ,error ){return _gba .getResolutionX ()};func (_eca *Document )Encode ()(_gab []byte ,_cad error ){const _acc ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _bff ,_eed int ;if _eca .FullHeaders {if _bff ,_cad =_eca .encodeFileHeader (_eca ._b );_cad !=nil {return nil ,_caf .Wrap (_cad ,_acc ,"");};};var (_ffe bool ;_eee *_d .Header ;_cg *Page ;);if _cad =_eca .completeClassifiedPages ();_cad !=nil {return nil ,_caf .Wrap (_cad ,_acc ,"");};if _cad =_eca .produceClassifiedPages ();_cad !=nil {return nil ,_caf .Wrap (_cad ,_acc ,"");};if _eca .GlobalSegments !=nil {for _ ,_eee =range _eca .GlobalSegments .Segments {if _cad =_eca .encodeSegment (_eee ,&_bff );_cad !=nil {return nil ,_caf .Wrap (_cad ,_acc ,"");};};};for _eba :=1;_eba <=int (_eca .NumberOfPages );_eba ++{if _cg ,_ffe =_eca .Pages [_eba ];!_ffe {return nil ,_caf .Errorf (_acc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_eba );};for _ ,_eee =range _cg .Segments {if _cad =_eca .encodeSegment (_eee ,&_bff );_cad !=nil {return nil ,_caf .Wrap (_cad ,_acc ,"");};};};if _eca .FullHeaders {if _eed ,_cad =_eca .encodeEOFHeader (_eca ._b );_cad !=nil {return nil ,_caf .Wrap (_cad ,_acc ,"");};_bff +=_eed ;};_gab =_eca ._b .Data ();if len (_gab )!=_bff {_fb .Log .Debug ("\u0042\u0079\u0074\u0065\u0073 \u0077\u0072\u0069\u0074\u0074\u0065\u006e \u0028\u006e\u0029\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u006f\u0020\u0074\u0068\u0065\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u006f\u0066\u0020t\u0068\u0065\u0020\u0064\u0061\u0074\u0061\u0020\u0065\u006e\u0063\u006fd\u0065\u0064\u003a\u0020\u0027\u0025d\u0027",_bff ,len (_gab ));};return _gab ,nil ;};func _efgb (_fgb _fc .StreamReader ,_bgd *Globals )(*Document ,error ){_gcfg :=&Document {Pages :make (map[int ]*Page ),InputStream :_fgb ,OrganizationType :_d .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_bgd ,_gg :9};if _gcfg .GlobalSegments ==nil {_gcfg .GlobalSegments =&Globals {};};if _aed :=_gcfg .mapData ();_aed !=nil {return nil ,_aed ;};return _gcfg ,nil ;};func (_deg *Page )collectPageStripes ()(_cdb []_d .Segmenter ,_cgbc error ){const _feef ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _egb _d .Segmenter ;for _ ,_abb :=range _deg .Segments {switch _abb .Type {case 6,7,22,23,38,39,42,43:_egb ,_cgbc =_abb .GetSegmentData ();if _cgbc !=nil {return nil ,_caf .Wrap (_cgbc ,_feef ,"");};_cdb =append (_cdb ,_egb );case 50:_egb ,_cgbc =_abb .GetSegmentData ();if _cgbc !=nil {return nil ,_cgbc ;};_aga ,_gabf :=_egb .(*_d .EndOfStripe );if !_gabf {return nil ,_caf .Errorf (_feef ,"\u0045\u006e\u0064\u004f\u0066\u0053\u0074\u0072\u0069\u0070\u0065\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u006f\u0066\u0020\u0076\u0061l\u0069\u0064\u0020\u0074\u0079p\u0065\u003a \u0027\u0025\u0054\u0027",_egb );};_cdb =append (_cdb ,_aga );_deg .FinalHeight =_aga .LineNumber ();};};return _cdb ,nil ;};func (_bfa *Page )getResolutionX ()(int ,error ){const _bgc ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _bfa .ResolutionX !=0{return _bfa .ResolutionX ,nil ;};_gcfb :=_bfa .getPageInformationSegment ();if _gcfb ==nil {return 0,_caf .Error (_bgc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_dbc ,_abdeg :=_gcfb .GetSegmentData ();if _abdeg !=nil {return 0,_caf .Wrap (_abdeg ,_bgc ,"");};_fbbeb ,_eaf :=_dbc .(*_d .PageInformationSegment );if !_eaf {return 0,_caf .Errorf (_bgc ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_dbc );};_bfa .ResolutionX =_fbbeb .ResolutionX ;return _bfa .ResolutionX ,nil ;};func DecodeDocument (input _fc .StreamReader ,globals *Globals )(*Document ,error ){return _efgb (input ,globals );};func (_gfd *Document )reachedEOF (_geb int64 )(bool ,error ){const _agf ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_gfc :=_gfd .InputStream .Seek (_geb ,_ca .SeekStart );if _gfc !=nil {_fb .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",_gfc );return false ,_caf .Wrap (_gfc ,_agf ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_gfc =_gfd .InputStream .ReadBits (32);if _gfc ==_ca .EOF {return true ,nil ;}else if _gfc !=nil {return false ,_caf .Wrap (_gfc ,_agf ,"");};return false ,nil ;};func (_bbc *Document )nextSegmentNumber ()uint32 {_ecd :=_bbc .CurrentSegmentNumber ;_bbc .CurrentSegmentNumber ++;return _ecd ;};func (_bgdg *Page )createPage (_gge *_d .PageInformationSegment )error {var _fff error ;if !_gge .IsStripe ||_gge .PageBMHeight !=-1{_fff =_bgdg .createNormalPage (_gge );}else {_fff =_bgdg .createStripedPage (_gge );};return _fff ;};func (_dag *Document )GetPage (pageNumber int )(_d .Pager ,error ){const _cecb ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_fb .Log .Debug ("\u004a\u0042\u0049\u00472\u0020\u0050\u0061\u0067\u0065\u0020\u002d\u0020\u0047e\u0074\u0050\u0061\u0067\u0065\u003a\u0020\u0025\u0064\u002e\u0020\u0050\u0061\u0067\u0065\u0020\u0063\u0061n\u006e\u006f\u0074\u0020\u0062e\u0020\u006c\u006f\u0077\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0030\u002e\u0020\u0025\u0073",pageNumber ,_g .Stack ());return nil ,_caf .Errorf (_cecb ,"\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032\u0020d\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u002d\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064 \u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a\u0020\u0025\u0064",pageNumber );};if pageNumber > len (_dag .Pages ){_fb .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_g .Stack ());return nil ,_caf .Error (_cecb ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};_ggg ,_eef :=_dag .Pages [pageNumber ];if !_eef {_fb .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_g .Stack ());return nil ,_caf .Errorf (_cecb ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _ggg ,nil ;};func (_fg *Document )AddGenericPage (bm *_a .Bitmap ,duplicateLineRemoval bool )(_dg error ){const _be ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";if !_fg .FullHeaders &&_fg .NumberOfPages !=0{return _caf .Error (_be ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");};_ea :=&Page {Segments :[]*_d .Header {},Bitmap :bm ,Document :_fg ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true };_ea .PageNumber =int (_fg .nextPageNumber ());_fg .Pages [_ea .PageNumber ]=_ea ;_ea .AddPageInformationSegment ();if _dg =_ea .AddGenericRegion (bm ,0,0,0,_d .TImmediateGenericRegion ,duplicateLineRemoval );_dg !=nil {return _caf .Wrap (_dg ,_be ,"");};if _fg .FullHeaders {_ea .AddEndOfPageSegment ();};return nil ;};func (_ef *Document )GetNumberOfPages ()(uint32 ,error ){if _ef .NumberOfPagesUnknown ||_ef .NumberOfPages ==0{if len (_ef .Pages )==0{if _aba :=_ef .mapData ();_aba !=nil {return 0,_caf .Wrap (_aba ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_ef .Pages )),nil ;};return _ef .NumberOfPages ,nil ;};func (_cff *Page )GetBitmap ()(_fdb *_a .Bitmap ,_add error ){_fb .Log .Trace (_e .Sprintf ("\u005b\u0050\u0041G\u0045\u005d\u005b\u0023%\u0064\u005d\u0020\u0047\u0065\u0074\u0042i\u0074\u006d\u0061\u0070\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e",_cff .PageNumber ));defer func (){if _add !=nil {_fb .Log .Trace (_e .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064\u005d\u0020\u0047\u0065\u0074B\u0069t\u006d\u0061\u0070\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_cff .PageNumber ,_add ));}else {_fb .Log .Trace (_e .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064]\u0020\u0047\u0065\u0074\u0042\u0069\u0074m\u0061\u0070\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064",_cff .PageNumber ));};}();if _cff .Bitmap !=nil {return _cff .Bitmap ,nil ;};_add =_cff .composePageBitmap ();if _add !=nil {return nil ,_add ;};return _cff .Bitmap ,nil ;};func (_dbb *Page )getCombinationOperator (_aec *_d .PageInformationSegment ,_fge _a .CombinationOperator )_a .CombinationOperator {if _aec .CombinationOperatorOverrideAllowed (){return _fge ;};return _aec .CombinationOperator ();};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _fc .StreamReader ;GlobalSegments *Globals ;OrganizationType _d .OrganizationType ;Classer *_fe .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_a .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_gg uint8 ;_b *_fc .BufferedWriter ;EncodeGlobals bool ;_dd int ;_fed map[int ][]int ;_cc map[int ][]int ;_ee []int ;_df map[int ]int ;};func (_gacb *Page )getHeight ()(int ,error ){const _eebc ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _gacb .FinalHeight !=0{return _gacb .FinalHeight ,nil ;};_fafg :=_gacb .getPageInformationSegment ();if _fafg ==nil {return 0,_caf .Error (_eebc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_cgf ,_eddg :=_fafg .GetSegmentData ();if _eddg !=nil {return 0,_caf .Wrap (_eddg ,_eebc ,"");};_cbfg ,_bbgc :=_cgf .(*_d .PageInformationSegment );if !_bbgc {return 0,_caf .Errorf (_eebc ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_cgf );};if _cbfg .PageBMHeight ==_ff .MaxInt32 {_ ,_eddg =_gacb .GetBitmap ();if _eddg !=nil {return 0,_caf .Wrap (_eddg ,_eebc ,"");};}else {_gacb .FinalHeight =_cbfg .PageBMHeight ;};return _gacb .FinalHeight ,nil ;};func (_fegf *Page )nextSegmentNumber ()uint32 {return _fegf .Document .nextSegmentNumber ()};func (_edc *Page )GetWidth ()(int ,error ){return _edc .getWidth ()};type EncodingMethod int ;func (_dfd *Page )clearSegmentData (){for _cgea :=range _dfd .Segments {_dfd .Segments [_cgea ].CleanSegmentData ();};};func (_cec *Document )encodeSegment (_aab *_d .Header ,_dca *int )error {const _ced ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_aab .SegmentNumber =_cec .nextSegmentNumber ();_agb ,_cee :=_aab .Encode (_cec ._b );if _cee !=nil {return _caf .Wrapf (_cee ,_ced ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_aab .SegmentNumber );};*_dca +=_agb ;return nil ;};func (_dga *Page )createStripedPage (_ecda *_d .PageInformationSegment )error {const _ffed ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_eeb ,_adcb :=_dga .collectPageStripes ();if _adcb !=nil {return _caf .Wrap (_adcb ,_ffed ,"");};var _baf int ;for _ ,_dcd :=range _eeb {if _dgef ,_dcf :=_dcd .(*_d .EndOfStripe );_dcf {_baf =_dgef .LineNumber ()+1;}else {_dea :=_dcd .(_d .Regioner );_ecg :=_dea .GetRegionInfo ();_ggc :=_dga .getCombinationOperator (_ecda ,_ecg .CombinaionOperator );_ffa ,_dac :=_dea .GetRegionBitmap ();if _dac !=nil {return _caf .Wrap (_dac ,_ffed ,"");};_dac =_a .Blit (_ffa ,_dga .Bitmap ,int (_ecg .XLocation ),_baf ,_ggc );if _dac !=nil {return _caf .Wrap (_dac ,_ffed ,"");};};};return nil ;};func (_abda *Document )nextPageNumber ()uint32 {_abda .NumberOfPages ++;return _abda .NumberOfPages };func (_gdf *Page )fitsPage (_dda *_d .PageInformationSegment ,_adcc *_a .Bitmap )bool {return _gdf .countRegions ()==1&&_dda .DefaultPixelValue ()==0&&_dda .PageBMWidth ==_adcc .Width &&_dda .PageBMHeight ==_adcc .Height ;}; |