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 (_g "encoding/binary";_f "fmt";_gb "github.com/unidoc/unipdf/v3/common";_df "github.com/unidoc/unipdf/v3/internal/bitwise";_gg "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_c "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
|
|
_gba "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_cb "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_gff "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_gf "io";_d "math";_da "runtime/debug";);func (_bd *Document )isFileHeaderPresent ()(bool ,error ){_bd .InputStream .Mark ();
|
|
for _ ,_bb :=range _dg {_cgb ,_bacb :=_bd .InputStream .ReadByte ();if _bacb !=nil {return false ,_bacb ;};if _bb !=_cgb {_bd .InputStream .Reset ();return false ,nil ;};};_bd .InputStream .Reset ();return true ,nil ;};func (_bgabd *Page )String ()string {return _f .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_bgabd .PageNumber );
|
|
};func (_egb *Page )createStripedPage (_ffec *_gba .PageInformationSegment )error {const _adca ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_bgc ,_fbdc :=_egb .collectPageStripes ();if _fbdc !=nil {return _gff .Wrap (_fbdc ,_adca ,"");
|
|
};var _caff int ;for _ ,_gca :=range _bgc {if _cgca ,_gedb :=_gca .(*_gba .EndOfStripe );_gedb {_caff =_cgca .LineNumber ()+1;}else {_decd :=_gca .(_gba .Regioner );_bfgb :=_decd .GetRegionInfo ();_edac :=_egb .getCombinationOperator (_ffec ,_bfgb .CombinaionOperator );
|
|
_dca ,_eac :=_decd .GetRegionBitmap ();if _eac !=nil {return _gff .Wrap (_eac ,_adca ,"");};_eac =_c .Blit (_dca ,_egb .Bitmap ,int (_bfgb .XLocation ),_caff ,_edac );if _eac !=nil {return _gff .Wrap (_eac ,_adca ,"");};};};return nil ;};func (_bc *Document )AddGenericPage (bm *_c .Bitmap ,duplicateLineRemoval bool )(_ffg error ){const _fd ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
|
|
if !_bc .FullHeaders &&_bc .NumberOfPages !=0{return _gff .Error (_fd ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");
|
|
};_ba :=&Page {Segments :[]*_gba .Header {},Bitmap :bm ,Document :_bc ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_c .Chocolate };_ba .PageNumber =int (_bc .nextPageNumber ());_bc .Pages [_ba .PageNumber ]=_ba ;
|
|
bm .InverseData ();_ba .AddPageInformationSegment ();if _ffg =_ba .AddGenericRegion (bm ,0,0,0,_gba .TImmediateGenericRegion ,duplicateLineRemoval );_ffg !=nil {return _gff .Wrap (_ffg ,_fd ,"");};if _bc .FullHeaders {_ba .AddEndOfPageSegment ();};return nil ;
|
|
};func _efb (_ge int )int {_gfa :=0;_efd :=(_ge &(_ge -1))==0;_ge >>=1;for ;_ge !=0;_ge >>=1{_gfa ++;};if _efd {return _gfa ;};return _gfa +1;};func (_gda *Page )GetHeight ()(int ,error ){return _gda .getHeight ()};func (_bga *Document )encodeSegment (_gbg *_gba .Header ,_dcb *int )error {const _eg ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
|
|
_gbg .SegmentNumber =_bga .nextSegmentNumber ();_ddc ,_bgag :=_gbg .Encode (_bga ._ffc );if _bgag !=nil {return _gff .Wrapf (_bgag ,_eg ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_gbg .SegmentNumber );};*_dcb +=_ddc ;
|
|
return nil ;};func (_dcbd *Document )GetGlobalSegment (i int )(*_gba .Header ,error ){_gfg ,_cde :=_dcbd .GlobalSegments .GetSegment (i );if _cde !=nil {return nil ,_gff .Wrap (_cde ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
|
|
};return _gfg ,nil ;};type Globals struct{Segments []*_gba .Header ;};func (_fag *Document )GetPage (pageNumber int )(_gba .Pager ,error ){const _dbb ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_gb .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 ,_da .Stack ());
|
|
return nil ,_gff .Errorf (_dbb ,"\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 (_fag .Pages ){_gb .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_da .Stack ());return nil ,_gff .Error (_dbb ,"\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");
|
|
};_egf ,_gac :=_fag .Pages [pageNumber ];if !_gac {_gb .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_da .Stack ());return nil ,_gff .Errorf (_dbb ,"\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 _egf ,nil ;};func (_bde *Page )lastSegmentNumber ()(_dfb uint32 ,_ggdb error ){const _aee ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_bde .Segments )==0{return _dfb ,_gff .Errorf (_aee ,"\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",_bde .PageNumber );
|
|
};return _bde .Segments [len (_bde .Segments )-1].SegmentNumber ,nil ;};func (_ggf *Page )clearSegmentData (){for _deg :=range _ggf .Segments {_ggf .Segments [_deg ].CleanSegmentData ();};};func (_bad *Page )createNormalPage (_ccbg *_gba .PageInformationSegment )error {const _def ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";
|
|
_bad .Bitmap =_c .New (_ccbg .PageBMWidth ,_ccbg .PageBMHeight );if _ccbg .DefaultPixelValue !=0{_bad .Bitmap .SetDefaultPixel ();};for _ ,_fcd :=range _bad .Segments {switch _fcd .Type {case 6,7,22,23,38,39,42,43:_gb .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_fcd .SegmentNumber );
|
|
_fed ,_efc :=_fcd .GetSegmentData ();if _efc !=nil {return _efc ;};_eabg ,_fabf :=_fed .(_gba .Regioner );if !_fabf {_gb .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",_fed );
|
|
return _gff .Errorf (_def ,"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",_fed );
|
|
};_cag ,_efc :=_eabg .GetRegionBitmap ();if _efc !=nil {return _gff .Wrap (_efc ,_def ,"");};if _bad .fitsPage (_ccbg ,_cag ){_bad .Bitmap =_cag ;}else {_cbca :=_eabg .GetRegionInfo ();_fgd :=_bad .getCombinationOperator (_ccbg ,_cbca .CombinaionOperator );
|
|
_efc =_c .Blit (_cag ,_bad .Bitmap ,int (_cbca .XLocation ),int (_cbca .YLocation ),_fgd );if _efc !=nil {return _gff .Wrap (_efc ,_def ,"");};};};};return nil ;};func (_bcg *Document )encodeFileHeader (_geg _df .BinaryWriter )(_ffga int ,_eegc error ){const _dfd ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
|
|
_ffga ,_eegc =_geg .Write (_dg );if _eegc !=nil {return _ffga ,_gff .Wrap (_eegc ,_dfd ,"\u0069\u0064");};if _eegc =_geg .WriteByte (0x01);_eegc !=nil {return _ffga ,_gff .Wrap (_eegc ,_dfd ,"\u0066\u006c\u0061g\u0073");};_ffga ++;_fab :=make ([]byte ,4);
|
|
_g .BigEndian .PutUint32 (_fab ,_bcg .NumberOfPages );_fcc ,_eegc :=_geg .Write (_fab );if _eegc !=nil {return _fcc ,_gff .Wrap (_eegc ,_dfd ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_ffga +=_fcc ;return _ffga ,nil ;};func (_defc *Page )countRegions ()int {var _ecf int ;
|
|
for _ ,_dacd :=range _defc .Segments {switch _dacd .Type {case 6,7,22,23,38,39,42,43:_ecf ++;};};return _ecf ;};func (_bac *Document )completeClassifiedPages ()(_cf error ){const _db ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
|
|
if _bac .Classer ==nil {return nil ;};_bac ._ef =make ([]int ,_bac .Classer .UndilatedTemplates .Size ());for _dff :=0;_dff < _bac .Classer .ClassIDs .Size ();_dff ++{_a ,_ffe :=_bac .Classer .ClassIDs .Get (_dff );if _ffe !=nil {return _gff .Wrapf (_ffe ,_db ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_dff );
|
|
};_bac ._ef [_a ]++;};var _aa []int ;for _dba :=0;_dba < _bac .Classer .UndilatedTemplates .Size ();_dba ++{if _bac .NumberOfPages ==1||_bac ._ef [_dba ]> 1{_aa =append (_aa ,_dba );};};var (_dc *Page ;_cg bool ;);for _efe ,_bg :=range *_bac .Classer .ComponentPageNumbers {if _dc ,_cg =_bac .Pages [_bg ];
|
|
!_cg {return _gff .Errorf (_db ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_efe );};if _dc .EncodingMethod ==GenericEM {_gb .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",_efe );
|
|
continue ;};_bac ._fc [_bg ]=append (_bac ._fc [_bg ],_efe );_ag ,_ec :=_bac .Classer .ClassIDs .Get (_efe );if _ec !=nil {return _gff .Wrapf (_ec ,_db ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_efe );
|
|
};if _bac ._ef [_ag ]==1&&_bac .NumberOfPages !=1{_af :=append (_bac ._b [_bg ],_ag );_bac ._b [_bg ]=_af ;};};if _cf =_bac .Classer .ComputeLLCorners ();_cf !=nil {return _gff .Wrap (_cf ,_db ,"");};if _ ,_cf =_bac .addSymbolDictionary (0,_bac .Classer .UndilatedTemplates ,_aa ,_bac ._be ,false );
|
|
_cf !=nil {return _gff .Wrap (_cf ,_db ,"");};return nil ;};type Page struct{Segments []*_gba .Header ;PageNumber int ;Bitmap *_c .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;
|
|
EncodingMethod EncodingMethod ;BlackIsOne bool ;};func (_dge *Document )GetNumberOfPages ()(uint32 ,error ){if _dge .NumberOfPagesUnknown ||_dge .NumberOfPages ==0{if len (_dge .Pages )==0{if _daef :=_dge .mapData ();_daef !=nil {return 0,_gff .Wrap (_daef ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");
|
|
};};return uint32 (len (_dge .Pages )),nil ;};return _dge .NumberOfPages ,nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream *_df .Reader ;GlobalSegments *Globals ;OrganizationType _gba .OrganizationType ;
|
|
Classer *_cb .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_c .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_ff uint8 ;_ffc *_df .BufferedWriter ;EncodeGlobals bool ;_ffd int ;_b map[int ][]int ;
|
|
_fc map[int ][]int ;_ef []int ;_be map[int ]int ;};func (_cagg *Page )getResolutionX ()(int ,error ){const _afgd ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _cagg .ResolutionX !=0{return _cagg .ResolutionX ,nil ;
|
|
};_abf :=_cagg .getPageInformationSegment ();if _abf ==nil {return 0,_gff .Error (_afgd ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_dce ,_afe :=_abf .GetSegmentData ();if _afe !=nil {return 0,_gff .Wrap (_afe ,_afgd ,"");
|
|
};_fdef ,_gcaf :=_dce .(*_gba .PageInformationSegment );if !_gcaf {return 0,_gff .Errorf (_afgd ,"\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",_dce );
|
|
};_cagg .ResolutionX =_fdef .ResolutionX ;return _cagg .ResolutionX ,nil ;};func (_ffgaf *Page )createPage (_ffa *_gba .PageInformationSegment )error {var _caa error ;if !_ffa .IsStripe ||_ffa .PageBMHeight !=-1{_caa =_ffgaf .createNormalPage (_ffa );}else {_caa =_ffgaf .createStripedPage (_ffa );
|
|
};return _caa ;};func (_efa *Document )encodeEOFHeader (_gab _df .BinaryWriter )(_eab int ,_gge error ){_fcb :=&_gba .Header {SegmentNumber :_efa .nextSegmentNumber (),Type :_gba .TEndOfFile };if _eab ,_gge =_fcb .Encode (_gab );_gge !=nil {return 0,_gff .Wrap (_gge ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");
|
|
};return _eab ,nil ;};func (_ggcd *Page )getResolutionY ()(int ,error ){const _bdc ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _ggcd .ResolutionY !=0{return _ggcd .ResolutionY ,nil ;};_cbb :=_ggcd .getPageInformationSegment ();
|
|
if _cbb ==nil {return 0,_gff .Error (_bdc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bdga ,_dace :=_cbb .GetSegmentData ();if _dace !=nil {return 0,_gff .Wrap (_dace ,_bdc ,"");};_fdgg ,_bef :=_bdga .(*_gba .PageInformationSegment );
|
|
if !_bef {return 0,_gff .Errorf (_bdc ,"\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",_bdga );
|
|
};_ggcd .ResolutionY =_fdgg .ResolutionY ;return _ggcd .ResolutionY ,nil ;};func (_dac *Page )addTextRegionSegment (_aefb []*_gba .Header ,_fff ,_bca map[int ]int ,_gfad []int ,_fcbf *_c .Points ,_deb *_c .Bitmaps ,_dag *_gg .IntSlice ,_eafd *_c .Boxes ,_edga ,_cefg int ){_eda :=&_gba .TextRegion {NumberOfSymbols :uint32 (_cefg )};
|
|
_eda .InitEncode (_fff ,_bca ,_gfad ,_fcbf ,_deb ,_dag ,_eafd ,_dac .FinalWidth ,_dac .FinalHeight ,_edga );_ccb :=&_gba .Header {RTSegments :_aefb ,SegmentData :_eda ,PageAssociation :_dac .PageNumber ,Type :_gba .TImmediateTextRegion };_ddd :=_gba .TPageInformation ;
|
|
if _bca !=nil {_ddd =_gba .TSymbolDictionary ;};var _afg int ;for ;_afg < len (_dac .Segments );_afg ++{if _dac .Segments [_afg ].Type ==_ddd {_afg ++;break ;};};_dac .Segments =append (_dac .Segments ,nil );copy (_dac .Segments [_afg +1:],_dac .Segments [_afg :]);
|
|
_dac .Segments [_afg ]=_ccb ;};func (_ecb *Globals )GetSymbolDictionary ()(*_gba .Header ,error ){const _gd ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";if _ecb ==nil {return nil ,_gff .Error (_gd ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_ecb .Segments )==0{return nil ,_gff .Error (_gd ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};for _ ,_dabb :=range _ecb .Segments {if _dabb .Type ==_gba .TSymbolDictionary {return _dabb ,nil ;
|
|
};};return nil ,_gff .Error (_gd ,"\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 (_cgd *Document )parseFileHeader ()error {const _daa ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
|
|
_ ,_agf :=_cgd .InputStream .Seek (8,_gf .SeekStart );if _agf !=nil {return _gff .Wrap (_agf ,_daa ,"\u0069\u0064");};_ ,_agf =_cgd .InputStream .ReadBits (5);if _agf !=nil {return _gff .Wrap (_agf ,_daa ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");
|
|
};_eae ,_agf :=_cgd .InputStream .ReadBit ();if _agf !=nil {return _gff .Wrap (_agf ,_daa ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _eae ==1{_cgd .GBUseExtTemplate =true ;};_eae ,_agf =_cgd .InputStream .ReadBit ();
|
|
if _agf !=nil {return _gff .Wrap (_agf ,_daa ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _eae !=1{_cgd .NumberOfPagesUnknown =false ;};_eae ,_agf =_cgd .InputStream .ReadBit ();if _agf !=nil {return _gff .Wrap (_agf ,_daa ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");
|
|
};_cgd .OrganizationType =_gba .OrganizationType (_eae );if !_cgd .NumberOfPagesUnknown {_cgd .NumberOfPages ,_agf =_cgd .InputStream .ReadUint32 ();if _agf !=nil {return _gff .Wrap (_agf ,_daa ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");
|
|
};_cgd ._ff =13;};return nil ;};func (_bfg *Page )GetBitmap ()(_geda *_c .Bitmap ,_afd error ){_gb .Log .Trace (_f .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",_bfg .PageNumber ));
|
|
defer func (){if _afd !=nil {_gb .Log .Trace (_f .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",_bfg .PageNumber ,_afd ));
|
|
}else {_gb .Log .Trace (_f .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",_bfg .PageNumber ));};}();if _bfg .Bitmap !=nil {return _bfg .Bitmap ,nil ;
|
|
};_afd =_bfg .composePageBitmap ();if _afd !=nil {return nil ,_afd ;};return _bfg .Bitmap ,nil ;};func (_edc *Page )AddPageInformationSegment (){_gedg :=&_gba .PageInformationSegment {PageBMWidth :_edc .FinalWidth ,PageBMHeight :_edc .FinalHeight ,ResolutionX :_edc .ResolutionX ,ResolutionY :_edc .ResolutionY ,IsLossless :_edc .IsLossless };
|
|
if _edc .BlackIsOne {_gedg .DefaultPixelValue =uint8 (0x1);};_fbd :=&_gba .Header {PageAssociation :_edc .PageNumber ,SegmentDataLength :uint64 (_gedg .Size ()),SegmentData :_gedg ,Type :_gba .TPageInformation };_edc .Segments =append (_edc .Segments ,_fbd );
|
|
};type EncodingMethod int ;func (_eeb *Document )mapData ()error {const _ed ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_ged []*_gba .Header ;_dee int64 ;_baf _gba .Type ;);_eef ,_dec :=_eeb .isFileHeaderPresent ();if _dec !=nil {return _gff .Wrap (_dec ,_ed ,"");
|
|
};if _eef {if _dec =_eeb .parseFileHeader ();_dec !=nil {return _gff .Wrap (_dec ,_ed ,"");};_dee +=int64 (_eeb ._ff );_eeb .FullHeaders =true ;};var (_ad *Page ;_fgg bool ;);for _baf !=51&&!_fgg {_fdg ,_cbc :=_gba .NewHeader (_eeb ,_eeb .InputStream ,_dee ,_eeb .OrganizationType );
|
|
if _cbc !=nil {return _gff .Wrap (_cbc ,_ed ,"");};_gb .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",_fdg .SegmentNumber ,_fdg .Type );
|
|
_baf =_fdg .Type ;if _baf !=_gba .TEndOfFile {if _fdg .PageAssociation !=0{_ad =_eeb .Pages [_fdg .PageAssociation ];if _ad ==nil {_ad =_cbf (_eeb ,_fdg .PageAssociation );_eeb .Pages [_fdg .PageAssociation ]=_ad ;if _eeb .NumberOfPagesUnknown {_eeb .NumberOfPages ++;
|
|
};};_ad .Segments =append (_ad .Segments ,_fdg );}else {_eeb .GlobalSegments .AddSegment (_fdg );};};_ged =append (_ged ,_fdg );_dee =_eeb .InputStream .AbsolutePosition ();if _eeb .OrganizationType ==_gba .OSequential {_dee +=int64 (_fdg .SegmentDataLength );
|
|
};_fgg ,_cbc =_eeb .reachedEOF (_dee );if _cbc !=nil {_gb .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",_cbc );
|
|
return _gff .Wrap (_cbc ,_ed ,"");};};_eeb .determineRandomDataOffsets (_ged ,uint64 (_dee ));return nil ;};func (_ffdg *Document )Encode ()(_cfe []byte ,_age error ){const _bcf ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
var _gee ,_gga int ;if _ffdg .FullHeaders {if _gee ,_age =_ffdg .encodeFileHeader (_ffdg ._ffc );_age !=nil {return nil ,_gff .Wrap (_age ,_bcf ,"");};};var (_eccc bool ;_ae *_gba .Header ;_fgf *Page ;);if _age =_ffdg .completeClassifiedPages ();_age !=nil {return nil ,_gff .Wrap (_age ,_bcf ,"");
|
|
};if _age =_ffdg .produceClassifiedPages ();_age !=nil {return nil ,_gff .Wrap (_age ,_bcf ,"");};if _ffdg .GlobalSegments !=nil {for _ ,_ae =range _ffdg .GlobalSegments .Segments {if _age =_ffdg .encodeSegment (_ae ,&_gee );_age !=nil {return nil ,_gff .Wrap (_age ,_bcf ,"");
|
|
};};};for _bge :=1;_bge <=int (_ffdg .NumberOfPages );_bge ++{if _fgf ,_eccc =_ffdg .Pages [_bge ];!_eccc {return nil ,_gff .Errorf (_bcf ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_bge );};for _ ,_ae =range _fgf .Segments {if _age =_ffdg .encodeSegment (_ae ,&_gee );
|
|
_age !=nil {return nil ,_gff .Wrap (_age ,_bcf ,"");};};};if _ffdg .FullHeaders {if _gga ,_age =_ffdg .encodeEOFHeader (_ffdg ._ffc );_age !=nil {return nil ,_gff .Wrap (_age ,_bcf ,"");};_gee +=_gga ;};_cfe =_ffdg ._ffc .Data ();if len (_cfe )!=_gee {_gb .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",_gee ,len (_cfe ));
|
|
};return _cfe ,nil ;};func (_de *Document )determineRandomDataOffsets (_fadb []*_gba .Header ,_cc uint64 ){if _de .OrganizationType !=_gba .ORandom {return ;};for _ ,_cdf :=range _fadb {_cdf .SegmentDataStartOffset =_cc ;_cc +=_cdf .SegmentDataLength ;
|
|
};};func (_gce *Page )composePageBitmap ()error {const _afgf ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _gce .PageNumber ==0{return nil ;};_cdc :=_gce .getPageInformationSegment ();if _cdc ==nil {return _gff .Error (_afgf ,"\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");
|
|
};_fcca ,_eec :=_cdc .GetSegmentData ();if _eec !=nil {return _eec ;};_ddf ,_bege :=_fcca .(*_gba .PageInformationSegment );if !_bege {return _gff .Error (_afgf ,"\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 _eec =_gce .createPage (_ddf );_eec !=nil {return _gff .Wrap (_eec ,_afgf ,"");};_gce .clearSegmentData ();return nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_ffc :_df .BufferedMSB (),Pages :map[int ]*Page {},_b :map[int ][]int {},_be :map[int ]int {},_fc :map[int ][]int {}};
|
|
};func (_eb *Page )collectPageStripes ()(_gagc []_gba .Segmenter ,_gbac error ){const _geec ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _bdge _gba .Segmenter ;for _ ,_fffe :=range _eb .Segments {switch _fffe .Type {case 6,7,22,23,38,39,42,43:_bdge ,_gbac =_fffe .GetSegmentData ();
|
|
if _gbac !=nil {return nil ,_gff .Wrap (_gbac ,_geec ,"");};_gagc =append (_gagc ,_bdge );case 50:_bdge ,_gbac =_fffe .GetSegmentData ();if _gbac !=nil {return nil ,_gbac ;};_cfa ,_eaa :=_bdge .(*_gba .EndOfStripe );if !_eaa {return nil ,_gff .Errorf (_geec ,"\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",_bdge );
|
|
};_gagc =append (_gagc ,_cfa );_eb .FinalHeight =_cfa .LineNumber ();};};return _gagc ,nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_aca *Globals )GetSegment (segmentNumber int )(*_gba .Header ,error ){const _bgb ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";
|
|
if _aca ==nil {return nil ,_gff .Error (_bgb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_aca .Segments )==0{return nil ,_gff .Error (_bgb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};var _fbg *_gba .Header ;for _ ,_fbg =range _aca .Segments {if _fbg .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _fbg ==nil {return nil ,_gff .Error (_bgb ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
|
|
};return _fbg ,nil ;};func (_dd *Document )produceClassifiedPages ()(_dfg error ){const _aaa ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _dd .Classer ==nil {return nil ;};var (_dbe *Page ;
|
|
_cd bool ;_ga *_gba .Header ;);for _ggc :=1;_ggc <=int (_dd .NumberOfPages );_ggc ++{if _dbe ,_cd =_dd .Pages [_ggc ];!_cd {return _gff .Errorf (_aaa ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ggc );
|
|
};if _dbe .EncodingMethod ==GenericEM {continue ;};if _ga ==nil {if _ga ,_dfg =_dd .GlobalSegments .GetSymbolDictionary ();_dfg !=nil {return _gff .Wrap (_dfg ,_aaa ,"");};};if _dfg =_dd .produceClassifiedPage (_dbe ,_ga );_dfg !=nil {return _gff .Wrapf (_dfg ,_aaa ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_ggc );
|
|
};};return nil ;};func (_bed *Page )Encode (w _df .BinaryWriter )(_ceeb int ,_bcga error ){const _bgd ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _fba int ;for _ ,_gfab :=range _bed .Segments {if _fba ,_bcga =_gfab .Encode (w );
|
|
_bcga !=nil {return _ceeb ,_gff .Wrap (_bcga ,_bgd ,"");};_ceeb +=_fba ;};return _ceeb ,nil ;};func DecodeDocument (input *_df .Reader ,globals *Globals )(*Document ,error ){return _fdc (input ,globals );};func (_bfd *Document )nextSegmentNumber ()uint32 {_fea :=_bfd .CurrentSegmentNumber ;
|
|
_bfd .CurrentSegmentNumber ++;return _fea ;};func (_cda *Document )reachedEOF (_geeb int64 )(bool ,error ){const _cdfg ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_edg :=_cda .InputStream .Seek (_geeb ,_gf .SeekStart );if _edg !=nil {_gb .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",_edg );
|
|
return false ,_gff .Wrap (_edg ,_cdfg ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_edg =_cda .InputStream .ReadBits (32);if _edg ==_gf .EOF {return true ,nil ;
|
|
}else if _edg !=nil {return false ,_gff .Wrap (_edg ,_cdfg ,"");};return false ,nil ;};func (_dbd *Page )GetWidth ()(int ,error ){return _dbd .getWidth ()};func (_bgab *Globals )AddSegment (segment *_gba .Header ){_bgab .Segments =append (_bgab .Segments ,segment );
|
|
};var _dg =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_cbcd *Page )GetResolutionY ()(int ,error ){return _cbcd .getResolutionY ()};func (_faf *Globals )GetSegmentByIndex (index int )(*_gba .Header ,error ){const _cgc ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";
|
|
if _faf ==nil {return nil ,_gff .Error (_cgc ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_faf .Segments )==0{return nil ,_gff .Error (_cgc ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};if index > len (_faf .Segments )-1{return nil ,_gff .Error (_cgc ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _faf .Segments [index ],nil ;};func (_cbae *Page )GetSegment (number int )(*_gba .Header ,error ){const _gcf ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
|
|
for _ ,_bdd :=range _cbae .Segments {if _bdd .SegmentNumber ==uint32 (number ){return _bdd ,nil ;};};_eed :=make ([]uint32 ,len (_cbae .Segments ));for _gfd ,_aeg :=range _cbae .Segments {_eed [_gfd ]=_aeg .SegmentNumber ;};return nil ,_gff .Errorf (_gcf ,"\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 ,_cbae .PageNumber ,_eed );
|
|
};func (_gcb *Page )fitsPage (_gabd *_gba .PageInformationSegment ,_dgd *_c .Bitmap )bool {return _gcb .countRegions ()==1&&_gabd .DefaultPixelValue ==0&&_gabd .PageBMWidth ==_dgd .Width &&_gabd .PageBMHeight ==_dgd .Height ;};func (_efcd *Page )getPageInformationSegment ()*_gba .Header {for _ ,_bgdg :=range _efcd .Segments {if _bgdg .Type ==_gba .TPageInformation {return _bgdg ;
|
|
};};_gb .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",_efcd );
|
|
return nil ;};func (_ggd *Page )GetResolutionX ()(int ,error ){return _ggd .getResolutionX ()};func (_gef *Document )completeSymbols ()(_ea error ){const _cab ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _gef .Classer ==nil {return nil ;
|
|
};if _gef .Classer .UndilatedTemplates ==nil {return _gff .Error (_cab ,"\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");};_eeg :=len (_gef .Pages )==1;
|
|
_cef :=make ([]int ,_gef .Classer .UndilatedTemplates .Size ());var _geb int ;for _ggcf :=0;_ggcf < _gef .Classer .ClassIDs .Size ();_ggcf ++{_geb ,_ea =_gef .Classer .ClassIDs .Get (_ggcf );if _ea !=nil {return _gff .Wrap (_ea ,_cab ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
|
|
};_cef [_geb ]++;};var _gad []int ;for _bee :=0;_bee < _gef .Classer .UndilatedTemplates .Size ();_bee ++{if _cef [_bee ]==0{return _gff .Error (_cab ,"\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 _cef [_bee ]> 1||_eeg {_gad =append (_gad ,_bee );};};_gef ._ffd =len (_gad );var _fb ,_afa int ;for _dcg :=0;_dcg < _gef .Classer .ComponentPageNumbers .Size ();_dcg ++{_fb ,_ea =_gef .Classer .ComponentPageNumbers .Get (_dcg );if _ea !=nil {return _gff .Wrapf (_ea ,_cab ,"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",_dcg );
|
|
};_afa ,_ea =_gef .Classer .ClassIDs .Get (_dcg );if _ea !=nil {return _gff .Wrapf (_ea ,_cab ,"\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",_fb );
|
|
};if _cef [_afa ]==1&&!_eeg {_gef ._b [_fb ]=append (_gef ._b [_fb ],_afa );};};if _ea =_gef .Classer .ComputeLLCorners ();_ea !=nil {return _gff .Wrap (_ea ,_cab ,"");};return nil ;};func _cbf (_cdg *Document ,_agg int )*Page {return &Page {Document :_cdg ,PageNumber :_agg ,Segments :[]*_gba .Header {}};
|
|
};func (_ffgf *Document )addSymbolDictionary (_gc int ,_cee *_c .Bitmaps ,_ca []int ,_fac map[int ]int ,_dgba bool )(*_gba .Header ,error ){const _ddg ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
|
|
_gbf :=&_gba .SymbolDictionary {};if _dab :=_gbf .InitEncode (_cee ,_ca ,_fac ,_dgba );_dab !=nil {return nil ,_dab ;};_ceg :=&_gba .Header {Type :_gba .TSymbolDictionary ,PageAssociation :_gc ,SegmentData :_gbf };if _gc ==0{if _ffgf .GlobalSegments ==nil {_ffgf .GlobalSegments =&Globals {};
|
|
};_ffgf .GlobalSegments .AddSegment (_ceg );return _ceg ,nil ;};_dbg ,_fde :=_ffgf .Pages [_gc ];if !_fde {return nil ,_gff .Errorf (_ddg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_gc );};var (_fe int ;
|
|
_gfc *_gba .Header ;);for _fe ,_gfc =range _dbg .Segments {if _gfc .Type ==_gba .TPageInformation {break ;};};_fe ++;_dbg .Segments =append (_dbg .Segments ,nil );copy (_dbg .Segments [_fe +1:],_dbg .Segments [_fe :]);_dbg .Segments [_fe ]=_ceg ;return _ceg ,nil ;
|
|
};func (_eff *Page )getCombinationOperator (_gbc *_gba .PageInformationSegment ,_aaaf _c .CombinationOperator )_c .CombinationOperator {if _gbc .CombinationOperatorOverrideAllowed (){return _aaaf ;};return _gbc .CombinationOperator ();};func (_gdb *Page )AddEndOfPageSegment (){_ccc :=&_gba .Header {Type :_gba .TEndOfPage ,PageAssociation :_gdb .PageNumber };
|
|
_gdb .Segments =append (_gdb .Segments ,_ccc );};func (_gcbf *Page )getWidth ()(int ,error ){const _bgdb ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _gcbf .FinalWidth !=0{return _gcbf .FinalWidth ,nil ;};_aed :=_gcbf .getPageInformationSegment ();
|
|
if _aed ==nil {return 0,_gff .Error (_bgdb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_gdbc ,_gadd :=_aed .GetSegmentData ();if _gadd !=nil {return 0,_gff .Wrap (_gadd ,_bgdb ,"");};_fgaa ,_fccf :=_gdbc .(*_gba .PageInformationSegment );
|
|
if !_fccf {return 0,_gff .Errorf (_bgdb ,"\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",_gdbc );
|
|
};_gcbf .FinalWidth =_fgaa .PageBMWidth ;return _gcbf .FinalWidth ,nil ;};func (_ac *Document )nextPageNumber ()uint32 {_ac .NumberOfPages ++;return _ac .NumberOfPages };func (_fa *Document )AddClassifiedPage (bm *_c .Bitmap ,method _cb .Method )(_ce error ){const _fg ="\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 !_fa .FullHeaders &&_fa .NumberOfPages !=0{return _gff .Error (_fg ,"\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 _fa .Classer ==nil {if _fa .Classer ,_ce =_cb .Init (_cb .DefaultSettings ());_ce !=nil {return _gff .Wrap (_ce ,_fg ,"");};};_dgb :=int (_fa .nextPageNumber ());_ee :=&Page {Segments :[]*_gba .Header {},Bitmap :bm ,Document :_fa ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_dgb };
|
|
_fa .Pages [_dgb ]=_ee ;switch method {case _cb .RankHaus :_ee .EncodingMethod =RankHausEM ;case _cb .Correlation :_ee .EncodingMethod =CorrelationEM ;};_ee .AddPageInformationSegment ();if _ce =_fa .Classer .AddPage (bm ,_dgb ,method );_ce !=nil {return _gff .Wrap (_ce ,_fg ,"");
|
|
};if _fa .FullHeaders {_ee .AddEndOfPageSegment ();};return nil ;};func _fdc (_adc *_df .Reader ,_aef *Globals )(*Document ,error ){_daec :=&Document {Pages :make (map[int ]*Page ),InputStream :_adc ,OrganizationType :_gba .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_aef ,_ff :9};
|
|
if _daec .GlobalSegments ==nil {_daec .GlobalSegments =&Globals {};};if _baff :=_daec .mapData ();_baff !=nil {return nil ,_baff ;};return _daec ,nil ;};func (_cba *Document )produceClassifiedPage (_cbe *Page ,_fad *_gba .Header )(_aaaa error ){const _gffd ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
|
|
var _dae map[int ]int ;_bf :=_cba ._ffd ;_fga :=[]*_gba .Header {_fad };if len (_cba ._b [_cbe .PageNumber ])> 0{_dae =map[int ]int {};_bce ,_gag :=_cba .addSymbolDictionary (_cbe .PageNumber ,_cba .Classer .UndilatedTemplates ,_cba ._b [_cbe .PageNumber ],_dae ,false );
|
|
if _gag !=nil {return _gff .Wrap (_gag ,_gffd ,"");};_fga =append (_fga ,_bce );_bf +=len (_cba ._b [_cbe .PageNumber ]);};_ecc :=_cba ._fc [_cbe .PageNumber ];_gb .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_cbe .PageNumber ,_ecc );
|
|
_cbe .addTextRegionSegment (_fga ,_cba ._be ,_dae ,_cba ._fc [_cbe .PageNumber ],_cba .Classer .PtaLL ,_cba .Classer .UndilatedTemplates ,_cba .Classer .ClassIDs ,nil ,_efb (_bf ),len (_cba ._fc [_cbe .PageNumber ]));return nil ;};func (_fcg *Page )nextSegmentNumber ()uint32 {return _fcg .Document .nextSegmentNumber ()};
|
|
func (_cae *Page )AddGenericRegion (bm *_c .Bitmap ,xloc ,yloc ,template int ,tp _gba .Type ,duplicateLineRemoval bool )error {const _ab ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_daf :=&_gba .GenericRegion {};
|
|
if _gea :=_daf .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_gea !=nil {return _gff .Wrap (_gea ,_ab ,"");};_dcd :=&_gba .Header {Type :_gba .TImmediateGenericRegion ,PageAssociation :_cae .PageNumber ,SegmentData :_daf };_cae .Segments =append (_cae .Segments ,_dcd );
|
|
return nil ;};func (_edd *Page )getHeight ()(int ,error ){const _aad ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _edd .FinalHeight !=0{return _edd .FinalHeight ,nil ;};_cad :=_edd .getPageInformationSegment ();if _cad ==nil {return 0,_gff .Error (_aad ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
|
|
};_ede ,_gada :=_cad .GetSegmentData ();if _gada !=nil {return 0,_gff .Wrap (_gada ,_aad ,"");};_bcac ,_gfed :=_ede .(*_gba .PageInformationSegment );if !_gfed {return 0,_gff .Errorf (_aad ,"\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",_ede );
|
|
};if _bcac .PageBMHeight ==_d .MaxInt32 {_ ,_gada =_edd .GetBitmap ();if _gada !=nil {return 0,_gff .Wrap (_gada ,_aad ,"");};}else {_edd .FinalHeight =_bcac .PageBMHeight ;};return _edd .FinalHeight ,nil ;}; |