mirror of
https://github.com/unidoc/unipdf.git
synced 2025-05-02 22:17:06 +08:00
134 lines
40 KiB
Go
134 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 (_bf "encoding/binary";_ba "fmt";_e "github.com/unidoc/unipdf/v3/common";_f "github.com/unidoc/unipdf/v3/internal/bitwise";_cc "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_ff "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
|
|
_ge "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_ef "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_a "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_g "io";_d "math";_c "runtime/debug";);func (_cddd *Globals )GetSymbolDictionary ()(*_ge .Header ,error ){const _gcgb ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
|
|
if _cddd ==nil {return nil ,_a .Error (_gcgb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_cddd .Segments )==0{return nil ,_a .Error (_gcgb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};for _ ,_daaf :=range _cddd .Segments {if _daaf .Type ==_ge .TSymbolDictionary {return _daaf ,nil ;};};return nil ,_a .Error (_gcgb ,"\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 (_ecg *Document )encodeSegment (_edaa *_ge .Header ,_cag *int )error {const _fec ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_edaa .SegmentNumber =_ecg .nextSegmentNumber ();_ded ,_dbd :=_edaa .Encode (_ecg ._ee );
|
|
if _dbd !=nil {return _a .Wrapf (_dbd ,_fec ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_edaa .SegmentNumber );};*_cag +=_ded ;return nil ;};func (_ddgc *Page )GetResolutionX ()(int ,error ){return _ddgc .getResolutionX ()};
|
|
func (_ed *Document )produceClassifiedPages ()(_dga error ){const _deb ="\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 (_bfdb *Page ;_eb bool ;
|
|
_gef *_ge .Header ;);for _eag :=1;_eag <=int (_ed .NumberOfPages );_eag ++{if _bfdb ,_eb =_ed .Pages [_eag ];!_eb {return _a .Errorf (_deb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_eag );};if _bfdb .EncodingMethod ==GenericEM {continue ;
|
|
};if _gef ==nil {if _gef ,_dga =_ed .GlobalSegments .GetSymbolDictionary ();_dga !=nil {return _a .Wrap (_dga ,_deb ,"");};};if _dga =_ed .produceClassifiedPage (_bfdb ,_gef );_dga !=nil {return _a .Wrapf (_dga ,_deb ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_eag );
|
|
};};return nil ;};type Page struct{Segments []*_ge .Header ;PageNumber int ;Bitmap *_ff .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;
|
|
BlackIsOne bool ;};func (_ffb *Document )completeSymbols ()(_eda error ){const _ggd ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _ffb .Classer ==nil {return nil ;};if _ffb .Classer .UndilatedTemplates ==nil {return _a .Error (_ggd ,"\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");
|
|
};_fge :=len (_ffb .Pages )==1;_fbb :=make ([]int ,_ffb .Classer .UndilatedTemplates .Size ());var _debfd int ;for _feb :=0;_feb < _ffb .Classer .ClassIDs .Size ();_feb ++{_debfd ,_eda =_ffb .Classer .ClassIDs .Get (_feb );if _eda !=nil {return _a .Wrap (_eda ,_ggd ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
|
|
};_fbb [_debfd ]++;};var _agd []int ;for _aef :=0;_aef < _ffb .Classer .UndilatedTemplates .Size ();_aef ++{if _fbb [_aef ]==0{return _a .Error (_ggd ,"\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 _fbb [_aef ]> 1||_fge {_agd =append (_agd ,_aef );};};_ffb ._cf =len (_agd );var _cdbe ,_abd int ;for _ged :=0;_ged < _ffb .Classer .ComponentPageNumbers .Size ();_ged ++{_cdbe ,_eda =_ffb .Classer .ComponentPageNumbers .Get (_ged );if _eda !=nil {return _a .Wrapf (_eda ,_ggd ,"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",_ged );
|
|
};_abd ,_eda =_ffb .Classer .ClassIDs .Get (_ged );if _eda !=nil {return _a .Wrapf (_eda ,_ggd ,"\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",_cdbe );
|
|
};if _fbb [_abd ]==1&&!_fge {_ffb ._dgb [_cdbe ]=append (_ffb ._dgb [_cdbe ],_abd );};};if _eda =_ffb .Classer .ComputeLLCorners ();_eda !=nil {return _a .Wrap (_eda ,_ggd ,"");};return nil ;};var _dg =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};type Document struct{Pages map[int ]*Page ;
|
|
NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _f .StreamReader ;GlobalSegments *Globals ;OrganizationType _ge .OrganizationType ;Classer *_ef .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;
|
|
AverageTemplates *_ff .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_bag uint8 ;_ee *_f .BufferedWriter ;EncodeGlobals bool ;_cf int ;_dgb map[int ][]int ;_geg map[int ][]int ;_ga []int ;_ce map[int ]int ;};type Globals struct{Segments []*_ge .Header ;
|
|
};func (_add *Globals )GetSegment (segmentNumber int )(*_ge .Header ,error ){const _dgbc ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _add ==nil {return nil ,_a .Error (_dgbc ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_add .Segments )==0{return nil ,_a .Error (_dgbc ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _efd *_ge .Header ;for _ ,_efd =range _add .Segments {if _efd .SegmentNumber ==uint32 (segmentNumber ){break ;
|
|
};};if _efd ==nil {return nil ,_a .Error (_dgbc ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _efd ,nil ;};func (_cgg *Page )getPageInformationSegment ()*_ge .Header {for _ ,_cec :=range _cgg .Segments {if _cec .Type ==_ge .TPageInformation {return _cec ;
|
|
};};_e .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",_cgg );
|
|
return nil ;};func (_feg *Page )GetResolutionY ()(int ,error ){return _feg .getResolutionY ()};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_ee :_f .BufferedMSB (),Pages :map[int ]*Page {},_dgb :map[int ][]int {},_ce :map[int ]int {},_geg :map[int ][]int {}};
|
|
};func (_fdf *Page )createStripedPage (_gcc *_ge .PageInformationSegment )error {const _dcb ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_dgc ,_fed :=_fdf .collectPageStripes ();if _fed !=nil {return _a .Wrap (_fed ,_dcb ,"");
|
|
};var _fbe int ;for _ ,_dcbd :=range _dgc {if _gce ,_bcc :=_dcbd .(*_ge .EndOfStripe );_bcc {_fbe =_gce .LineNumber ()+1;}else {_cbb :=_dcbd .(_ge .Regioner );_dbb :=_cbb .GetRegionInfo ();_dce :=_fdf .getCombinationOperator (_gcc ,_dbb .CombinaionOperator );
|
|
_aad ,_ebd :=_cbb .GetRegionBitmap ();if _ebd !=nil {return _a .Wrap (_ebd ,_dcb ,"");};_ebd =_ff .Blit (_aad ,_fdf .Bitmap ,int (_dbb .XLocation ),_fbe ,_dce );if _ebd !=nil {return _a .Wrap (_ebd ,_dcb ,"");};};};return nil ;};type EncodingMethod int ;
|
|
func (_eca *Document )GetNumberOfPages ()(uint32 ,error ){if _eca .NumberOfPagesUnknown ||_eca .NumberOfPages ==0{if len (_eca .Pages )==0{if _bfb :=_eca .mapData ();_bfb !=nil {return 0,_a .Wrap (_bfb ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");
|
|
};};return uint32 (len (_eca .Pages )),nil ;};return _eca .NumberOfPages ,nil ;};func (_cae *Page )GetBitmap ()(_eec *_ff .Bitmap ,_fae error ){_e .Log .Trace (_ba .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",_cae .PageNumber ));
|
|
defer func (){if _fae !=nil {_e .Log .Trace (_ba .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",_cae .PageNumber ,_fae ));
|
|
}else {_e .Log .Trace (_ba .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",_cae .PageNumber ));};}();if _cae .Bitmap !=nil {return _cae .Bitmap ,nil ;
|
|
};_fae =_cae .composePageBitmap ();if _fae !=nil {return nil ,_fae ;};return _cae .Bitmap ,nil ;};func _ffd (_cda int )int {_dc :=0;_afe :=(_cda &(_cda -1))==0;_cda >>=1;for ;_cda !=0;_cda >>=1{_dc ++;};if _afe {return _dc ;};return _dc +1;};func (_bfeg *Page )composePageBitmap ()error {const _agg ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";
|
|
if _bfeg .PageNumber ==0{return nil ;};_fdg :=_bfeg .getPageInformationSegment ();if _fdg ==nil {return _a .Error (_agg ,"\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");
|
|
};_dba ,_gaf :=_fdg .GetSegmentData ();if _gaf !=nil {return _gaf ;};_dffd ,_eegc :=_dba .(*_ge .PageInformationSegment );if !_eegc {return _a .Error (_agg ,"\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 _gaf =_bfeg .createPage (_dffd );_gaf !=nil {return _a .Wrap (_gaf ,_agg ,"");};_bfeg .clearSegmentData ();return nil ;};func (_cdbea *Page )createPage (_gge *_ge .PageInformationSegment )error {var _dde error ;if !_gge .IsStripe ||_gge .PageBMHeight !=-1{_dde =_cdbea .createNormalPage (_gge );
|
|
}else {_dde =_cdbea .createStripedPage (_gge );};return _dde ;};func (_dged *Page )getWidth ()(int ,error ){const _gccg ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _dged .FinalWidth !=0{return _dged .FinalWidth ,nil ;};_gdce :=_dged .getPageInformationSegment ();
|
|
if _gdce ==nil {return 0,_a .Error (_gccg ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_fdca ,_dagg :=_gdce .GetSegmentData ();if _dagg !=nil {return 0,_a .Wrap (_dagg ,_gccg ,"");};_bagc ,_adf :=_fdca .(*_ge .PageInformationSegment );
|
|
if !_adf {return 0,_a .Errorf (_gccg ,"\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",_fdca );
|
|
};_dged .FinalWidth =_bagc .PageBMWidth ;return _dged .FinalWidth ,nil ;};func (_acg *Page )clearSegmentData (){for _dddf :=range _acg .Segments {_acg .Segments [_dddf ].CleanSegmentData ();};};func (_abdc *Page )getResolutionX ()(int ,error ){const _ddab ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";
|
|
if _abdc .ResolutionX !=0{return _abdc .ResolutionX ,nil ;};_eafd :=_abdc .getPageInformationSegment ();if _eafd ==nil {return 0,_a .Error (_ddab ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_ecc ,_daad :=_eafd .GetSegmentData ();
|
|
if _daad !=nil {return 0,_a .Wrap (_daad ,_ddab ,"");};_abg ,_cggg :=_ecc .(*_ge .PageInformationSegment );if !_cggg {return 0,_a .Errorf (_ddab ,"\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",_ecc );
|
|
};_abdc .ResolutionX =_abg .ResolutionX ;return _abdc .ResolutionX ,nil ;};func (_bdag *Page )GetWidth ()(int ,error ){return _bdag .getWidth ()};func (_ffg *Document )GetPage (pageNumber int )(_ge .Pager ,error ){const _fee ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";
|
|
if pageNumber < 0{_e .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 ,_c .Stack ());
|
|
return nil ,_a .Errorf (_fee ,"\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 (_ffg .Pages ){_e .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_c .Stack ());return nil ,_a .Error (_fee ,"\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");
|
|
};_ac ,_cb :=_ffg .Pages [pageNumber ];if !_cb {_e .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_c .Stack ());return nil ,_a .Errorf (_fee ,"\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 _ac ,nil ;};func (_fd *Document )determineRandomDataOffsets (_ddfc []*_ge .Header ,_aec uint64 ){if _fd .OrganizationType !=_ge .ORandom {return ;};for _ ,_cdd :=range _ddfc {_cdd .SegmentDataStartOffset =_aec ;_aec +=_cdd .SegmentDataLength ;
|
|
};};func (_adb *Page )createNormalPage (_ade *_ge .PageInformationSegment )error {const _geb ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_adb .Bitmap =_ff .New (_ade .PageBMWidth ,_ade .PageBMHeight );if _ade .DefaultPixelValue !=0{_adb .Bitmap .SetDefaultPixel ();
|
|
};for _ ,_edf :=range _adb .Segments {switch _edf .Type {case 6,7,22,23,38,39,42,43:_e .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_edf .SegmentNumber );_edg ,_fga :=_edf .GetSegmentData ();
|
|
if _fga !=nil {return _fga ;};_abb ,_feed :=_edg .(_ge .Regioner );if !_feed {_e .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",_edg );
|
|
return _a .Errorf (_geb ,"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",_edg );
|
|
};_abba ,_fga :=_abb .GetRegionBitmap ();if _fga !=nil {return _a .Wrap (_fga ,_geb ,"");};if _adb .fitsPage (_ade ,_abba ){_adb .Bitmap =_abba ;}else {_cefcc :=_abb .GetRegionInfo ();_caga :=_adb .getCombinationOperator (_ade ,_cefcc .CombinaionOperator );
|
|
_fga =_ff .Blit (_abba ,_adb .Bitmap ,int (_cefcc .XLocation ),int (_cefcc .YLocation ),_caga );if _fga !=nil {return _a .Wrap (_fga ,_geb ,"");};};};};return nil ;};func (_gb *Document )reachedEOF (_baae int64 )(bool ,error ){const _cgf ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";
|
|
_ ,_bea :=_gb .InputStream .Seek (_baae ,_g .SeekStart );if _bea !=nil {_e .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",_bea );
|
|
return false ,_a .Wrap (_bea ,_cgf ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_bea =_gb .InputStream .ReadBits (32);if _bea ==_g .EOF {return true ,nil ;
|
|
}else if _bea !=nil {return false ,_a .Wrap (_bea ,_cgf ,"");};return false ,nil ;};func (_cegd *Document )encodeEOFHeader (_bed _f .BinaryWriter )(_cdab int ,_gdc error ){_bcb :=&_ge .Header {SegmentNumber :_cegd .nextSegmentNumber (),Type :_ge .TEndOfFile };
|
|
if _cdab ,_gdc =_bcb .Encode (_bed );_gdc !=nil {return 0,_a .Wrap (_gdc ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _cdab ,nil ;};func (_cdcc *Document )nextPageNumber ()uint32 {_cdcc .NumberOfPages ++;
|
|
return _cdcc .NumberOfPages };func (_gcd *Page )AddEndOfPageSegment (){_afbb :=&_ge .Header {Type :_ge .TEndOfPage ,PageAssociation :_gcd .PageNumber };_gcd .Segments =append (_gcd .Segments ,_afbb );};func (_fdgd *Page )lastSegmentNumber ()(_ccf uint32 ,_ffde error ){const _edgc ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";
|
|
if len (_fdgd .Segments )==0{return _ccf ,_a .Errorf (_edgc ,"\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",_fdgd .PageNumber );
|
|
};return _fdgd .Segments [len (_fdgd .Segments )-1].SegmentNumber ,nil ;};func (_egdb *Page )fitsPage (_gbe *_ge .PageInformationSegment ,_afed *_ff .Bitmap )bool {return _egdb .countRegions ()==1&&_gbe .DefaultPixelValue ==0&&_gbe .PageBMWidth ==_afed .Width &&_gbe .PageBMHeight ==_afed .Height ;
|
|
};func (_abe *Globals )GetSegmentByIndex (index int )(*_ge .Header ,error ){const _abf ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _abe ==nil {return nil ,_a .Error (_abf ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_abe .Segments )==0{return nil ,_a .Error (_abf ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_abe .Segments )-1{return nil ,_a .Error (_abf ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
|
|
};return _abe .Segments [index ],nil ;};func (_dfc *Page )getCombinationOperator (_eae *_ge .PageInformationSegment ,_ceb _ff .CombinationOperator )_ff .CombinationOperator {if _eae .CombinationOperatorOverrideAllowed (){return _ceb ;};return _eae .CombinationOperator ();
|
|
};func (_bdf *Document )nextSegmentNumber ()uint32 {_ffbf :=_bdf .CurrentSegmentNumber ;_bdf .CurrentSegmentNumber ++;return _ffbf ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_eef *Document )mapData ()error {const _dcf ="\u006da\u0070\u0044\u0061\u0074\u0061";
|
|
var (_gdf []*_ge .Header ;_daa int64 ;_cefc _ge .Type ;);_agfg ,_gc :=_eef .isFileHeaderPresent ();if _gc !=nil {return _a .Wrap (_gc ,_dcf ,"");};if _agfg {if _gc =_eef .parseFileHeader ();_gc !=nil {return _a .Wrap (_gc ,_dcf ,"");};_daa +=int64 (_eef ._bag );
|
|
_eef .FullHeaders =true ;};var (_ddd *Page ;_dgac bool ;);for _cefc !=51&&!_dgac {_fa ,_ebeg :=_ge .NewHeader (_eef ,_eef .InputStream ,_daa ,_eef .OrganizationType );if _ebeg !=nil {return _a .Wrap (_ebeg ,_dcf ,"");};_e .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",_fa .SegmentNumber ,_fa .Type );
|
|
_cefc =_fa .Type ;if _cefc !=_ge .TEndOfFile {if _fa .PageAssociation !=0{_ddd =_eef .Pages [_fa .PageAssociation ];if _ddd ==nil {_ddd =_gbg (_eef ,_fa .PageAssociation );_eef .Pages [_fa .PageAssociation ]=_ddd ;if _eef .NumberOfPagesUnknown {_eef .NumberOfPages ++;
|
|
};};_ddd .Segments =append (_ddd .Segments ,_fa );}else {_eef .GlobalSegments .AddSegment (_fa );};};_gdf =append (_gdf ,_fa );_daa =_eef .InputStream .StreamPosition ();if _eef .OrganizationType ==_ge .OSequential {_daa +=int64 (_fa .SegmentDataLength );
|
|
};_dgac ,_ebeg =_eef .reachedEOF (_daa );if _ebeg !=nil {_e .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",_ebeg );
|
|
return _a .Wrap (_ebeg ,_dcf ,"");};};_eef .determineRandomDataOffsets (_gdf ,uint64 (_daa ));return nil ;};func _efe (_fcda _f .StreamReader ,_dgec *Globals )(*Document ,error ){_abc :=&Document {Pages :make (map[int ]*Page ),InputStream :_fcda ,OrganizationType :_ge .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_dgec ,_bag :9};
|
|
if _abc .GlobalSegments ==nil {_abc .GlobalSegments =&Globals {};};if _dda :=_abc .mapData ();_dda !=nil {return nil ,_dda ;};return _abc ,nil ;};func (_edgg *Page )countRegions ()int {var _dbc int ;for _ ,_abfe :=range _edgg .Segments {switch _abfe .Type {case 6,7,22,23,38,39,42,43:_dbc ++;
|
|
};};return _dbc ;};func (_dec *Page )GetHeight ()(int ,error ){return _dec .getHeight ()};func (_dfg *Document )parseFileHeader ()error {const _gcg ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_fged :=_dfg .InputStream .Seek (8,_g .SeekStart );
|
|
if _fged !=nil {return _a .Wrap (_fged ,_gcg ,"\u0069\u0064");};_ ,_fged =_dfg .InputStream .ReadBits (5);if _fged !=nil {return _a .Wrap (_fged ,_gcg ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_fffc ,_fged :=_dfg .InputStream .ReadBit ();
|
|
if _fged !=nil {return _a .Wrap (_fged ,_gcg ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _fffc ==1{_dfg .GBUseExtTemplate =true ;};_fffc ,_fged =_dfg .InputStream .ReadBit ();if _fged !=nil {return _a .Wrap (_fged ,_gcg ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
|
|
};if _fffc !=1{_dfg .NumberOfPagesUnknown =false ;};_fffc ,_fged =_dfg .InputStream .ReadBit ();if _fged !=nil {return _a .Wrap (_fged ,_gcg ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_dfg .OrganizationType =_ge .OrganizationType (_fffc );
|
|
if !_dfg .NumberOfPagesUnknown {_dfg .NumberOfPages ,_fged =_dfg .InputStream .ReadUint32 ();if _fged !=nil {return _a .Wrap (_fged ,_gcg ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_dfg ._bag =13;};return nil ;
|
|
};func (_cfd *Document )GetGlobalSegment (i int )(*_ge .Header ,error ){_cca ,_ege :=_cfd .GlobalSegments .GetSegment (i );if _ege !=nil {return nil ,_a .Wrap (_ege ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
|
|
};return _cca ,nil ;};func (_fce *Page )collectPageStripes ()(_dffdf []_ge .Segmenter ,_dgcg error ){const _gac ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _bga _ge .Segmenter ;for _ ,_fbc :=range _fce .Segments {switch _fbc .Type {case 6,7,22,23,38,39,42,43:_bga ,_dgcg =_fbc .GetSegmentData ();
|
|
if _dgcg !=nil {return nil ,_a .Wrap (_dgcg ,_gac ,"");};_dffdf =append (_dffdf ,_bga );case 50:_bga ,_dgcg =_fbc .GetSegmentData ();if _dgcg !=nil {return nil ,_dgcg ;};_gde ,_egd :=_bga .(*_ge .EndOfStripe );if !_egd {return nil ,_a .Errorf (_gac ,"\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",_bga );
|
|
};_dffdf =append (_dffdf ,_gde );_fce .FinalHeight =_gde .LineNumber ();};};return _dffdf ,nil ;};func (_cce *Document )AddClassifiedPage (bm *_ff .Bitmap ,method _ef .Method )(_fc error ){const _ag ="\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 !_cce .FullHeaders &&_cce .NumberOfPages !=0{return _a .Error (_ag ,"\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 _cce .Classer ==nil {if _cce .Classer ,_fc =_ef .Init (_ef .DefaultSettings ());_fc !=nil {return _a .Wrap (_fc ,_ag ,"");};};_fe :=int (_cce .nextPageNumber ());_bc :=&Page {Segments :[]*_ge .Header {},Bitmap :bm ,Document :_cce ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_fe };
|
|
_cce .Pages [_fe ]=_bc ;switch method {case _ef .RankHaus :_bc .EncodingMethod =RankHausEM ;case _ef .Correlation :_bc .EncodingMethod =CorrelationEM ;};_bc .AddPageInformationSegment ();if _fc =_cce .Classer .AddPage (bm ,_fe ,method );_fc !=nil {return _a .Wrap (_fc ,_ag ,"");
|
|
};if _cce .FullHeaders {_bc .AddEndOfPageSegment ();};return nil ;};func (_bge *Page )String ()string {return _ba .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_bge .PageNumber );};func (_caag *Page )AddPageInformationSegment (){_bac :=&_ge .PageInformationSegment {PageBMWidth :_caag .FinalWidth ,PageBMHeight :_caag .FinalHeight ,ResolutionX :_caag .ResolutionX ,ResolutionY :_caag .ResolutionY ,IsLossless :_caag .IsLossless };
|
|
if _caag .BlackIsOne {_bac .DefaultPixelValue =uint8 (0x1);};_dgd :=&_ge .Header {PageAssociation :_caag .PageNumber ,SegmentDataLength :uint64 (_bac .Size ()),SegmentData :_bac ,Type :_ge .TPageInformation };_caag .Segments =append (_caag .Segments ,_dgd );
|
|
};func (_eeg *Document )AddGenericPage (bm *_ff .Bitmap ,duplicateLineRemoval bool )(_fg error ){const _eff ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";if !_eeg .FullHeaders &&_eeg .NumberOfPages !=0{return _a .Error (_eff ,"\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");
|
|
};_ca :=&Page {Segments :[]*_ge .Header {},Bitmap :bm ,Document :_eeg ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_ff .Chocolate };_ca .PageNumber =int (_eeg .nextPageNumber ());_eeg .Pages [_ca .PageNumber ]=_ca ;
|
|
bm .InverseData ();_ca .AddPageInformationSegment ();if _fg =_ca .AddGenericRegion (bm ,0,0,0,_ge .TImmediateGenericRegion ,duplicateLineRemoval );_fg !=nil {return _a .Wrap (_fg ,_eff ,"");};if _eeg .FullHeaders {_ca .AddEndOfPageSegment ();};return nil ;
|
|
};func (_ebe *Document )encodeFileHeader (_cef _f .BinaryWriter )(_dbe int ,_dedc error ){const _daf ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_dbe ,_dedc =_cef .Write (_dg );if _dedc !=nil {return _dbe ,_a .Wrap (_dedc ,_daf ,"\u0069\u0064");
|
|
};if _dedc =_cef .WriteByte (0x01);_dedc !=nil {return _dbe ,_a .Wrap (_dedc ,_daf ,"\u0066\u006c\u0061g\u0073");};_dbe ++;_cdc :=make ([]byte ,4);_bf .BigEndian .PutUint32 (_cdc ,_ebe .NumberOfPages );_aff ,_dedc :=_cef .Write (_cdc );if _dedc !=nil {return _aff ,_a .Wrap (_dedc ,_daf ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
|
|
};_dbe +=_aff ;return _dbe ,nil ;};func (_edcf *Page )GetSegment (number int )(*_ge .Header ,error ){const _gabb ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_cfb :=range _edcf .Segments {if _cfb .SegmentNumber ==uint32 (number ){return _cfb ,nil ;
|
|
};};_aecb :=make ([]uint32 ,len (_edcf .Segments ));for _fgf ,_feab :=range _edcf .Segments {_aecb [_fgf ]=_feab .SegmentNumber ;};return nil ,_a .Errorf (_gabb ,"\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 ,_edcf .PageNumber ,_aecb );
|
|
};func (_bfa *Document )isFileHeaderPresent ()(bool ,error ){_bfa .InputStream .Mark ();for _ ,_gad :=range _dg {_cab ,_fef :=_bfa .InputStream .ReadByte ();if _fef !=nil {return false ,_fef ;};if _gad !=_cab {_bfa .InputStream .Reset ();return false ,nil ;
|
|
};};_bfa .InputStream .Reset ();return true ,nil ;};func (_fea *Page )Encode (w _f .BinaryWriter )(_afbbb int ,_adc error ){const _afee ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _efdbb int ;for _ ,_dag :=range _fea .Segments {if _efdbb ,_adc =_dag .Encode (w );
|
|
_adc !=nil {return _afbbb ,_a .Wrap (_adc ,_afee ,"");};_afbbb +=_efdbb ;};return _afbbb ,nil ;};func DecodeDocument (input _f .StreamReader ,globals *Globals )(*Document ,error ){return _efe (input ,globals );};func (_aed *Globals )AddSegment (segment *_ge .Header ){_aed .Segments =append (_aed .Segments ,segment )};
|
|
func (_gec *Page )AddGenericRegion (bm *_ff .Bitmap ,xloc ,yloc ,template int ,tp _ge .Type ,duplicateLineRemoval bool )error {const _dab ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_dea :=&_ge .GenericRegion {};
|
|
if _fbf :=_dea .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_fbf !=nil {return _a .Wrap (_fbf ,_dab ,"");};_afa :=&_ge .Header {Type :_ge .TImmediateGenericRegion ,PageAssociation :_gec .PageNumber ,SegmentData :_dea };_gec .Segments =append (_gec .Segments ,_afa );
|
|
return nil ;};func (_eeed *Document )Encode ()(_fba []byte ,_gd error ){const _dge ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _afca ,_eaf int ;if _eeed .FullHeaders {if _afca ,_gd =_eeed .encodeFileHeader (_eeed ._ee );
|
|
_gd !=nil {return nil ,_a .Wrap (_gd ,_dge ,"");};};var (_ffe bool ;_db *_ge .Header ;_baa *Page ;);if _gd =_eeed .completeClassifiedPages ();_gd !=nil {return nil ,_a .Wrap (_gd ,_dge ,"");};if _gd =_eeed .produceClassifiedPages ();_gd !=nil {return nil ,_a .Wrap (_gd ,_dge ,"");
|
|
};if _eeed .GlobalSegments !=nil {for _ ,_db =range _eeed .GlobalSegments .Segments {if _gd =_eeed .encodeSegment (_db ,&_afca );_gd !=nil {return nil ,_a .Wrap (_gd ,_dge ,"");};};};for _afeg :=1;_afeg <=int (_eeed .NumberOfPages );_afeg ++{if _baa ,_ffe =_eeed .Pages [_afeg ];
|
|
!_ffe {return nil ,_a .Errorf (_dge ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_afeg );};for _ ,_db =range _baa .Segments {if _gd =_eeed .encodeSegment (_db ,&_afca );_gd !=nil {return nil ,_a .Wrap (_gd ,_dge ,"");
|
|
};};};if _eeed .FullHeaders {if _eaf ,_gd =_eeed .encodeEOFHeader (_eeed ._ee );_gd !=nil {return nil ,_a .Wrap (_gd ,_dge ,"");};_afca +=_eaf ;};_fba =_eeed ._ee .Data ();if len (_fba )!=_afca {_e .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",_afca ,len (_fba ));
|
|
};return _fba ,nil ;};func (_aa *Document )addSymbolDictionary (_dd int ,_cdb *_ff .Bitmaps ,_ddf []int ,_debf map[int ]int ,_afc bool )(*_ge .Header ,error ){const _afb ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
|
|
_ead :=&_ge .SymbolDictionary {};if _eba :=_ead .InitEncode (_cdb ,_ddf ,_debf ,_afc );_eba !=nil {return nil ,_eba ;};_bfe :=&_ge .Header {Type :_ge .TSymbolDictionary ,PageAssociation :_dd ,SegmentData :_ead };if _dd ==0{if _aa .GlobalSegments ==nil {_aa .GlobalSegments =&Globals {};
|
|
};_aa .GlobalSegments .AddSegment (_bfe );return _bfe ,nil ;};_edc ,_eee :=_aa .Pages [_dd ];if !_eee {return nil ,_a .Errorf (_afb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_dd );};var (_ccb int ;
|
|
_aga *_ge .Header ;);for _ccb ,_aga =range _edc .Segments {if _aga .Type ==_ge .TPageInformation {break ;};};_ccb ++;_edc .Segments =append (_edc .Segments ,nil );copy (_edc .Segments [_ccb +1:],_edc .Segments [_ccb :]);_edc .Segments [_ccb ]=_bfe ;return _bfe ,nil ;
|
|
};func (_afab *Page )nextSegmentNumber ()uint32 {return _afab .Document .nextSegmentNumber ()};func (_cecb *Page )getResolutionY ()(int ,error ){const _cgdc ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _cecb .ResolutionY !=0{return _cecb .ResolutionY ,nil ;
|
|
};_baf :=_cecb .getPageInformationSegment ();if _baf ==nil {return 0,_a .Error (_cgdc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_abde ,_dgg :=_baf .GetSegmentData ();if _dgg !=nil {return 0,_a .Wrap (_dgg ,_cgdc ,"");
|
|
};_ecgd ,_egef :=_abde .(*_ge .PageInformationSegment );if !_egef {return 0,_a .Errorf (_cgdc ,"\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",_abde );
|
|
};_cecb .ResolutionY =_ecgd .ResolutionY ;return _cecb .ResolutionY ,nil ;};func (_cfe *Document )completeClassifiedPages ()(_agc error ){const _bb ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
|
|
if _cfe .Classer ==nil {return nil ;};_cfe ._ga =make ([]int ,_cfe .Classer .UndilatedTemplates .Size ());for _bfd :=0;_bfd < _cfe .Classer .ClassIDs .Size ();_bfd ++{_af ,_bd :=_cfe .Classer .ClassIDs .Get (_bfd );if _bd !=nil {return _a .Wrapf (_bd ,_bb ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_bfd );
|
|
};_cfe ._ga [_af ]++;};var _ea []int ;for _caa :=0;_caa < _cfe .Classer .UndilatedTemplates .Size ();_caa ++{if _cfe .NumberOfPages ==1||_cfe ._ga [_caa ]> 1{_ea =append (_ea ,_caa );};};var (_fb *Page ;_agf bool ;);for _bce ,_cg :=range *_cfe .Classer .ComponentPageNumbers {if _fb ,_agf =_cfe .Pages [_cg ];
|
|
!_agf {return _a .Errorf (_bb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_bce );};if _fb .EncodingMethod ==GenericEM {_e .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",_bce );
|
|
continue ;};_cfe ._geg [_cg ]=append (_cfe ._geg [_cg ],_bce );_de ,_cd :=_cfe .Classer .ClassIDs .Get (_bce );if _cd !=nil {return _a .Wrapf (_cd ,_bb ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_bce );
|
|
};if _cfe ._ga [_de ]==1&&_cfe .NumberOfPages !=1{_ad :=append (_cfe ._dgb [_cg ],_de );_cfe ._dgb [_cg ]=_ad ;};};if _agc =_cfe .Classer .ComputeLLCorners ();_agc !=nil {return _a .Wrap (_agc ,_bb ,"");};if _ ,_agc =_cfe .addSymbolDictionary (0,_cfe .Classer .UndilatedTemplates ,_ea ,_cfe ._ce ,false );
|
|
_agc !=nil {return _a .Wrap (_agc ,_bb ,"");};return nil ;};func _gbg (_bbf *Document ,_ebgf int )*Page {return &Page {Document :_bbf ,PageNumber :_ebgf ,Segments :[]*_ge .Header {}};};func (_fbd *Page )addTextRegionSegment (_dff []*_ge .Header ,_gbc ,_fgg map[int ]int ,_ebg []int ,_edcg *_ff .Points ,_cad *_ff .Bitmaps ,_fbg *_cc .IntSlice ,_afg *_ff .Boxes ,_ddg ,_baaeg int ){_efdb :=&_ge .TextRegion {NumberOfSymbols :uint32 (_baaeg )};
|
|
_efdb .InitEncode (_gbc ,_fgg ,_ebg ,_edcg ,_cad ,_fbg ,_afg ,_fbd .FinalWidth ,_fbd .FinalHeight ,_ddg );_cgda :=&_ge .Header {RTSegments :_dff ,SegmentData :_efdb ,PageAssociation :_fbd .PageNumber ,Type :_ge .TImmediateTextRegion };_agda :=_ge .TPageInformation ;
|
|
if _fgg !=nil {_agda =_ge .TSymbolDictionary ;};var _aae int ;for ;_aae < len (_fbd .Segments );_aae ++{if _fbd .Segments [_aae ].Type ==_agda {_aae ++;break ;};};_fbd .Segments =append (_fbd .Segments ,nil );copy (_fbd .Segments [_aae +1:],_fbd .Segments [_aae :]);
|
|
_fbd .Segments [_aae ]=_cgda ;};func (_eg *Document )produceClassifiedPage (_cgd *Page ,_be *_ge .Header )(_ec error ){const _ceg ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _ab map[int ]int ;
|
|
_bda :=_eg ._cf ;_gab :=[]*_ge .Header {_be };if len (_eg ._dgb [_cgd .PageNumber ])> 0{_ab =map[int ]int {};_ae ,_gg :=_eg .addSymbolDictionary (_cgd .PageNumber ,_eg .Classer .UndilatedTemplates ,_eg ._dgb [_cgd .PageNumber ],_ab ,false );if _gg !=nil {return _a .Wrap (_gg ,_ceg ,"");
|
|
};_gab =append (_gab ,_ae );_bda +=len (_eg ._dgb [_cgd .PageNumber ]);};_da :=_eg ._geg [_cgd .PageNumber ];_e .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_cgd .PageNumber ,_da );_cgd .addTextRegionSegment (_gab ,_eg ._ce ,_ab ,_eg ._geg [_cgd .PageNumber ],_eg .Classer .PtaLL ,_eg .Classer .UndilatedTemplates ,_eg .Classer .ClassIDs ,nil ,_ffd (_bda ),len (_eg ._geg [_cgd .PageNumber ]));
|
|
return nil ;};func (_dddfa *Page )getHeight ()(int ,error ){const _cfdc ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _dddfa .FinalHeight !=0{return _dddfa .FinalHeight ,nil ;};_gdb :=_dddfa .getPageInformationSegment ();if _gdb ==nil {return 0,_a .Error (_cfdc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
|
|
};_eeec ,_bedg :=_gdb .GetSegmentData ();if _bedg !=nil {return 0,_a .Wrap (_bedg ,_cfdc ,"");};_aeb ,_fdc :=_eeec .(*_ge .PageInformationSegment );if !_fdc {return 0,_a .Errorf (_cfdc ,"\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",_eeec );
|
|
};if _aeb .PageBMHeight ==_d .MaxInt32 {_ ,_bedg =_dddfa .GetBitmap ();if _bedg !=nil {return 0,_a .Wrap (_bedg ,_cfdc ,"");};}else {_dddfa .FinalHeight =_aeb .PageBMHeight ;};return _dddfa .FinalHeight ,nil ;}; |