mirror of
https://github.com/unidoc/unipdf.git
synced 2025-05-02 22:17:06 +08:00
132 lines
40 KiB
Go
132 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 (_d "encoding/binary";_e "fmt";_ec "github.com/unidoc/unipdf/v3/common";_eb "github.com/unidoc/unipdf/v3/internal/bitwise";_c "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_df "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
|
|
_eeb "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_fd "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_f "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_ee "io";_dc "math";_ef "runtime/debug";);func (_begf *Page )getResolutionX ()(int ,error ){const _dcfa ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";
|
|
if _begf .ResolutionX !=0{return _begf .ResolutionX ,nil ;};_fac :=_begf .getPageInformationSegment ();if _fac ==nil {return 0,_f .Error (_dcfa ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_fda ,_gbfef :=_fac .GetSegmentData ();
|
|
if _gbfef !=nil {return 0,_f .Wrap (_gbfef ,_dcfa ,"");};_dec ,_fgf :=_fda .(*_eeb .PageInformationSegment );if !_fgf {return 0,_f .Errorf (_dcfa ,"\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",_fda );
|
|
};_begf .ResolutionX =_dec .ResolutionX ;return _begf .ResolutionX ,nil ;};func DecodeDocument (input _eb .StreamReader ,globals *Globals )(*Document ,error ){return _caa (input ,globals );};func (_bcfc *Page )composePageBitmap ()error {const _abc ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";
|
|
if _bcfc .PageNumber ==0{return nil ;};_cedf :=_bcfc .getPageInformationSegment ();if _cedf ==nil {return _f .Error (_abc ,"\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");
|
|
};_fbf ,_fbgc :=_cedf .GetSegmentData ();if _fbgc !=nil {return _fbgc ;};_baa ,_ege :=_fbf .(*_eeb .PageInformationSegment );if !_ege {return _f .Error (_abc ,"\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 _fbgc =_bcfc .createPage (_baa );_fbgc !=nil {return _f .Wrap (_fbgc ,_abc ,"");};_bcfc .clearSegmentData ();return nil ;};func (_bg *Document )Encode ()(_fde []byte ,_begd error ){const _eac ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
var _dcb ,_eca int ;if _bg .FullHeaders {if _dcb ,_begd =_bg .encodeFileHeader (_bg ._ae );_begd !=nil {return nil ,_f .Wrap (_begd ,_eac ,"");};};var (_fc bool ;_dgd *_eeb .Header ;_edc *Page ;);if _begd =_bg .completeClassifiedPages ();_begd !=nil {return nil ,_f .Wrap (_begd ,_eac ,"");
|
|
};if _begd =_bg .produceClassifiedPages ();_begd !=nil {return nil ,_f .Wrap (_begd ,_eac ,"");};if _bg .GlobalSegments !=nil {for _ ,_dgd =range _bg .GlobalSegments .Segments {if _begd =_bg .encodeSegment (_dgd ,&_dcb );_begd !=nil {return nil ,_f .Wrap (_begd ,_eac ,"");
|
|
};};};for _acc :=1;_acc <=int (_bg .NumberOfPages );_acc ++{if _edc ,_fc =_bg .Pages [_acc ];!_fc {return nil ,_f .Errorf (_eac ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_acc );};for _ ,_dgd =range _edc .Segments {if _begd =_bg .encodeSegment (_dgd ,&_dcb );
|
|
_begd !=nil {return nil ,_f .Wrap (_begd ,_eac ,"");};};};if _bg .FullHeaders {if _eca ,_begd =_bg .encodeEOFHeader (_bg ._ae );_begd !=nil {return nil ,_f .Wrap (_begd ,_eac ,"");};_dcb +=_eca ;};_fde =_bg ._ae .Data ();if len (_fde )!=_dcb {_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",_dcb ,len (_fde ));
|
|
};return _fde ,nil ;};func (_fgg *Document )determineRandomDataOffsets (_ff []*_eeb .Header ,_dcg uint64 ){if _fgg .OrganizationType !=_eeb .ORandom {return ;};for _ ,_fded :=range _ff {_fded .SegmentDataStartOffset =_dcg ;_dcg +=_fded .SegmentDataLength ;
|
|
};};func (_bcc *Page )addTextRegionSegment (_gabb []*_eeb .Header ,_gfc ,_edb map[int ]int ,_eba []int ,_cda *_df .Points ,_dcbf *_df .Bitmaps ,_fdb *_c .IntSlice ,_gfa *_df .Boxes ,_ebe ,_ccba int ){_edaad :=&_eeb .TextRegion {NumberOfSymbols :uint32 (_ccba )};
|
|
_edaad .InitEncode (_gfc ,_edb ,_eba ,_cda ,_dcbf ,_fdb ,_gfa ,_bcc .FinalWidth ,_bcc .FinalHeight ,_ebe );_fca :=&_eeb .Header {RTSegments :_gabb ,SegmentData :_edaad ,PageAssociation :_bcc .PageNumber ,Type :_eeb .TImmediateTextRegion };_ged :=_eeb .TPageInformation ;
|
|
if _edb !=nil {_ged =_eeb .TSymbolDictionary ;};var _ebb int ;for ;_ebb < len (_bcc .Segments );_ebb ++{if _bcc .Segments [_ebb ].Type ==_ged {_ebb ++;break ;};};_bcc .Segments =append (_bcc .Segments ,nil );copy (_bcc .Segments [_ebb +1:],_bcc .Segments [_ebb :]);
|
|
_bcc .Segments [_ebb ]=_fca ;};func (_fgcg *Page )GetSegment (number int )(*_eeb .Header ,error ){const _gfd ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_ceff :=range _fgcg .Segments {if _ceff .SegmentNumber ==uint32 (number ){return _ceff ,nil ;
|
|
};};_afg :=make ([]uint32 ,len (_fgcg .Segments ));for _gfb ,_gcdc :=range _fgcg .Segments {_afg [_gfb ]=_gcdc .SegmentNumber ;};return nil ,_f .Errorf (_gfd ,"\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 ,_fgcg .PageNumber ,_afg );
|
|
};func (_eebd *Page )GetResolutionY ()(int ,error ){return _eebd .getResolutionY ()};func (_dfad *Page )countRegions ()int {var _dedb int ;for _ ,_fec :=range _dfad .Segments {switch _fec .Type {case 6,7,22,23,38,39,42,43:_dedb ++;};};return _dedb ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_ae :_eb .BufferedMSB (),Pages :map[int ]*Page {},_g :map[int ][]int {},_da :map[int ]int {},_b :map[int ][]int {}};
|
|
};func (_aaa *Document )isFileHeaderPresent ()(bool ,error ){_aaa .InputStream .Mark ();for _ ,_gbb :=range _efd {_bce ,_gce :=_aaa .InputStream .ReadByte ();if _gce !=nil {return false ,_gce ;};if _gbb !=_bce {_aaa .InputStream .Reset ();return false ,nil ;
|
|
};};_aaa .InputStream .Reset ();return true ,nil ;};func (_dd *Document )AddGenericPage (bm *_df .Bitmap ,duplicateLineRemoval bool )(_dfd error ){const _ea ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
|
|
if !_dd .FullHeaders &&_dd .NumberOfPages !=0{return _f .Error (_ea ,"\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");
|
|
};_aee :=&Page {Segments :[]*_eeb .Header {},Bitmap :bm ,Document :_dd ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_df .Chocolate };_aee .PageNumber =int (_dd .nextPageNumber ());_dd .Pages [_aee .PageNumber ]=_aee ;
|
|
bm .InverseData ();_aee .AddPageInformationSegment ();if _dfd =_aee .AddGenericRegion (bm ,0,0,0,_eeb .TImmediateGenericRegion ,duplicateLineRemoval );_dfd !=nil {return _f .Wrap (_dfd ,_ea ,"");};if _dd .FullHeaders {_aee .AddEndOfPageSegment ();};return nil ;
|
|
};type Page struct{Segments []*_eeb .Header ;PageNumber int ;Bitmap *_df .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;
|
|
};func _caa (_fae _eb .StreamReader ,_dae *Globals )(*Document ,error ){_fgcd :=&Document {Pages :make (map[int ]*Page ),InputStream :_fae ,OrganizationType :_eeb .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_dae ,_eff :9};if _fgcd .GlobalSegments ==nil {_fgcd .GlobalSegments =&Globals {};
|
|
};if _ab :=_fgcd .mapData ();_ab !=nil {return nil ,_ab ;};return _fgcd ,nil ;};func (_gbfe *Page )getWidth ()(int ,error ){const _agb ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _gbfe .FinalWidth !=0{return _gbfe .FinalWidth ,nil ;};_afgd :=_gbfe .getPageInformationSegment ();
|
|
if _afgd ==nil {return 0,_f .Error (_agb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_cde ,_beae :=_afgd .GetSegmentData ();if _beae !=nil {return 0,_f .Wrap (_beae ,_agb ,"");};_gda ,_gbe :=_cde .(*_eeb .PageInformationSegment );
|
|
if !_gbe {return 0,_f .Errorf (_agb ,"\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",_cde );
|
|
};_gbfe .FinalWidth =_gda .PageBMWidth ;return _gbfe .FinalWidth ,nil ;};func (_ce *Document )produceClassifiedPage (_aca *Page ,_dg *_eeb .Header )(_ecf error ){const _bc ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
|
|
var _acg map[int ]int ;_ca :=_ce ._db ;_cgd :=[]*_eeb .Header {_dg };if len (_ce ._g [_aca .PageNumber ])> 0{_acg =map[int ]int {};_af ,_gf :=_ce .addSymbolDictionary (_aca .PageNumber ,_ce .Classer .UndilatedTemplates ,_ce ._g [_aca .PageNumber ],_acg ,false );
|
|
if _gf !=nil {return _f .Wrap (_gf ,_bc ,"");};_cgd =append (_cgd ,_af );_ca +=len (_ce ._g [_aca .PageNumber ]);};_fe :=_ce ._b [_aca .PageNumber ];_ec .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_aca .PageNumber ,_fe );
|
|
_aca .addTextRegionSegment (_cgd ,_ce ._da ,_acg ,_ce ._b [_aca .PageNumber ],_ce .Classer .PtaLL ,_ce .Classer .UndilatedTemplates ,_ce .Classer .ClassIDs ,nil ,_dcf (_ca ),len (_ce ._b [_aca .PageNumber ]));return nil ;};func (_gaf *Page )Encode (w _eb .BinaryWriter )(_cedc int ,_ag error ){const _gba ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
var _fbgf int ;for _ ,_daed :=range _gaf .Segments {if _fbgf ,_ag =_daed .Encode (w );_ag !=nil {return _cedc ,_f .Wrap (_ag ,_gba ,"");};_cedc +=_fbgf ;};return _cedc ,nil ;};type Globals struct{Segments []*_eeb .Header ;};func (_gg *Document )mapData ()error {const _fge ="\u006da\u0070\u0044\u0061\u0074\u0061";
|
|
var (_dbge []*_eeb .Header ;_ggf int64 ;_edca _eeb .Type ;);_cea ,_ada :=_gg .isFileHeaderPresent ();if _ada !=nil {return _f .Wrap (_ada ,_fge ,"");};if _cea {if _ada =_gg .parseFileHeader ();_ada !=nil {return _f .Wrap (_ada ,_fge ,"");};_ggf +=int64 (_gg ._eff );
|
|
_gg .FullHeaders =true ;};var (_deb *Page ;_aac bool ;);for _edca !=51&&!_aac {_edg ,_gag :=_eeb .NewHeader (_gg ,_gg .InputStream ,_ggf ,_gg .OrganizationType );if _gag !=nil {return _f .Wrap (_gag ,_fge ,"");};_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",_edg .SegmentNumber ,_edg .Type );
|
|
_edca =_edg .Type ;if _edca !=_eeb .TEndOfFile {if _edg .PageAssociation !=0{_deb =_gg .Pages [_edg .PageAssociation ];if _deb ==nil {_deb =_dbb (_gg ,_edg .PageAssociation );_gg .Pages [_edg .PageAssociation ]=_deb ;if _gg .NumberOfPagesUnknown {_gg .NumberOfPages ++;
|
|
};};_deb .Segments =append (_deb .Segments ,_edg );}else {_gg .GlobalSegments .AddSegment (_edg );};};_dbge =append (_dbge ,_edg );_ggf =_gg .InputStream .StreamPosition ();if _gg .OrganizationType ==_eeb .OSequential {_ggf +=int64 (_edg .SegmentDataLength );
|
|
};_aac ,_gag =_gg .reachedEOF (_ggf );if _gag !=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",_gag );
|
|
return _f .Wrap (_gag ,_fge ,"");};};_gg .determineRandomDataOffsets (_dbge ,uint64 (_ggf ));return nil ;};func (_cgba *Page )getResolutionY ()(int ,error ){const _acce ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";
|
|
if _cgba .ResolutionY !=0{return _cgba .ResolutionY ,nil ;};_gbfg :=_cgba .getPageInformationSegment ();if _gbfg ==nil {return 0,_f .Error (_acce ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_ccg ,_dgb :=_gbfg .GetSegmentData ();
|
|
if _dgb !=nil {return 0,_f .Wrap (_dgb ,_acce ,"");};_cad ,_ccdc :=_ccg .(*_eeb .PageInformationSegment );if !_ccdc {return 0,_f .Errorf (_acce ,"\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",_ccg );
|
|
};_cgba .ResolutionY =_cad .ResolutionY ;return _cgba .ResolutionY ,nil ;};func (_dgge *Page )String ()string {return _e .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_dgge .PageNumber );};func (_bcg *Document )reachedEOF (_cbg int64 )(bool ,error ){const _ded ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";
|
|
_ ,_ccd :=_bcg .InputStream .Seek (_cbg ,_ee .SeekStart );if _ccd !=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",_ccd );
|
|
return false ,_f .Wrap (_ccd ,_ded ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_ccd =_bcg .InputStream .ReadBits (32);if _ccd ==_ee .EOF {return true ,nil ;
|
|
}else if _ccd !=nil {return false ,_f .Wrap (_ccd ,_ded ,"");};return false ,nil ;};func (_de *Document )AddClassifiedPage (bm *_df .Bitmap ,method _fd .Method )(_gb error ){const _cc ="\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 !_de .FullHeaders &&_de .NumberOfPages !=0{return _f .Error (_cc ,"\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 _de .Classer ==nil {if _de .Classer ,_gb =_fd .Init (_fd .DefaultSettings ());_gb !=nil {return _f .Wrap (_gb ,_cc ,"");};};_be :=int (_de .nextPageNumber ());_ba :=&Page {Segments :[]*_eeb .Header {},Bitmap :bm ,Document :_de ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_be };
|
|
_de .Pages [_be ]=_ba ;switch method {case _fd .RankHaus :_ba .EncodingMethod =RankHausEM ;case _fd .Correlation :_ba .EncodingMethod =CorrelationEM ;};_ba .AddPageInformationSegment ();if _gb =_de .Classer .AddPage (bm ,_be ,method );_gb !=nil {return _f .Wrap (_gb ,_cc ,"");
|
|
};if _de .FullHeaders {_ba .AddEndOfPageSegment ();};return nil ;};func (_ddc *Document )encodeSegment (_gc *_eeb .Header ,_dff *int )error {const _feaa ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_gc .SegmentNumber =_ddc .nextSegmentNumber ();
|
|
_cce ,_cae :=_gc .Encode (_ddc ._ae );if _cae !=nil {return _f .Wrapf (_cae ,_feaa ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_gc .SegmentNumber );};*_dff +=_cce ;return nil ;};func (_edaa *Globals )GetSymbolDictionary ()(*_eeb .Header ,error ){const _bfgf ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
|
|
if _edaa ==nil {return nil ,_f .Error (_bfgf ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_edaa .Segments )==0{return nil ,_f .Error (_bfgf ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};for _ ,_bgb :=range _edaa .Segments {if _bgb .Type ==_eeb .TSymbolDictionary {return _bgb ,nil ;};};return nil ,_f .Error (_bfgf ,"\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 (_ebf *Document )encodeFileHeader (_bfec _eb .BinaryWriter )(_bd int ,_fcd error ){const _ecd ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_bd ,_fcd =_bfec .Write (_efd );if _fcd !=nil {return _bd ,_f .Wrap (_fcd ,_ecd ,"\u0069\u0064");
|
|
};if _fcd =_bfec .WriteByte (0x01);_fcd !=nil {return _bd ,_f .Wrap (_fcd ,_ecd ,"\u0066\u006c\u0061g\u0073");};_bd ++;_fcda :=make ([]byte ,4);_d .BigEndian .PutUint32 (_fcda ,_ebf .NumberOfPages );_bcf ,_fcd :=_bfec .Write (_fcda );if _fcd !=nil {return _bcf ,_f .Wrap (_fcd ,_ecd ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
|
|
};_bd +=_bcf ;return _bd ,nil ;};func (_eagg *Page )AddPageInformationSegment (){_bdc :=&_eeb .PageInformationSegment {PageBMWidth :_eagg .FinalWidth ,PageBMHeight :_eagg .FinalHeight ,ResolutionX :_eagg .ResolutionX ,ResolutionY :_eagg .ResolutionY ,IsLossless :_eagg .IsLossless };
|
|
if _eagg .BlackIsOne {_bdc .DefaultPixelValue =uint8 (0x1);};_bgba :=&_eeb .Header {PageAssociation :_eagg .PageNumber ,SegmentDataLength :uint64 (_bdc .Size ()),SegmentData :_bdc ,Type :_eeb .TPageInformation };_eagg .Segments =append (_eagg .Segments ,_bgba );
|
|
};func (_cga *Page )createNormalPage (_fgd *_eeb .PageInformationSegment )error {const _eebdb ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_cga .Bitmap =_df .New (_fgd .PageBMWidth ,_fgd .PageBMHeight );if _fgd .DefaultPixelValue !=0{_cga .Bitmap .SetDefaultPixel ();
|
|
};for _ ,_afff :=range _cga .Segments {switch _afff .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",_afff .SegmentNumber );_bdcg ,_ggfc :=_afff .GetSegmentData ();
|
|
if _ggfc !=nil {return _ggfc ;};_eee ,_dfa :=_bdcg .(_eeb .Regioner );if !_dfa {_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",_bdcg );
|
|
return _f .Errorf (_eebdb ,"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",_bdcg );
|
|
};_feg ,_ggfc :=_eee .GetRegionBitmap ();if _ggfc !=nil {return _f .Wrap (_ggfc ,_eebdb ,"");};if _cga .fitsPage (_fgd ,_feg ){_cga .Bitmap =_feg ;}else {_dge :=_eee .GetRegionInfo ();_dfb :=_cga .getCombinationOperator (_fgd ,_dge .CombinaionOperator );
|
|
_ggfc =_df .Blit (_feg ,_cga .Bitmap ,int (_dge .XLocation ),int (_dge .YLocation ),_dfb );if _ggfc !=nil {return _f .Wrap (_ggfc ,_eebdb ,"");};};};};return nil ;};func (_cgb *Document )encodeEOFHeader (_fefa _eb .BinaryWriter )(_faa int ,_bgd error ){_ddd :=&_eeb .Header {SegmentNumber :_cgb .nextSegmentNumber (),Type :_eeb .TEndOfFile };
|
|
if _faa ,_bgd =_ddd .Encode (_fefa );_bgd !=nil {return 0,_f .Wrap (_bgd ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _faa ,nil ;};func (_gee *Document )GetNumberOfPages ()(uint32 ,error ){if _gee .NumberOfPagesUnknown ||_gee .NumberOfPages ==0{if len (_gee .Pages )==0{if _eg :=_gee .mapData ();
|
|
_eg !=nil {return 0,_f .Wrap (_eg ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_gee .Pages )),nil ;};return _gee .NumberOfPages ,nil ;};type Document struct{Pages map[int ]*Page ;
|
|
NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _eb .StreamReader ;GlobalSegments *Globals ;OrganizationType _eeb .OrganizationType ;Classer *_fd .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;
|
|
AverageTemplates *_df .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_eff uint8 ;_ae *_eb .BufferedWriter ;EncodeGlobals bool ;_db int ;_g map[int ][]int ;_b map[int ][]int ;_dcd []int ;_da map[int ]int ;};func (_aa *Document )GetPage (pageNumber int )(_eeb .Pager ,error ){const _dfc ="\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 ,_ef .Stack ());
|
|
return nil ,_f .Errorf (_dfc ,"\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 (_aa .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 ,_ef .Stack ());return nil ,_f .Error (_dfc ,"\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");
|
|
};_ceb ,_ced :=_aa .Pages [pageNumber ];if !_ced {_ec .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_ef .Stack ());return nil ,_f .Errorf (_dfc ,"\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 _ceb ,nil ;};func (_gaa *Page )nextSegmentNumber ()uint32 {return _gaa .Document .nextSegmentNumber ()};func _dcf (_dde int )int {_bfce :=0;_ge :=(_dde &(_dde -1))==0;_dde >>=1;for ;_dde !=0;_dde >>=1{_bfce ++;};if _ge {return _bfce ;};return _bfce +1;
|
|
};func (_dfe *Document )parseFileHeader ()error {const _fgc ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_daac :=_dfe .InputStream .Seek (8,_ee .SeekStart );if _daac !=nil {return _f .Wrap (_daac ,_fgc ,"\u0069\u0064");
|
|
};_ ,_daac =_dfe .InputStream .ReadBits (5);if _daac !=nil {return _f .Wrap (_daac ,_fgc ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_fgce ,_daac :=_dfe .InputStream .ReadBit ();if _daac !=nil {return _f .Wrap (_daac ,_fgc ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");
|
|
};if _fgce ==1{_dfe .GBUseExtTemplate =true ;};_fgce ,_daac =_dfe .InputStream .ReadBit ();if _daac !=nil {return _f .Wrap (_daac ,_fgc ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _fgce !=1{_dfe .NumberOfPagesUnknown =false ;
|
|
};_fgce ,_daac =_dfe .InputStream .ReadBit ();if _daac !=nil {return _f .Wrap (_daac ,_fgc ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_dfe .OrganizationType =_eeb .OrganizationType (_fgce );if !_dfe .NumberOfPagesUnknown {_dfe .NumberOfPages ,_daac =_dfe .InputStream .ReadUint32 ();
|
|
if _daac !=nil {return _f .Wrap (_daac ,_fgc ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_dfe ._eff =13;};return nil ;};func (_efee *Page )GetBitmap ()(_dba *_df .Bitmap ,_aef error ){_ec .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",_efee .PageNumber ));
|
|
defer func (){if _aef !=nil {_ec .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",_efee .PageNumber ,_aef ));
|
|
}else {_ec .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",_efee .PageNumber ));};}();if _efee .Bitmap !=nil {return _efee .Bitmap ,nil ;
|
|
};_aef =_efee .composePageBitmap ();if _aef !=nil {return nil ,_aef ;};return _efee .Bitmap ,nil ;};func (_ccc *Document )produceClassifiedPages ()(_dea error ){const _gbd ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
|
|
if _ccc .Classer ==nil {return nil ;};var (_cg *Page ;_bfb bool ;_fg *_eeb .Header ;);for _fb :=1;_fb <=int (_ccc .NumberOfPages );_fb ++{if _cg ,_bfb =_ccc .Pages [_fb ];!_bfb {return _f .Errorf (_gbd ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_fb );
|
|
};if _cg .EncodingMethod ==GenericEM {continue ;};if _fg ==nil {if _fg ,_dea =_ccc .GlobalSegments .GetSymbolDictionary ();_dea !=nil {return _f .Wrap (_dea ,_gbd ,"");};};if _dea =_ccc .produceClassifiedPage (_cg ,_fg );_dea !=nil {return _f .Wrapf (_dea ,_gbd ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_fb );
|
|
};};return nil ;};func (_eagd *Page )AddEndOfPageSegment (){_dgc :=&_eeb .Header {Type :_eeb .TEndOfPage ,PageAssociation :_eagd .PageNumber };_eagd .Segments =append (_eagd .Segments ,_dgc );};func (_gea *Page )collectPageStripes ()(_eaf []_eeb .Segmenter ,_egd error ){const _caee ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";
|
|
var _egf _eeb .Segmenter ;for _ ,_effd :=range _gea .Segments {switch _effd .Type {case 6,7,22,23,38,39,42,43:_egf ,_egd =_effd .GetSegmentData ();if _egd !=nil {return nil ,_f .Wrap (_egd ,_caee ,"");};_eaf =append (_eaf ,_egf );case 50:_egf ,_egd =_effd .GetSegmentData ();
|
|
if _egd !=nil {return nil ,_egd ;};_fgeb ,_gbag :=_egf .(*_eeb .EndOfStripe );if !_gbag {return nil ,_f .Errorf (_caee ,"\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",_egf );
|
|
};_eaf =append (_eaf ,_fgeb );_gea .FinalHeight =_fgeb .LineNumber ();};};return _eaf ,nil ;};func (_ccec *Page )getPageInformationSegment ()*_eeb .Header {for _ ,_cgf :=range _ccec .Segments {if _cgf .Type ==_eeb .TPageInformation {return _cgf ;};};_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",_ccec );
|
|
return nil ;};func (_afa *Page )lastSegmentNumber ()(_cdfb uint32 ,_ddde error ){const _cfg ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_afa .Segments )==0{return _cdfb ,_f .Errorf (_cfg ,"\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",_afa .PageNumber );
|
|
};return _afa .Segments [len (_afa .Segments )-1].SegmentNumber ,nil ;};func (_eed *Globals )AddSegment (segment *_eeb .Header ){_eed .Segments =append (_eed .Segments ,segment )};func (_age *Page )GetResolutionX ()(int ,error ){return _age .getResolutionX ()};
|
|
func (_eef *Page )AddGenericRegion (bm *_df .Bitmap ,xloc ,yloc ,template int ,tp _eeb .Type ,duplicateLineRemoval bool )error {const _bdb ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_gcd :=&_eeb .GenericRegion {};
|
|
if _bag :=_gcd .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_bag !=nil {return _f .Wrap (_bag ,_bdb ,"");};_bca :=&_eeb .Header {Type :_eeb .TImmediateGenericRegion ,PageAssociation :_eef .PageNumber ,SegmentData :_gcd };_eef .Segments =append (_eef .Segments ,_bca );
|
|
return nil ;};func (_aff *Document )GetGlobalSegment (i int )(*_eeb .Header ,error ){_gcf ,_cf :=_aff .GlobalSegments .GetSegment (i );if _cf !=nil {return nil ,_f .Wrap (_cf ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
|
|
};return _gcf ,nil ;};func (_eebdd *Page )getHeight ()(int ,error ){const _dbef ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _eebdd .FinalHeight !=0{return _eebdd .FinalHeight ,nil ;};_cccf :=_eebdd .getPageInformationSegment ();if _cccf ==nil {return 0,_f .Error (_dbef ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
|
|
};_dad ,_fga :=_cccf .GetSegmentData ();if _fga !=nil {return 0,_f .Wrap (_fga ,_dbef ,"");};_bec ,_gde :=_dad .(*_eeb .PageInformationSegment );if !_gde {return 0,_f .Errorf (_dbef ,"\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",_dad );
|
|
};if _bec .PageBMHeight ==_dc .MaxInt32 {_ ,_fga =_eebdd .GetBitmap ();if _fga !=nil {return 0,_f .Wrap (_fga ,_dbef ,"");};}else {_eebdd .FinalHeight =_bec .PageBMHeight ;};return _eebdd .FinalHeight ,nil ;};func (_ac *Document )completeClassifiedPages ()(_beg error ){const _eab ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
|
|
if _ac .Classer ==nil {return nil ;};_ac ._dcd =make ([]int ,_ac .Classer .UndilatedTemplates .Size ());for _efa :=0;_efa < _ac .Classer .ClassIDs .Size ();_efa ++{_daa ,_fa :=_ac .Classer .ClassIDs .Get (_efa );if _fa !=nil {return _f .Wrapf (_fa ,_eab ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_efa );
|
|
};_ac ._dcd [_daa ]++;};var _cd []int ;for _ad :=0;_ad < _ac .Classer .UndilatedTemplates .Size ();_ad ++{if _ac .NumberOfPages ==1||_ac ._dcd [_ad ]> 1{_cd =append (_cd ,_ad );};};var (_bf *Page ;_cdf bool ;);for _bfc ,_ga :=range *_ac .Classer .ComponentPageNumbers {if _bf ,_cdf =_ac .Pages [_ga ];
|
|
!_cdf {return _f .Errorf (_eab ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_bfc );};if _bf .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",_bfc );
|
|
continue ;};_ac ._b [_ga ]=append (_ac ._b [_ga ],_bfc );_bfe ,_ed :=_ac .Classer .ClassIDs .Get (_bfc );if _ed !=nil {return _f .Wrapf (_ed ,_eab ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_bfc );
|
|
};if _ac ._dcd [_bfe ]==1&&_ac .NumberOfPages !=1{_gd :=append (_ac ._g [_ga ],_bfe );_ac ._g [_ga ]=_gd ;};};if _beg =_ac .Classer .ComputeLLCorners ();_beg !=nil {return _f .Wrap (_beg ,_eab ,"");};if _ ,_beg =_ac .addSymbolDictionary (0,_ac .Classer .UndilatedTemplates ,_cd ,_ac ._da ,false );
|
|
_beg !=nil {return _f .Wrap (_beg ,_eab ,"");};return nil ;};func (_add *Page )createPage (_agf *_eeb .PageInformationSegment )error {var _ebfd error ;if !_agf .IsStripe ||_agf .PageBMHeight !=-1{_ebfd =_add .createNormalPage (_agf );}else {_ebfd =_add .createStripedPage (_agf );
|
|
};return _ebfd ;};func (_fff *Page )createStripedPage (_aab *_eeb .PageInformationSegment )error {const _ffc ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_caag ,_cfa :=_fff .collectPageStripes ();
|
|
if _cfa !=nil {return _f .Wrap (_cfa ,_ffc ,"");};var _fegg int ;for _ ,_dafa :=range _caag {if _dce ,_abe :=_dafa .(*_eeb .EndOfStripe );_abe {_fegg =_dce .LineNumber ()+1;}else {_cdg :=_dafa .(_eeb .Regioner );_bceg :=_cdg .GetRegionInfo ();_dca :=_fff .getCombinationOperator (_aab ,_bceg .CombinaionOperator );
|
|
_bdaf ,_ccee :=_cdg .GetRegionBitmap ();if _ccee !=nil {return _f .Wrap (_ccee ,_ffc ,"");};_ccee =_df .Blit (_bdaf ,_fff .Bitmap ,int (_bceg .XLocation ),_fegg ,_dca );if _ccee !=nil {return _f .Wrap (_ccee ,_ffc ,"");};};};return nil ;};const (GenericEM EncodingMethod =iota ;
|
|
CorrelationEM ;RankHausEM ;);func (_acca *Document )nextPageNumber ()uint32 {_acca .NumberOfPages ++;return _acca .NumberOfPages };func (_afe *Page )getCombinationOperator (_gafd *_eeb .PageInformationSegment ,_gec _df .CombinationOperator )_df .CombinationOperator {if _gafd .CombinationOperatorOverrideAllowed (){return _gec ;
|
|
};return _gafd .CombinationOperator ();};func (_efe *Document )addSymbolDictionary (_fba int ,_fef *_df .Bitmaps ,_gbf []int ,_dgg map[int ]int ,_eag bool )(*_eeb .Header ,error ){const _cb ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
|
|
_bfg :=&_eeb .SymbolDictionary {};if _eda :=_bfg .InitEncode (_fef ,_gbf ,_dgg ,_eag );_eda !=nil {return nil ,_eda ;};_ccb :=&_eeb .Header {Type :_eeb .TSymbolDictionary ,PageAssociation :_fba ,SegmentData :_bfg };if _fba ==0{if _efe .GlobalSegments ==nil {_efe .GlobalSegments =&Globals {};
|
|
};_efe .GlobalSegments .AddSegment (_ccb );return _ccb ,nil ;};_fdf ,_fea :=_efe .Pages [_fba ];if !_fea {return nil ,_f .Errorf (_cb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_fba );};var (_gab int ;
|
|
_dab *_eeb .Header ;);for _gab ,_dab =range _fdf .Segments {if _dab .Type ==_eeb .TPageInformation {break ;};};_gab ++;_fdf .Segments =append (_fdf .Segments ,nil );copy (_fdf .Segments [_gab +1:],_fdf .Segments [_gab :]);_fdf .Segments [_gab ]=_ccb ;return _ccb ,nil ;
|
|
};var _efd =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_bfgd *Globals )GetSegment (segmentNumber int )(*_eeb .Header ,error ){const _ddf ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _bfgd ==nil {return nil ,_f .Error (_ddf ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_bfgd .Segments )==0{return nil ,_f .Error (_ddf ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _fdd *_eeb .Header ;for _ ,_fdd =range _bfgd .Segments {if _fdd .SegmentNumber ==uint32 (segmentNumber ){break ;
|
|
};};if _fdd ==nil {return nil ,_f .Error (_ddf ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _fdd ,nil ;};func (_aeb *Page )fitsPage (_bea *_eeb .PageInformationSegment ,_ecg *_df .Bitmap )bool {return _aeb .countRegions ()==1&&_bea .DefaultPixelValue ==0&&_bea .PageBMWidth ==_ecg .Width &&_bea .PageBMHeight ==_ecg .Height ;
|
|
};func (_bfd *Document )completeSymbols ()(_dbg error ){const _eea ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _bfd .Classer ==nil {return nil ;};if _bfd .Classer .UndilatedTemplates ==nil {return _f .Error (_eea ,"\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");
|
|
};_ebc :=len (_bfd .Pages )==1;_bee :=make ([]int ,_bfd .Classer .UndilatedTemplates .Size ());var _bbf int ;for _dda :=0;_dda < _bfd .Classer .ClassIDs .Size ();_dda ++{_bbf ,_dbg =_bfd .Classer .ClassIDs .Get (_dda );if _dbg !=nil {return _f .Wrap (_dbg ,_eea ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
|
|
};_bee [_bbf ]++;};var _efg []int ;for _cbc :=0;_cbc < _bfd .Classer .UndilatedTemplates .Size ();_cbc ++{if _bee [_cbc ]==0{return _f .Error (_eea ,"\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 _bee [_cbc ]> 1||_ebc {_efg =append (_efg ,_cbc );};};_bfd ._db =len (_efg );var _cgdc ,_eaga int ;for _ade :=0;_ade < _bfd .Classer .ComponentPageNumbers .Size ();_ade ++{_cgdc ,_dbg =_bfd .Classer .ComponentPageNumbers .Get (_ade );if _dbg !=nil {return _f .Wrapf (_dbg ,_eea ,"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",_ade );
|
|
};_eaga ,_dbg =_bfd .Classer .ClassIDs .Get (_ade );if _dbg !=nil {return _f .Wrapf (_dbg ,_eea ,"\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",_cgdc );
|
|
};if _bee [_eaga ]==1&&!_ebc {_bfd ._g [_cgdc ]=append (_bfd ._g [_cgdc ],_eaga );};};if _dbg =_bfd .Classer .ComputeLLCorners ();_dbg !=nil {return _f .Wrap (_dbg ,_eea ,"");};return nil ;};func (_gcfe *Page )clearSegmentData (){for _adb :=range _gcfe .Segments {_gcfe .Segments [_adb ].CleanSegmentData ();
|
|
};};func (_bdf *Globals )GetSegmentByIndex (index int )(*_eeb .Header ,error ){const _acf ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _bdf ==nil {return nil ,_f .Error (_acf ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_bdf .Segments )==0{return nil ,_f .Error (_acf ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_bdf .Segments )-1{return nil ,_f .Error (_acf ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
|
|
};return _bdf .Segments [index ],nil ;};type EncodingMethod int ;func (_caef *Page )GetHeight ()(int ,error ){return _caef .getHeight ()};func _dbb (_cbb *Document ,_fdbb int )*Page {return &Page {Document :_cbb ,PageNumber :_fdbb ,Segments :[]*_eeb .Header {}};
|
|
};func (_dead *Page )GetWidth ()(int ,error ){return _dead .getWidth ()};func (_bda *Document )nextSegmentNumber ()uint32 {_ede :=_bda .CurrentSegmentNumber ;_bda .CurrentSegmentNumber ++;return _ede ;}; |