mirror of
https://github.com/unidoc/unipdf.git
synced 2025-05-05 19:30:30 +08:00
131 lines
40 KiB
Go
131 lines
40 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 (_b "encoding/binary";_eb "fmt";_ec "github.com/unidoc/unipdf/v3/common";_ab "github.com/unidoc/unipdf/v3/internal/bitwise";_af "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_g "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
|
|
_ef "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_aa "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_abc "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_ee "io";_e "math";_bg "runtime/debug";);func (_cc *Document )GetNumberOfPages ()(uint32 ,error ){if _cc .NumberOfPagesUnknown ||_cc .NumberOfPages ==0{if len (_cc .Pages )==0{if _bdd :=_cc .mapData ();
|
|
_bdd !=nil {return 0,_abc .Wrap (_bdd ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_cc .Pages )),nil ;};return _cc .NumberOfPages ,nil ;};func (_gd *Document )AddGenericPage (bm *_g .Bitmap ,duplicateLineRemoval bool )(_bb error ){const _ce ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
|
|
if !_gd .FullHeaders &&_gd .NumberOfPages !=0{return _abc .Error (_ce ,"\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");
|
|
};_abg :=&Page {Segments :[]*_ef .Header {},Bitmap :bm ,Document :_gd ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_g .Chocolate };_abg .PageNumber =int (_gd .nextPageNumber ());_gd .Pages [_abg .PageNumber ]=_abg ;
|
|
bm .InverseData ();_abg .AddPageInformationSegment ();if _bb =_abg .AddGenericRegion (bm ,0,0,0,_ef .TImmediateGenericRegion ,duplicateLineRemoval );_bb !=nil {return _abc .Wrap (_bb ,_ce ,"");};if _gd .FullHeaders {_abg .AddEndOfPageSegment ();};return nil ;
|
|
};func (_aebe *Page )getResolutionX ()(int ,error ){const _abb ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _aebe .ResolutionX !=0{return _aebe .ResolutionX ,nil ;};_cdfc :=_aebe .getPageInformationSegment ();if _cdfc ==nil {return 0,_abc .Error (_abb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
|
|
};_dgg ,_deb :=_cdfc .GetSegmentData ();if _deb !=nil {return 0,_abc .Wrap (_deb ,_abb ,"");};_cff ,_bfa :=_dgg .(*_ef .PageInformationSegment );if !_bfa {return 0,_abc .Errorf (_abb ,"\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",_dgg );
|
|
};_aebe .ResolutionX =_cff .ResolutionX ;return _aebe .ResolutionX ,nil ;};func _ae (_bc int )int {_fa :=0;_bgb :=(_bc &(_bc -1))==0;_bc >>=1;for ;_bc !=0;_bc >>=1{_fa ++;};if _bgb {return _fa ;};return _fa +1;};func (_eed *Page )fitsPage (_bfd *_ef .PageInformationSegment ,_babb *_g .Bitmap )bool {return _eed .countRegions ()==1&&_bfd .DefaultPixelValue ==0&&_bfd .PageBMWidth ==_babb .Width &&_bfd .PageBMHeight ==_babb .Height ;
|
|
};func (_aeb *Document )parseFileHeader ()error {const _agc ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_bfg :=_aeb .InputStream .Seek (8,_ee .SeekStart );if _bfg !=nil {return _abc .Wrap (_bfg ,_agc ,"\u0069\u0064");
|
|
};_ ,_bfg =_aeb .InputStream .ReadBits (5);if _bfg !=nil {return _abc .Wrap (_bfg ,_agc ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_ceeg ,_bfg :=_aeb .InputStream .ReadBit ();if _bfg !=nil {return _abc .Wrap (_bfg ,_agc ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");
|
|
};if _ceeg ==1{_aeb .GBUseExtTemplate =true ;};_ceeg ,_bfg =_aeb .InputStream .ReadBit ();if _bfg !=nil {return _abc .Wrap (_bfg ,_agc ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _ceeg !=1{_aeb .NumberOfPagesUnknown =false ;
|
|
};_ceeg ,_bfg =_aeb .InputStream .ReadBit ();if _bfg !=nil {return _abc .Wrap (_bfg ,_agc ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_aeb .OrganizationType =_ef .OrganizationType (_ceeg );if !_aeb .NumberOfPagesUnknown {_aeb .NumberOfPages ,_bfg =_aeb .InputStream .ReadUint32 ();
|
|
if _bfg !=nil {return _abc .Wrap (_bfg ,_agc ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_aeb ._c =13;};return nil ;};func (_eab *Globals )GetSymbolDictionary ()(*_ef .Header ,error ){const _deda ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
|
|
if _eab ==nil {return nil ,_abc .Error (_deda ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_eab .Segments )==0{return nil ,_abc .Error (_deda ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};for _ ,_ccf :=range _eab .Segments {if _ccf .Type ==_ef .TSymbolDictionary {return _ccf ,nil ;};};return nil ,_abc .Error (_deda ,"\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 DecodeDocument (input *_ab .Reader ,globals *Globals )(*Document ,error ){return _bgc (input ,globals );};func (_eg *Document )encodeFileHeader (_cbd _ab .BinaryWriter )(_cad int ,_edbg error ){const _ggg ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
|
|
_cad ,_edbg =_cbd .Write (_ga );if _edbg !=nil {return _cad ,_abc .Wrap (_edbg ,_ggg ,"\u0069\u0064");};if _edbg =_cbd .WriteByte (0x01);_edbg !=nil {return _cad ,_abc .Wrap (_edbg ,_ggg ,"\u0066\u006c\u0061g\u0073");};_cad ++;_gaa :=make ([]byte ,4);_b .BigEndian .PutUint32 (_gaa ,_eg .NumberOfPages );
|
|
_bab ,_edbg :=_cbd .Write (_gaa );if _edbg !=nil {return _bab ,_abc .Wrap (_edbg ,_ggg ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_cad +=_bab ;return _cad ,nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_f :_ab .BufferedMSB (),Pages :map[int ]*Page {},_d :map[int ][]int {},_gag :map[int ]int {},_abcc :map[int ][]int {}};
|
|
};func (_dae *Page )getWidth ()(int ,error ){const _bac ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _dae .FinalWidth !=0{return _dae .FinalWidth ,nil ;};_gdd :=_dae .getPageInformationSegment ();if _gdd ==nil {return 0,_abc .Error (_bac ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
|
|
};_dac ,_gab :=_gdd .GetSegmentData ();if _gab !=nil {return 0,_abc .Wrap (_gab ,_bac ,"");};_edde ,_eeac :=_dac .(*_ef .PageInformationSegment );if !_eeac {return 0,_abc .Errorf (_bac ,"\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",_dac );
|
|
};_dae .FinalWidth =_edde .PageBMWidth ;return _dae .FinalWidth ,nil ;};func (_acd *Page )GetHeight ()(int ,error ){return _acd .getHeight ()};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_cgd *Page )createStripedPage (_bad *_ef .PageInformationSegment )error {const _abdf ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";
|
|
_cfd ,_gbg :=_cgd .collectPageStripes ();if _gbg !=nil {return _abc .Wrap (_gbg ,_abdf ,"");};var _eabc int ;for _ ,_bbg :=range _cfd {if _ace ,_aeec :=_bbg .(*_ef .EndOfStripe );_aeec {_eabc =_ace .LineNumber ()+1;}else {_aef :=_bbg .(_ef .Regioner );
|
|
_gbfc :=_aef .GetRegionInfo ();_fdc :=_cgd .getCombinationOperator (_bad ,_gbfc .CombinaionOperator );_geg ,_dfc :=_aef .GetRegionBitmap ();if _dfc !=nil {return _abc .Wrap (_dfc ,_abdf ,"");};_dfc =_g .Blit (_geg ,_cgd .Bitmap ,int (_gbfc .XLocation ),_eabc ,_fdc );
|
|
if _dfc !=nil {return _abc .Wrap (_dfc ,_abdf ,"");};};};return nil ;};func (_afee *Page )getResolutionY ()(int ,error ){const _baaeg ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _afee .ResolutionY !=0{return _afee .ResolutionY ,nil ;
|
|
};_bddd :=_afee .getPageInformationSegment ();if _bddd ==nil {return 0,_abc .Error (_baaeg ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_acbb ,_dfb :=_bddd .GetSegmentData ();if _dfb !=nil {return 0,_abc .Wrap (_dfb ,_baaeg ,"");
|
|
};_cedb ,_dfa :=_acbb .(*_ef .PageInformationSegment );if !_dfa {return 0,_abc .Errorf (_baaeg ,"\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",_acbb );
|
|
};_afee .ResolutionY =_cedb .ResolutionY ;return _afee .ResolutionY ,nil ;};func (_abf *Document )encodeEOFHeader (_fac _ab .BinaryWriter )(_fce int ,_gbec error ){_bge :=&_ef .Header {SegmentNumber :_abf .nextSegmentNumber (),Type :_ef .TEndOfFile };if _fce ,_gbec =_bge .Encode (_fac );
|
|
_gbec !=nil {return 0,_abc .Wrap (_gbec ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _fce ,nil ;};func (_bga *Page )getCombinationOperator (_afdf *_ef .PageInformationSegment ,_cfcd _g .CombinationOperator )_g .CombinationOperator {if _afdf .CombinationOperatorOverrideAllowed (){return _cfcd ;
|
|
};return _afdf .CombinationOperator ();};func (_bgee *Document )isFileHeaderPresent ()(bool ,error ){_bgee .InputStream .Mark ();for _ ,_bff :=range _ga {_fcb ,_ada :=_bgee .InputStream .ReadByte ();if _ada !=nil {return false ,_ada ;};if _bff !=_fcb {_bgee .InputStream .Reset ();
|
|
return false ,nil ;};};_bgee .InputStream .Reset ();return true ,nil ;};func _bgc (_adfa *_ab .Reader ,_df *Globals )(*Document ,error ){_aca :=&Document {Pages :make (map[int ]*Page ),InputStream :_adfa ,OrganizationType :_ef .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_df ,_c :9};
|
|
if _aca .GlobalSegments ==nil {_aca .GlobalSegments =&Globals {};};if _gea :=_aca .mapData ();_gea !=nil {return nil ,_gea ;};return _aca ,nil ;};func (_ed *Document )produceClassifiedPages ()(_bd error ){const _ggf ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
|
|
if _ed .Classer ==nil {return nil ;};var (_cee *Page ;_cb bool ;_aab *_ef .Header ;);for _ge :=1;_ge <=int (_ed .NumberOfPages );_ge ++{if _cee ,_cb =_ed .Pages [_ge ];!_cb {return _abc .Errorf (_ggf ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ge );
|
|
};if _cee .EncodingMethod ==GenericEM {continue ;};if _aab ==nil {if _aab ,_bd =_ed .GlobalSegments .GetSymbolDictionary ();_bd !=nil {return _abc .Wrap (_bd ,_ggf ,"");};};if _bd =_ed .produceClassifiedPage (_cee ,_aab );_bd !=nil {return _abc .Wrapf (_bd ,_ggf ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_ge );
|
|
};};return nil ;};func (_ecf *Page )getHeight ()(int ,error ){const _eaac ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _ecf .FinalHeight !=0{return _ecf .FinalHeight ,nil ;};_fgef :=_ecf .getPageInformationSegment ();if _fgef ==nil {return 0,_abc .Error (_eaac ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
|
|
};_ega ,_gfgc :=_fgef .GetSegmentData ();if _gfgc !=nil {return 0,_abc .Wrap (_gfgc ,_eaac ,"");};_bcfa ,_bgef :=_ega .(*_ef .PageInformationSegment );if !_bgef {return 0,_abc .Errorf (_eaac ,"\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",_ega );
|
|
};if _bcfa .PageBMHeight ==_e .MaxInt32 {_ ,_gfgc =_ecf .GetBitmap ();if _gfgc !=nil {return 0,_abc .Wrap (_gfgc ,_eaac ,"");};}else {_ecf .FinalHeight =_bcfa .PageBMHeight ;};return _ecf .FinalHeight ,nil ;};func (_fdbc *Page )Encode (w _ab .BinaryWriter )(_baae int ,_aeea error ){const _fcdc ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
var _ccd int ;for _ ,_ffbf :=range _fdbc .Segments {if _ccd ,_aeea =_ffbf .Encode (w );_aeea !=nil {return _baae ,_abc .Wrap (_aeea ,_fcdc ,"");};_baae +=_ccd ;};return _baae ,nil ;};func (_gae *Document )produceClassifiedPage (_abd *Page ,_da *_ef .Header )(_dga error ){const _ebf ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
|
|
var _afb map[int ]int ;_dcg :=_gae ._bgf ;_ddc :=[]*_ef .Header {_da };if len (_gae ._d [_abd .PageNumber ])> 0{_afb =map[int ]int {};_ad ,_cea :=_gae .addSymbolDictionary (_abd .PageNumber ,_gae .Classer .UndilatedTemplates ,_gae ._d [_abd .PageNumber ],_afb ,false );
|
|
if _cea !=nil {return _abc .Wrap (_cea ,_ebf ,"");};_ddc =append (_ddc ,_ad );_dcg +=len (_gae ._d [_abd .PageNumber ]);};_ffb :=_gae ._abcc [_abd .PageNumber ];_ec .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_abd .PageNumber ,_ffb );
|
|
_abd .addTextRegionSegment (_ddc ,_gae ._gag ,_afb ,_gae ._abcc [_abd .PageNumber ],_gae .Classer .PtaLL ,_gae .Classer .UndilatedTemplates ,_gae .Classer .ClassIDs ,nil ,_ae (_dcg ),len (_gae ._abcc [_abd .PageNumber ]));return nil ;};func (_cgf *Globals )GetSegmentByIndex (index int )(*_ef .Header ,error ){const _baa ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";
|
|
if _cgf ==nil {return nil ,_abc .Error (_baa ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_cgf .Segments )==0{return nil ,_abc .Error (_baa ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};if index > len (_cgf .Segments )-1{return nil ,_abc .Error (_baa ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _cgf .Segments [index ],nil ;};func (_adfg *Page )nextSegmentNumber ()uint32 {return _adfg .Document .nextSegmentNumber ()};
|
|
func (_ba *Document )AddClassifiedPage (bm *_g .Bitmap ,method _aa .Method )(_ff error ){const _gg ="\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 !_ba .FullHeaders &&_ba .NumberOfPages !=0{return _abc .Error (_gg ,"\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 _ba .Classer ==nil {if _ba .Classer ,_ff =_aa .Init (_aa .DefaultSettings ());_ff !=nil {return _abc .Wrap (_ff ,_gg ,"");};};_dc :=int (_ba .nextPageNumber ());_cef :=&Page {Segments :[]*_ef .Header {},Bitmap :bm ,Document :_ba ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_dc };
|
|
_ba .Pages [_dc ]=_cef ;switch method {case _aa .RankHaus :_cef .EncodingMethod =RankHausEM ;case _aa .Correlation :_cef .EncodingMethod =CorrelationEM ;};_cef .AddPageInformationSegment ();if _ff =_ba .Classer .AddPage (bm ,_dc ,method );_ff !=nil {return _abc .Wrap (_ff ,_gg ,"");
|
|
};if _ba .FullHeaders {_cef .AddEndOfPageSegment ();};return nil ;};func _faba (_dde *Document ,_gec int )*Page {return &Page {Document :_dde ,PageNumber :_gec ,Segments :[]*_ef .Header {}};};func (_cbb *Page )AddGenericRegion (bm *_g .Bitmap ,xloc ,yloc ,template int ,tp _ef .Type ,duplicateLineRemoval bool )error {const _cdga ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
|
|
_bda :=&_ef .GenericRegion {};if _dfe :=_bda .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_dfe !=nil {return _abc .Wrap (_dfe ,_cdga ,"");};_egd :=&_ef .Header {Type :_ef .TImmediateGenericRegion ,PageAssociation :_cbb .PageNumber ,SegmentData :_bda };
|
|
_cbb .Segments =append (_cbb .Segments ,_egd );return nil ;};type Page struct{Segments []*_ef .Header ;PageNumber int ;Bitmap *_g .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;
|
|
EncodingMethod EncodingMethod ;BlackIsOne bool ;};func (_ggd *Page )createNormalPage (_agb *_ef .PageInformationSegment )error {const _bdf ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_ggd .Bitmap =_g .New (_agb .PageBMWidth ,_agb .PageBMHeight );
|
|
if _agb .DefaultPixelValue !=0{_ggd .Bitmap .SetDefaultPixel ();};for _ ,_fdec :=range _ggd .Segments {switch _fdec .Type {case 6,7,22,23,38,39,42,43:_ec .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_fdec .SegmentNumber );
|
|
_aaf ,_eeaa :=_fdec .GetSegmentData ();if _eeaa !=nil {return _eeaa ;};_efc ,_ffd :=_aaf .(_ef .Regioner );if !_ffd {_ec .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",_aaf );
|
|
return _abc .Errorf (_bdf ,"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",_aaf );
|
|
};_acfc ,_eeaa :=_efc .GetRegionBitmap ();if _eeaa !=nil {return _abc .Wrap (_eeaa ,_bdf ,"");};if _ggd .fitsPage (_agb ,_acfc ){_ggd .Bitmap =_acfc ;}else {_dfd :=_efc .GetRegionInfo ();_fcad :=_ggd .getCombinationOperator (_agb ,_dfd .CombinaionOperator );
|
|
_eeaa =_g .Blit (_acfc ,_ggd .Bitmap ,int (_dfd .XLocation ),int (_dfd .YLocation ),_fcad );if _eeaa !=nil {return _abc .Wrap (_eeaa ,_bdf ,"");};};};};return nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;
|
|
GBUseExtTemplate bool ;InputStream *_ab .Reader ;GlobalSegments *Globals ;OrganizationType _ef .OrganizationType ;Classer *_aa .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_g .Bitmaps ;BaseIndexes []int ;Refinement bool ;
|
|
RefineLevel int ;_c uint8 ;_f *_ab .BufferedWriter ;EncodeGlobals bool ;_bgf int ;_d map[int ][]int ;_abcc map[int ][]int ;_fd []int ;_gag map[int ]int ;};func (_fcg *Document )GetPage (pageNumber int )(_ef .Pager ,error ){const _efg ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";
|
|
if pageNumber < 0{_ec .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 ,_bg .Stack ());
|
|
return nil ,_abc .Errorf (_efg ,"\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 (_fcg .Pages ){_ec .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_bg .Stack ());return nil ,_abc .Error (_efg ,"\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");
|
|
};_acb ,_acc :=_fcg .Pages [pageNumber ];if !_acc {_ec .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_bg .Stack ());return nil ,_abc .Errorf (_efg ,"\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 _acb ,nil ;};func (_aba *Page )collectPageStripes ()(_agg []_ef .Segmenter ,_gfcf error ){const _ggdb ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _ffa _ef .Segmenter ;for _ ,_gfff :=range _aba .Segments {switch _gfff .Type {case 6,7,22,23,38,39,42,43:_ffa ,_gfcf =_gfff .GetSegmentData ();
|
|
if _gfcf !=nil {return nil ,_abc .Wrap (_gfcf ,_ggdb ,"");};_agg =append (_agg ,_ffa );case 50:_ffa ,_gfcf =_gfff .GetSegmentData ();if _gfcf !=nil {return nil ,_gfcf ;};_fcbf ,_bbeg :=_ffa .(*_ef .EndOfStripe );if !_bbeg {return nil ,_abc .Errorf (_ggdb ,"\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",_ffa );
|
|
};_agg =append (_agg ,_fcbf );_aba .FinalHeight =_fcbf .LineNumber ();};};return _agg ,nil ;};func (_aed *Page )String ()string {return _eb .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_aed .PageNumber );};func (_gc *Document )nextPageNumber ()uint32 {_gc .NumberOfPages ++;
|
|
return _gc .NumberOfPages };func (_fgf *Page )AddEndOfPageSegment (){_ffc :=&_ef .Header {Type :_ef .TEndOfPage ,PageAssociation :_fgf .PageNumber };_fgf .Segments =append (_fgf .Segments ,_ffc );};func (_gcb *Page )GetBitmap ()(_cga *_g .Bitmap ,_gce error ){_ec .Log .Trace (_eb .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",_gcb .PageNumber ));
|
|
defer func (){if _gce !=nil {_ec .Log .Trace (_eb .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",_gcb .PageNumber ,_gce ));
|
|
}else {_ec .Log .Trace (_eb .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",_gcb .PageNumber ));};}();if _gcb .Bitmap !=nil {return _gcb .Bitmap ,nil ;
|
|
};_gce =_gcb .composePageBitmap ();if _gce !=nil {return nil ,_gce ;};return _gcb .Bitmap ,nil ;};func (_gbb *Document )GetGlobalSegment (i int )(*_ef .Header ,error ){_fae ,_bgg :=_gbb .GlobalSegments .GetSegment (i );if _bgg !=nil {return nil ,_abc .Wrap (_bgg ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
|
|
};return _fae ,nil ;};func (_agdd *Page )addTextRegionSegment (_afbd []*_ef .Header ,_dab ,_ddd map[int ]int ,_ede []int ,_efe *_g .Points ,_fbb *_g .Bitmaps ,_dff *_af .IntSlice ,_ecd *_g .Boxes ,_fdb ,_ccc int ){_egf :=&_ef .TextRegion {NumberOfSymbols :uint32 (_ccc )};
|
|
_egf .InitEncode (_dab ,_ddd ,_ede ,_efe ,_fbb ,_dff ,_ecd ,_agdd .FinalWidth ,_agdd .FinalHeight ,_fdb );_ddb :=&_ef .Header {RTSegments :_afbd ,SegmentData :_egf ,PageAssociation :_agdd .PageNumber ,Type :_ef .TImmediateTextRegion };_cde :=_ef .TPageInformation ;
|
|
if _ddd !=nil {_cde =_ef .TSymbolDictionary ;};var _afd int ;for ;_afd < len (_agdd .Segments );_afd ++{if _agdd .Segments [_afd ].Type ==_cde {_afd ++;break ;};};_agdd .Segments =append (_agdd .Segments ,nil );copy (_agdd .Segments [_afd +1:],_agdd .Segments [_afd :]);
|
|
_agdd .Segments [_afd ]=_ddb ;};func (_gf *Document )completeClassifiedPages ()(_cd error ){const _dg ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";if _gf .Classer ==nil {return nil ;
|
|
};_gf ._fd =make ([]int ,_gf .Classer .UndilatedTemplates .Size ());for _eee :=0;_eee < _gf .Classer .ClassIDs .Size ();_eee ++{_gff ,_gb :=_gf .Classer .ClassIDs .Get (_eee );if _gb !=nil {return _abc .Wrapf (_gb ,_dg ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_eee );
|
|
};_gf ._fd [_gff ]++;};var _cdf []int ;for _bbe :=0;_bbe < _gf .Classer .UndilatedTemplates .Size ();_bbe ++{if _gf .NumberOfPages ==1||_gf ._fd [_bbe ]> 1{_cdf =append (_cdf ,_bbe );};};var (_aad *Page ;_eea bool ;);for _db ,_dd :=range *_gf .Classer .ComponentPageNumbers {if _aad ,_eea =_gf .Pages [_dd ];
|
|
!_eea {return _abc .Errorf (_dg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_db );};if _aad .EncodingMethod ==GenericEM {_ec .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",_db );
|
|
continue ;};_gf ._abcc [_dd ]=append (_gf ._abcc [_dd ],_db );_gge ,_ecc :=_gf .Classer .ClassIDs .Get (_db );if _ecc !=nil {return _abc .Wrapf (_ecc ,_dg ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_db );
|
|
};if _gf ._fd [_gge ]==1&&_gf .NumberOfPages !=1{_dbe :=append (_gf ._d [_dd ],_gge );_gf ._d [_dd ]=_dbe ;};};if _cd =_gf .Classer .ComputeLLCorners ();_cd !=nil {return _abc .Wrap (_cd ,_dg ,"");};if _ ,_cd =_gf .addSymbolDictionary (0,_gf .Classer .UndilatedTemplates ,_cdf ,_gf ._gag ,false );
|
|
_cd !=nil {return _abc .Wrap (_cd ,_dg ,"");};return nil ;};func (_ded *Globals )GetSegment (segmentNumber int )(*_ef .Header ,error ){const _cdg ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _ded ==nil {return nil ,_abc .Error (_cdg ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_ded .Segments )==0{return nil ,_abc .Error (_cdg ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _gbd *_ef .Header ;for _ ,_gbd =range _ded .Segments {if _gbd .SegmentNumber ==uint32 (segmentNumber ){break ;
|
|
};};if _gbd ==nil {return nil ,_abc .Error (_cdg ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _gbd ,nil ;};func (_agde *Page )GetResolutionX ()(int ,error ){return _agde .getResolutionX ()};
|
|
func (_eaa *Document )Encode ()(_cfa []byte ,_bgba error ){const _eeg ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _bag ,_bbc int ;if _eaa .FullHeaders {if _bag ,_bgba =_eaa .encodeFileHeader (_eaa ._f );_bgba !=nil {return nil ,_abc .Wrap (_bgba ,_eeg ,"");
|
|
};};var (_bf bool ;_aga *_ef .Header ;_fcd *Page ;);if _bgba =_eaa .completeClassifiedPages ();_bgba !=nil {return nil ,_abc .Wrap (_bgba ,_eeg ,"");};if _bgba =_eaa .produceClassifiedPages ();_bgba !=nil {return nil ,_abc .Wrap (_bgba ,_eeg ,"");};if _eaa .GlobalSegments !=nil {for _ ,_aga =range _eaa .GlobalSegments .Segments {if _bgba =_eaa .encodeSegment (_aga ,&_bag );
|
|
_bgba !=nil {return nil ,_abc .Wrap (_bgba ,_eeg ,"");};};};for _bca :=1;_bca <=int (_eaa .NumberOfPages );_bca ++{if _fcd ,_bf =_eaa .Pages [_bca ];!_bf {return nil ,_abc .Errorf (_eeg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_bca );
|
|
};for _ ,_aga =range _fcd .Segments {if _bgba =_eaa .encodeSegment (_aga ,&_bag );_bgba !=nil {return nil ,_abc .Wrap (_bgba ,_eeg ,"");};};};if _eaa .FullHeaders {if _bbc ,_bgba =_eaa .encodeEOFHeader (_eaa ._f );_bgba !=nil {return nil ,_abc .Wrap (_bgba ,_eeg ,"");
|
|
};_bag +=_bbc ;};_cfa =_eaa ._f .Data ();if len (_cfa )!=_bag {_ec .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",_bag ,len (_cfa ));
|
|
};return _cfa ,nil ;};type Globals struct{Segments []*_ef .Header ;};func (_cca *Document )reachedEOF (_ebe int64 )(bool ,error ){const _fcgd ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_acg :=_cca .InputStream .Seek (_ebe ,_ee .SeekStart );
|
|
if _acg !=nil {_ec .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",_acg );
|
|
return false ,_abc .Wrap (_acg ,_fcgd ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_acg =_cca .InputStream .ReadBits (32);if _acg ==_ee .EOF {return true ,nil ;
|
|
}else if _acg !=nil {return false ,_abc .Wrap (_acg ,_fcgd ,"");};return false ,nil ;};var _ga =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_bbd *Page )GetResolutionY ()(int ,error ){return _bbd .getResolutionY ()};func (_gecg *Page )lastSegmentNumber ()(_aadb uint32 ,_ebab error ){const _dce ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";
|
|
if len (_gecg .Segments )==0{return _aadb ,_abc .Errorf (_dce ,"\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",_gecg .PageNumber );
|
|
};return _gecg .Segments [len (_gecg .Segments )-1].SegmentNumber ,nil ;};func (_efba *Page )composePageBitmap ()error {const _ebc ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _efba .PageNumber ==0{return nil ;
|
|
};_acga :=_efba .getPageInformationSegment ();if _acga ==nil {return _abc .Error (_ebc ,"\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");
|
|
};_cbc ,_bed :=_acga .GetSegmentData ();if _bed !=nil {return _bed ;};_ccac ,_afgf :=_cbc .(*_ef .PageInformationSegment );if !_afgf {return _abc .Error (_ebc ,"\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 _bed =_efba .createPage (_ccac );_bed !=nil {return _abc .Wrap (_bed ,_ebc ,"");};_efba .clearSegmentData ();return nil ;};func (_bffg *Page )countRegions ()int {var _eff int ;for _ ,_cgfe :=range _bffg .Segments {switch _cgfe .Type {case 6,7,22,23,38,39,42,43:_eff ++;
|
|
};};return _eff ;};func (_deg *Document )determineRandomDataOffsets (_ggb []*_ef .Header ,_dcb uint64 ){if _deg .OrganizationType !=_ef .ORandom {return ;};for _ ,_bdb :=range _ggb {_bdb .SegmentDataStartOffset =_dcb ;_dcb +=_bdb .SegmentDataLength ;};
|
|
};func (_bbb *Globals )AddSegment (segment *_ef .Header ){_bbb .Segments =append (_bbb .Segments ,segment )};func (_gceb *Page )GetSegment (number int )(*_ef .Header ,error ){const _fdfa ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
|
|
for _ ,_cbe :=range _gceb .Segments {if _cbe .SegmentNumber ==uint32 (number ){return _cbe ,nil ;};};_afg :=make ([]uint32 ,len (_gceb .Segments ));for _gca ,_efb :=range _gceb .Segments {_afg [_gca ]=_efb .SegmentNumber ;};return nil ,_abc .Errorf (_fdfa ,"\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 ,_gceb .PageNumber ,_afg );
|
|
};func (_baff *Document )nextSegmentNumber ()uint32 {_beg :=_baff .CurrentSegmentNumber ;_baff .CurrentSegmentNumber ++;return _beg ;};func (_fg *Document )mapData ()error {const _gdf ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_gga []*_ef .Header ;_fba int64 ;
|
|
_bafb _ef .Type ;);_agd ,_ffbb :=_fg .isFileHeaderPresent ();if _ffbb !=nil {return _abc .Wrap (_ffbb ,_gdf ,"");};if _agd {if _ffbb =_fg .parseFileHeader ();_ffbb !=nil {return _abc .Wrap (_ffbb ,_gdf ,"");};_fba +=int64 (_fg ._c );_fg .FullHeaders =true ;
|
|
};var (_eba *Page ;_gfc bool ;);for _bafb !=51&&!_gfc {_edd ,_ggba :=_ef .NewHeader (_fg ,_fg .InputStream ,_fba ,_fg .OrganizationType );if _ggba !=nil {return _abc .Wrap (_ggba ,_gdf ,"");};_ec .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",_edd .SegmentNumber ,_edd .Type );
|
|
_bafb =_edd .Type ;if _bafb !=_ef .TEndOfFile {if _edd .PageAssociation !=0{_eba =_fg .Pages [_edd .PageAssociation ];if _eba ==nil {_eba =_faba (_fg ,_edd .PageAssociation );_fg .Pages [_edd .PageAssociation ]=_eba ;if _fg .NumberOfPagesUnknown {_fg .NumberOfPages ++;
|
|
};};_eba .Segments =append (_eba .Segments ,_edd );}else {_fg .GlobalSegments .AddSegment (_edd );};};_gga =append (_gga ,_edd );_fba =_fg .InputStream .AbsolutePosition ();if _fg .OrganizationType ==_ef .OSequential {_fba +=int64 (_edd .SegmentDataLength );
|
|
};_gfc ,_ggba =_fg .reachedEOF (_fba );if _ggba !=nil {_ec .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",_ggba );
|
|
return _abc .Wrap (_ggba ,_gdf ,"");};};_fg .determineRandomDataOffsets (_gga ,uint64 (_fba ));return nil ;};func (_cac *Document )completeSymbols ()(_fca error ){const _afa ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";
|
|
if _cac .Classer ==nil {return nil ;};if _cac .Classer .UndilatedTemplates ==nil {return _abc .Error (_afa ,"\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");
|
|
};_edb :=len (_cac .Pages )==1;_cg :=make ([]int ,_cac .Classer .UndilatedTemplates .Size ());var _cefb int ;for _fdf :=0;_fdf < _cac .Classer .ClassIDs .Size ();_fdf ++{_cefb ,_fca =_cac .Classer .ClassIDs .Get (_fdf );if _fca !=nil {return _abc .Wrap (_fca ,_afa ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
|
|
};_cg [_cefb ]++;};var _bee []int ;for _aee :=0;_aee < _cac .Classer .UndilatedTemplates .Size ();_aee ++{if _cg [_aee ]==0{return _abc .Error (_afa ,"\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 _cg [_aee ]> 1||_edb {_bee =append (_bee ,_aee );};};_cac ._bgf =len (_bee );var _ag ,_ced int ;for _ea :=0;_ea < _cac .Classer .ComponentPageNumbers .Size ();_ea ++{_ag ,_fca =_cac .Classer .ComponentPageNumbers .Get (_ea );if _fca !=nil {return _abc .Wrapf (_fca ,_afa ,"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",_ea );
|
|
};_ced ,_fca =_cac .Classer .ClassIDs .Get (_ea );if _fca !=nil {return _abc .Wrapf (_fca ,_afa ,"\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",_ag );
|
|
};if _cg [_ced ]==1&&!_edb {_cac ._d [_ag ]=append (_cac ._d [_ag ],_ced );};};if _fca =_cac .Classer .ComputeLLCorners ();_fca !=nil {return _abc .Wrap (_fca ,_afa ,"");};return nil ;};type EncodingMethod int ;func (_bcg *Document )addSymbolDictionary (_be int ,_cf *_g .Bitmaps ,_fde []int ,_cfc map[int ]int ,_ca bool )(*_ef .Header ,error ){const _adf ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
|
|
_fc :=&_ef .SymbolDictionary {};if _fb :=_fc .InitEncode (_cf ,_fde ,_cfc ,_ca );_fb !=nil {return nil ,_fb ;};_afe :=&_ef .Header {Type :_ef .TSymbolDictionary ,PageAssociation :_be ,SegmentData :_fc };if _be ==0{if _bcg .GlobalSegments ==nil {_bcg .GlobalSegments =&Globals {};
|
|
};_bcg .GlobalSegments .AddSegment (_afe );return _afe ,nil ;};_cda ,_baf :=_bcg .Pages [_be ];if !_baf {return nil ,_abc .Errorf (_adf ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_be );};var (_faa int ;
|
|
_gbe *_ef .Header ;);for _faa ,_gbe =range _cda .Segments {if _gbe .Type ==_ef .TPageInformation {break ;};};_faa ++;_cda .Segments =append (_cda .Segments ,nil );copy (_cda .Segments [_faa +1:],_cda .Segments [_faa :]);_cda .Segments [_faa ]=_afe ;return _afe ,nil ;
|
|
};func (_gbc *Page )createPage (_gcbd *_ef .PageInformationSegment )error {var _efd error ;if !_gcbd .IsStripe ||_gcbd .PageBMHeight !=-1{_efd =_gbc .createNormalPage (_gcbd );}else {_efd =_gbc .createStripedPage (_gcbd );};return _efd ;};func (_fbd *Page )clearSegmentData (){for _cbgd :=range _fbd .Segments {_fbd .Segments [_cbgd ].CleanSegmentData ();
|
|
};};func (_gfa *Page )GetWidth ()(int ,error ){return _gfa .getWidth ()};func (_ac *Document )encodeSegment (_de *_ef .Header ,_ebd *int )error {const _bcf ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_de .SegmentNumber =_ac .nextSegmentNumber ();
|
|
_acf ,_dgd :=_de .Encode (_ac ._f );if _dgd !=nil {return _abc .Wrapf (_dgd ,_bcf ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_de .SegmentNumber );};*_ebd +=_acf ;return nil ;};func (_gfg *Page )getPageInformationSegment ()*_ef .Header {for _ ,_cgac :=range _gfg .Segments {if _cgac .Type ==_ef .TPageInformation {return _cgac ;
|
|
};};_ec .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",_gfg );
|
|
return nil ;};func (_cgg *Page )AddPageInformationSegment (){_ccab :=&_ef .PageInformationSegment {PageBMWidth :_cgg .FinalWidth ,PageBMHeight :_cgg .FinalHeight ,ResolutionX :_cgg .ResolutionX ,ResolutionY :_cgg .ResolutionY ,IsLossless :_cgg .IsLossless };
|
|
if _cgg .BlackIsOne {_ccab .DefaultPixelValue =uint8 (0x1);};_cacb :=&_ef .Header {PageAssociation :_cgg .PageNumber ,SegmentDataLength :uint64 (_ccab .Size ()),SegmentData :_ccab ,Type :_ef .TPageInformation };_cgg .Segments =append (_cgg .Segments ,_cacb );
|
|
}; |