mirror of
https://github.com/unidoc/unipdf.git
synced 2025-05-02 22:17:06 +08:00
133 lines
40 KiB
Go
133 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";_b "fmt";_g "github.com/unidoc/unipdf/v3/common";_ga "github.com/unidoc/unipdf/v3/internal/bitwise";_gg "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_e "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
|
|
_aa "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_cd "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_ea "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_a "io";_c "math";_de "runtime/debug";);func (_dc *Document )completeClassifiedPages ()(_cg error ){const _cgb ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
|
|
if _dc .Classer ==nil {return nil ;};_dc ._ggdb =make ([]int ,_dc .Classer .UndilatedTemplates .Size ());for _ce :=0;_ce < _dc .Classer .ClassIDs .Size ();_ce ++{_aag ,_cf :=_dc .Classer .ClassIDs .Get (_ce );if _cf !=nil {return _ea .Wrapf (_cf ,_cgb ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_ce );
|
|
};_dc ._ggdb [_aag ]++;};var _ad []int ;for _ceb :=0;_ceb < _dc .Classer .UndilatedTemplates .Size ();_ceb ++{if _dc .NumberOfPages ==1||_dc ._ggdb [_ceb ]> 1{_ad =append (_ad ,_ceb );};};var (_bfb *Page ;_fed bool ;);for _eag ,_fbd :=range *_dc .Classer .ComponentPageNumbers {if _bfb ,_fed =_dc .Pages [_fbd ];
|
|
!_fed {return _ea .Errorf (_cgb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_eag );};if _bfb .EncodingMethod ==GenericEM {_g .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",_eag );
|
|
continue ;};_dc ._db [_fbd ]=append (_dc ._db [_fbd ],_eag );_adb ,_cda :=_dc .Classer .ClassIDs .Get (_eag );if _cda !=nil {return _ea .Wrapf (_cda ,_cgb ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_eag );
|
|
};if _dc ._ggdb [_adb ]==1&&_dc .NumberOfPages !=1{_abe :=append (_dc ._aaa [_fbd ],_adb );_dc ._aaa [_fbd ]=_abe ;};};if _cg =_dc .Classer .ComputeLLCorners ();_cg !=nil {return _ea .Wrap (_cg ,_cgb ,"");};if _ ,_cg =_dc .addSymbolDictionary (0,_dc .Classer .UndilatedTemplates ,_ad ,_dc ._gd ,false );
|
|
_cg !=nil {return _ea .Wrap (_cg ,_cgb ,"");};return nil ;};func (_dee *Document )encodeSegment (_cdb *_aa .Header ,_bfcb *int )error {const _dbge ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_cdb .SegmentNumber =_dee .nextSegmentNumber ();
|
|
_fgb ,_fac :=_cdb .Encode (_dee ._ggd );if _fac !=nil {return _ea .Wrapf (_fac ,_dbge ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_cdb .SegmentNumber );};*_bfcb +=_fgb ;return nil ;};func (_ba *Document )produceClassifiedPages ()(_dbg error ){const _acc ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
|
|
if _ba .Classer ==nil {return nil ;};var (_cee *Page ;_ed bool ;_gb *_aa .Header ;);for _da :=1;_da <=int (_ba .NumberOfPages );_da ++{if _cee ,_ed =_ba .Pages [_da ];!_ed {return _ea .Errorf (_acc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_da );
|
|
};if _cee .EncodingMethod ==GenericEM {continue ;};if _gb ==nil {if _gb ,_dbg =_ba .GlobalSegments .GetSymbolDictionary ();_dbg !=nil {return _ea .Wrap (_dbg ,_acc ,"");};};if _dbg =_ba .produceClassifiedPage (_cee ,_gb );_dbg !=nil {return _ea .Wrapf (_dbg ,_acc ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_da );
|
|
};};return nil ;};func (_bbb *Document )encodeEOFHeader (_gef _ga .BinaryWriter )(_bdg int ,_ced error ){_ee :=&_aa .Header {SegmentNumber :_bbb .nextSegmentNumber (),Type :_aa .TEndOfFile };if _bdg ,_ced =_ee .Encode (_gef );_ced !=nil {return 0,_ea .Wrap (_ced ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");
|
|
};return _bdg ,nil ;};func (_cfb *Page )composePageBitmap ()error {const _abeb ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _cfb .PageNumber ==0{return nil ;};_baf :=_cfb .getPageInformationSegment ();
|
|
if _baf ==nil {return _ea .Error (_abeb ,"\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");};_fbda ,_ggbc :=_baf .GetSegmentData ();
|
|
if _ggbc !=nil {return _ggbc ;};_cabc ,_bfd :=_fbda .(*_aa .PageInformationSegment );if !_bfd {return _ea .Error (_abeb ,"\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 _ggbc =_cfb .createPage (_cabc );_ggbc !=nil {return _ea .Wrap (_ggbc ,_abeb ,"");};_cfb .clearSegmentData ();return nil ;};func (_bdc *Document )nextPageNumber ()uint32 {_bdc .NumberOfPages ++;return _bdc .NumberOfPages };func (_dfb *Document )GetGlobalSegment (i int )(*_aa .Header ,error ){_edc ,_efg :=_dfb .GlobalSegments .GetSegment (i );
|
|
if _efg !=nil {return nil ,_ea .Wrap (_efg ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");};return _edc ,nil ;};func (_fdf *Page )Encode (w _ga .BinaryWriter )(_adf int ,_cbd error ){const _dfg ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
var _feca int ;for _ ,_cbbb :=range _fdf .Segments {if _feca ,_cbd =_cbbb .Encode (w );_cbd !=nil {return _adf ,_ea .Wrap (_cbd ,_dfg ,"");};_adf +=_feca ;};return _adf ,nil ;};func (_ggg *Document )Encode ()(_bgd []byte ,_acce error ){const _ddac ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
var _aff ,_bff int ;if _ggg .FullHeaders {if _aff ,_acce =_ggg .encodeFileHeader (_ggg ._ggd );_acce !=nil {return nil ,_ea .Wrap (_acce ,_ddac ,"");};};var (_gcf bool ;_fbaa *_aa .Header ;_daf *Page ;);if _acce =_ggg .completeClassifiedPages ();_acce !=nil {return nil ,_ea .Wrap (_acce ,_ddac ,"");
|
|
};if _acce =_ggg .produceClassifiedPages ();_acce !=nil {return nil ,_ea .Wrap (_acce ,_ddac ,"");};if _ggg .GlobalSegments !=nil {for _ ,_fbaa =range _ggg .GlobalSegments .Segments {if _acce =_ggg .encodeSegment (_fbaa ,&_aff );_acce !=nil {return nil ,_ea .Wrap (_acce ,_ddac ,"");
|
|
};};};for _gbc :=1;_gbc <=int (_ggg .NumberOfPages );_gbc ++{if _daf ,_gcf =_ggg .Pages [_gbc ];!_gcf {return nil ,_ea .Errorf (_ddac ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_gbc );};for _ ,_fbaa =range _daf .Segments {if _acce =_ggg .encodeSegment (_fbaa ,&_aff );
|
|
_acce !=nil {return nil ,_ea .Wrap (_acce ,_ddac ,"");};};};if _ggg .FullHeaders {if _bff ,_acce =_ggg .encodeEOFHeader (_ggg ._ggd );_acce !=nil {return nil ,_ea .Wrap (_acce ,_ddac ,"");};_aff +=_bff ;};_bgd =_ggg ._ggd .Data ();if len (_bgd )!=_aff {_g .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",_aff ,len (_bgd ));
|
|
};return _bgd ,nil ;};func _eec (_cga _ga .StreamReader ,_dfdd *Globals )(*Document ,error ){_ffe :=&Document {Pages :make (map[int ]*Page ),InputStream :_cga ,OrganizationType :_aa .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_dfdd ,_ec :9};
|
|
if _ffe .GlobalSegments ==nil {_ffe .GlobalSegments =&Globals {};};if _bcc :=_ffe .mapData ();_bcc !=nil {return nil ,_bcc ;};return _ffe ,nil ;};func (_cgbcc *Page )AddEndOfPageSegment (){_fgd :=&_aa .Header {Type :_aa .TEndOfPage ,PageAssociation :_cgbcc .PageNumber };
|
|
_cgbcc .Segments =append (_cgbcc .Segments ,_fgd );};type Globals struct{Segments []*_aa .Header ;};func (_cec *Page )getPageInformationSegment ()*_aa .Header {for _ ,_cdaf :=range _cec .Segments {if _cdaf .Type ==_aa .TPageInformation {return _cdaf ;};
|
|
};_g .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",_cec );
|
|
return nil ;};func (_efgc *Page )clearSegmentData (){for _gebf :=range _efgc .Segments {_efgc .Segments [_gebf ].CleanSegmentData ();};};func (_acb *Page )createPage (_eea *_aa .PageInformationSegment )error {var _dgcg error ;if !_eea .IsStripe ||_eea .PageBMHeight !=-1{_dgcg =_acb .createNormalPage (_eea );
|
|
}else {_dgcg =_acb .createStripedPage (_eea );};return _dgcg ;};func (_eee *Page )fitsPage (_ggf *_aa .PageInformationSegment ,_feg *_e .Bitmap )bool {return _eee .countRegions ()==1&&_ggf .DefaultPixelValue ==0&&_ggf .PageBMWidth ==_feg .Width &&_ggf .PageBMHeight ==_feg .Height ;
|
|
};func (_gbb *Page )GetWidth ()(int ,error ){return _gbb .getWidth ()};type EncodingMethod int ;func (_ddb *Page )GetResolutionX ()(int ,error ){return _ddb .getResolutionX ()};func (_faeb *Page )getResolutionY ()(int ,error ){const _bgdge ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";
|
|
if _faeb .ResolutionY !=0{return _faeb .ResolutionY ,nil ;};_dca :=_faeb .getPageInformationSegment ();if _dca ==nil {return 0,_ea .Error (_bgdge ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_aea ,_bbg :=_dca .GetSegmentData ();
|
|
if _bbg !=nil {return 0,_ea .Wrap (_bbg ,_bgdge ,"");};_baff ,_gee :=_aea .(*_aa .PageInformationSegment );if !_gee {return 0,_ea .Errorf (_bgdge ,"\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",_aea );
|
|
};_faeb .ResolutionY =_baff .ResolutionY ;return _faeb .ResolutionY ,nil ;};type Page struct{Segments []*_aa .Header ;PageNumber int ;Bitmap *_e .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;
|
|
FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;};var _bf =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_efe *Page )String ()string {return _b .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_efe .PageNumber );
|
|
};func (_dge *Document )GetPage (pageNumber int )(_aa .Pager ,error ){const _bc ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_g .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 ,_de .Stack ());
|
|
return nil ,_ea .Errorf (_bc ,"\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 (_dge .Pages ){_g .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_de .Stack ());return nil ,_ea .Error (_bc ,"\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");
|
|
};_gbd ,_ge :=_dge .Pages [pageNumber ];if !_ge {_g .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_de .Stack ());return nil ,_ea .Errorf (_bc ,"\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 _gbd ,nil ;};func (_gbdb *Document )reachedEOF (_faaa int64 )(bool ,error ){const _fedf ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_cff :=_gbdb .InputStream .Seek (_faaa ,_a .SeekStart );if _cff !=nil {_g .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",_cff );
|
|
return false ,_ea .Wrap (_cff ,_fedf ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_cff =_gbdb .InputStream .ReadBits (32);if _cff ==_a .EOF {return true ,nil ;
|
|
}else if _cff !=nil {return false ,_ea .Wrap (_cff ,_fedf ,"");};return false ,nil ;};func (_cdg *Page )AddPageInformationSegment (){_ebfd :=&_aa .PageInformationSegment {PageBMWidth :_cdg .FinalWidth ,PageBMHeight :_cdg .FinalHeight ,ResolutionX :_cdg .ResolutionX ,ResolutionY :_cdg .ResolutionY ,IsLossless :_cdg .IsLossless };
|
|
if _cdg .BlackIsOne {_ebfd .DefaultPixelValue =uint8 (0x1);};_fgdd :=&_aa .Header {PageAssociation :_cdg .PageNumber ,SegmentDataLength :uint64 (_ebfd .Size ()),SegmentData :_ebfd ,Type :_aa .TPageInformation };_cdg .Segments =append (_cdg .Segments ,_fgdd );
|
|
};func (_cge *Globals )AddSegment (segment *_aa .Header ){_cge .Segments =append (_cge .Segments ,segment )};func (_eed *Page )getHeight ()(int ,error ){const _gde ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _eed .FinalHeight !=0{return _eed .FinalHeight ,nil ;
|
|
};_dce :=_eed .getPageInformationSegment ();if _dce ==nil {return 0,_ea .Error (_gde ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_ffgc ,_gaga :=_dce .GetSegmentData ();if _gaga !=nil {return 0,_ea .Wrap (_gaga ,_gde ,"");
|
|
};_eef ,_cffe :=_ffgc .(*_aa .PageInformationSegment );if !_cffe {return 0,_ea .Errorf (_gde ,"\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",_ffgc );
|
|
};if _eef .PageBMHeight ==_c .MaxInt32 {_ ,_gaga =_eed .GetBitmap ();if _gaga !=nil {return 0,_ea .Wrap (_gaga ,_gde ,"");};}else {_eed .FinalHeight =_eef .PageBMHeight ;};return _eed .FinalHeight ,nil ;};func (_fae *Page )collectPageStripes ()(_dbf []_aa .Segmenter ,_gagg error ){const _acbd ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";
|
|
var _eecc _aa .Segmenter ;for _ ,_fbf :=range _fae .Segments {switch _fbf .Type {case 6,7,22,23,38,39,42,43:_eecc ,_gagg =_fbf .GetSegmentData ();if _gagg !=nil {return nil ,_ea .Wrap (_gagg ,_acbd ,"");};_dbf =append (_dbf ,_eecc );case 50:_eecc ,_gagg =_fbf .GetSegmentData ();
|
|
if _gagg !=nil {return nil ,_gagg ;};_fbfe ,_fde :=_eecc .(*_aa .EndOfStripe );if !_fde {return nil ,_ea .Errorf (_acbd ,"\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",_eecc );
|
|
};_dbf =append (_dbf ,_fbfe );_fae .FinalHeight =_fbfe .LineNumber ();};};return _dbf ,nil ;};func _dda (_gc int )int {_af :=0;_fd :=(_gc &(_gc -1))==0;_gc >>=1;for ;_gc !=0;_gc >>=1{_af ++;};if _fd {return _af ;};return _af +1;};func _ede (_aace *Document ,_bab int )*Page {return &Page {Document :_aace ,PageNumber :_bab ,Segments :[]*_aa .Header {}};
|
|
};func (_fdfb *Page )createNormalPage (_eba *_aa .PageInformationSegment )error {const _adc ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_fdfb .Bitmap =_e .New (_eba .PageBMWidth ,_eba .PageBMHeight );if _eba .DefaultPixelValue !=0{_fdfb .Bitmap .SetDefaultPixel ();
|
|
};for _ ,_dbee :=range _fdfb .Segments {switch _dbee .Type {case 6,7,22,23,38,39,42,43:_g .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_dbee .SegmentNumber );_ffg ,_gag :=_dbee .GetSegmentData ();
|
|
if _gag !=nil {return _gag ;};_abbe ,_bfa :=_ffg .(_aa .Regioner );if !_bfa {_g .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",_ffg );
|
|
return _ea .Errorf (_adc ,"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",_ffg );
|
|
};_gbea ,_gag :=_abbe .GetRegionBitmap ();if _gag !=nil {return _ea .Wrap (_gag ,_adc ,"");};if _fdfb .fitsPage (_eba ,_gbea ){_fdfb .Bitmap =_gbea ;}else {_gbda :=_abbe .GetRegionInfo ();_ecd :=_fdfb .getCombinationOperator (_eba ,_gbda .CombinaionOperator );
|
|
_gag =_e .Blit (_gbea ,_fdfb .Bitmap ,int (_gbda .XLocation ),int (_gbda .YLocation ),_ecd );if _gag !=nil {return _ea .Wrap (_gag ,_adc ,"");};};};};return nil ;};func (_ddag *Page )AddGenericRegion (bm *_e .Bitmap ,xloc ,yloc ,template int ,tp _aa .Type ,duplicateLineRemoval bool )error {const _cgd ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
|
|
_gda :=&_aa .GenericRegion {};if _aga :=_gda .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_aga !=nil {return _ea .Wrap (_aga ,_cgd ,"");};_bdgd :=&_aa .Header {Type :_aa .TImmediateGenericRegion ,PageAssociation :_ddag .PageNumber ,SegmentData :_gda };
|
|
_ddag .Segments =append (_ddag .Segments ,_bdgd );return nil ;};func (_acfe *Page )createStripedPage (_dbeg *_aa .PageInformationSegment )error {const _bee ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";
|
|
_ddf ,_fddb :=_acfe .collectPageStripes ();if _fddb !=nil {return _ea .Wrap (_fddb ,_bee ,"");};var _ecf int ;for _ ,_fda :=range _ddf {if _gdbd ,_dag :=_fda .(*_aa .EndOfStripe );_dag {_ecf =_gdbd .LineNumber ()+1;}else {_fgbc :=_fda .(_aa .Regioner );
|
|
_cgf :=_fgbc .GetRegionInfo ();_aca :=_acfe .getCombinationOperator (_dbeg ,_cgf .CombinaionOperator );_edg ,_ffdg :=_fgbc .GetRegionBitmap ();if _ffdg !=nil {return _ea .Wrap (_ffdg ,_bee ,"");};_ffdg =_e .Blit (_edg ,_acfe .Bitmap ,int (_cgf .XLocation ),_ecf ,_aca );
|
|
if _ffdg !=nil {return _ea .Wrap (_ffdg ,_bee ,"");};};};return nil ;};func (_baaa *Document )parseFileHeader ()error {const _ebfa ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_geg :=_baaa .InputStream .Seek (8,_a .SeekStart );
|
|
if _geg !=nil {return _ea .Wrap (_geg ,_ebfa ,"\u0069\u0064");};_ ,_geg =_baaa .InputStream .ReadBits (5);if _geg !=nil {return _ea .Wrap (_geg ,_ebfa ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_afe ,_geg :=_baaa .InputStream .ReadBit ();
|
|
if _geg !=nil {return _ea .Wrap (_geg ,_ebfa ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _afe ==1{_baaa .GBUseExtTemplate =true ;};_afe ,_geg =_baaa .InputStream .ReadBit ();if _geg !=nil {return _ea .Wrap (_geg ,_ebfa ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
|
|
};if _afe !=1{_baaa .NumberOfPagesUnknown =false ;};_afe ,_geg =_baaa .InputStream .ReadBit ();if _geg !=nil {return _ea .Wrap (_geg ,_ebfa ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_baaa .OrganizationType =_aa .OrganizationType (_afe );
|
|
if !_baaa .NumberOfPagesUnknown {_baaa .NumberOfPages ,_geg =_baaa .InputStream .ReadUint32 ();if _geg !=nil {return _ea .Wrap (_geg ,_ebfa ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_baaa ._ec =13;};return nil ;
|
|
};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_ggd :_ga .BufferedMSB (),Pages :map[int ]*Page {},_aaa :map[int ][]int {},_gd :map[int ]int {},_db :map[int ][]int {}};};func (_cabd *Page )nextSegmentNumber ()uint32 {return _cabd .Document .nextSegmentNumber ()};
|
|
func (_egc *Page )addTextRegionSegment (_ega []*_aa .Header ,_cac ,_ccd map[int ]int ,_agb []int ,_ddg *_e .Points ,_gbe *_e .Bitmaps ,_dgea *_gg .IntSlice ,_eeg *_e .Boxes ,_ccb ,_cbb int ){_dec :=&_aa .TextRegion {NumberOfSymbols :uint32 (_cbb )};_dec .InitEncode (_cac ,_ccd ,_agb ,_ddg ,_gbe ,_dgea ,_eeg ,_egc .FinalWidth ,_egc .FinalHeight ,_ccb );
|
|
_gge :=&_aa .Header {RTSegments :_ega ,SegmentData :_dec ,PageAssociation :_egc .PageNumber ,Type :_aa .TImmediateTextRegion };_bdf :=_aa .TPageInformation ;if _ccd !=nil {_bdf =_aa .TSymbolDictionary ;};var _bcd int ;for ;_bcd < len (_egc .Segments );
|
|
_bcd ++{if _egc .Segments [_bcd ].Type ==_bdf {_bcd ++;break ;};};_egc .Segments =append (_egc .Segments ,nil );copy (_egc .Segments [_bcd +1:],_egc .Segments [_bcd :]);_egc .Segments [_bcd ]=_gge ;};func (_ebd *Globals )GetSegmentByIndex (index int )(*_aa .Header ,error ){const _dgeg ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";
|
|
if _ebd ==nil {return nil ,_ea .Error (_dgeg ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_ebd .Segments )==0{return nil ,_ea .Error (_dgeg ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};if index > len (_ebd .Segments )-1{return nil ,_ea .Error (_dgeg ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _ebd .Segments [index ],nil ;};func (_fefg *Page )GetBitmap ()(_eff *_e .Bitmap ,_accc error ){_g .Log .Trace (_b .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",_fefg .PageNumber ));
|
|
defer func (){if _accc !=nil {_g .Log .Trace (_b .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",_fefg .PageNumber ,_accc ));
|
|
}else {_g .Log .Trace (_b .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",_fefg .PageNumber ));};}();if _fefg .Bitmap !=nil {return _fefg .Bitmap ,nil ;
|
|
};_accc =_fefg .composePageBitmap ();if _accc !=nil {return nil ,_accc ;};return _fefg .Bitmap ,nil ;};func (_ab *Document )AddClassifiedPage (bm *_e .Bitmap ,method _cd .Method )(_gae error ){const _eb ="\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 !_ab .FullHeaders &&_ab .NumberOfPages !=0{return _ea .Error (_eb ,"\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 _ab .Classer ==nil {if _ab .Classer ,_gae =_cd .Init (_cd .DefaultSettings ());_gae !=nil {return _ea .Wrap (_gae ,_eb ,"");};};_fb :=int (_ab .nextPageNumber ());_dg :=&Page {Segments :[]*_aa .Header {},Bitmap :bm ,Document :_ab ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_fb };
|
|
_ab .Pages [_fb ]=_dg ;switch method {case _cd .RankHaus :_dg .EncodingMethod =RankHausEM ;case _cd .Correlation :_dg .EncodingMethod =CorrelationEM ;};_dg .AddPageInformationSegment ();if _gae =_ab .Classer .AddPage (bm ,_fb ,method );_gae !=nil {return _ea .Wrap (_gae ,_eb ,"");
|
|
};if _ab .FullHeaders {_dg .AddEndOfPageSegment ();};return nil ;};func (_beb *Globals )GetSegment (segmentNumber int )(*_aa .Header ,error ){const _fbac ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _beb ==nil {return nil ,_ea .Error (_fbac ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_beb .Segments )==0{return nil ,_ea .Error (_fbac ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _gdb *_aa .Header ;for _ ,_gdb =range _beb .Segments {if _gdb .SegmentNumber ==uint32 (segmentNumber ){break ;
|
|
};};if _gdb ==nil {return nil ,_ea .Error (_fbac ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _gdb ,nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;
|
|
GBUseExtTemplate bool ;InputStream _ga .StreamReader ;GlobalSegments *Globals ;OrganizationType _aa .OrganizationType ;Classer *_cd .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_e .Bitmaps ;BaseIndexes []int ;
|
|
Refinement bool ;RefineLevel int ;_ec uint8 ;_ggd *_ga .BufferedWriter ;EncodeGlobals bool ;_be int ;_aaa map[int ][]int ;_db map[int ][]int ;_ggdb []int ;_gd map[int ]int ;};func (_efd *Document )mapData ()error {const _ecc ="\u006da\u0070\u0044\u0061\u0074\u0061";
|
|
var (_cab []*_aa .Header ;_bdb int64 ;_bbd _aa .Type ;);_fbdc ,_bddf :=_efd .isFileHeaderPresent ();if _bddf !=nil {return _ea .Wrap (_bddf ,_ecc ,"");};if _fbdc {if _bddf =_efd .parseFileHeader ();_bddf !=nil {return _ea .Wrap (_bddf ,_ecc ,"");};_bdb +=int64 (_efd ._ec );
|
|
_efd .FullHeaders =true ;};var (_eg *Page ;_fcf bool ;);for _bbd !=51&&!_fcf {_dbe ,_dbce :=_aa .NewHeader (_efd ,_efd .InputStream ,_bdb ,_efd .OrganizationType );if _dbce !=nil {return _ea .Wrap (_dbce ,_ecc ,"");};_g .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",_dbe .SegmentNumber ,_dbe .Type );
|
|
_bbd =_dbe .Type ;if _bbd !=_aa .TEndOfFile {if _dbe .PageAssociation !=0{_eg =_efd .Pages [_dbe .PageAssociation ];if _eg ==nil {_eg =_ede (_efd ,_dbe .PageAssociation );_efd .Pages [_dbe .PageAssociation ]=_eg ;if _efd .NumberOfPagesUnknown {_efd .NumberOfPages ++;
|
|
};};_eg .Segments =append (_eg .Segments ,_dbe );}else {_efd .GlobalSegments .AddSegment (_dbe );};};_cab =append (_cab ,_dbe );_bdb =_efd .InputStream .StreamPosition ();if _efd .OrganizationType ==_aa .OSequential {_bdb +=int64 (_dbe .SegmentDataLength );
|
|
};_fcf ,_dbce =_efd .reachedEOF (_bdb );if _dbce !=nil {_g .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",_dbce );
|
|
return _ea .Wrap (_dbce ,_ecc ,"");};};_efd .determineRandomDataOffsets (_cab ,uint64 (_bdb ));return nil ;};func (_dcf *Page )GetSegment (number int )(*_aa .Header ,error ){const _cef ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
|
|
for _ ,_ada :=range _dcf .Segments {if _ada .SegmentNumber ==uint32 (number ){return _ada ,nil ;};};_fecd :=make ([]uint32 ,len (_dcf .Segments ));for _bbf ,_edb :=range _dcf .Segments {_fecd [_bbf ]=_edb .SegmentNumber ;};return nil ,_ea .Errorf (_cef ,"\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 ,_dcf .PageNumber ,_fecd );
|
|
};func DecodeDocument (input _ga .StreamReader ,globals *Globals )(*Document ,error ){return _eec (input ,globals );};func (_df *Document )produceClassifiedPage (_dbc *Page ,_cfa *_aa .Header )(_abd error ){const _fa ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
|
|
var _ff map[int ]int ;_fg :=_df ._be ;_fc :=[]*_aa .Header {_cfa };if len (_df ._aaa [_dbc .PageNumber ])> 0{_ff =map[int ]int {};_bag ,_bd :=_df .addSymbolDictionary (_dbc .PageNumber ,_df .Classer .UndilatedTemplates ,_df ._aaa [_dbc .PageNumber ],_ff ,false );
|
|
if _bd !=nil {return _ea .Wrap (_bd ,_fa ,"");};_fc =append (_fc ,_bag );_fg +=len (_df ._aaa [_dbc .PageNumber ]);};_fbe :=_df ._db [_dbc .PageNumber ];_g .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_dbc .PageNumber ,_fbe );
|
|
_dbc .addTextRegionSegment (_fc ,_df ._gd ,_ff ,_df ._db [_dbc .PageNumber ],_df .Classer .PtaLL ,_df .Classer .UndilatedTemplates ,_df .Classer .ClassIDs ,nil ,_dda (_fg ),len (_df ._db [_dbc .PageNumber ]));return nil ;};func (_afd *Globals )GetSymbolDictionary ()(*_aa .Header ,error ){const _cffa ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
|
|
if _afd ==nil {return nil ,_ea .Error (_cffa ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_afd .Segments )==0{return nil ,_ea .Error (_cffa ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};for _ ,_dafd :=range _afd .Segments {if _dafd .Type ==_aa .TSymbolDictionary {return _dafd ,nil ;};};return nil ,_ea .Error (_cffa ,"\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 (_edgb *Page )lastSegmentNumber ()(_dbcd uint32 ,_cdbf error ){const _caad ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_edgb .Segments )==0{return _dbcd ,_ea .Errorf (_caad ,"\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",_edgb .PageNumber );
|
|
};return _edgb .Segments [len (_edgb .Segments )-1].SegmentNumber ,nil ;};func (_ebae *Page )getWidth ()(int ,error ){const _add ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _ebae .FinalWidth !=0{return _ebae .FinalWidth ,nil ;};_fad :=_ebae .getPageInformationSegment ();
|
|
if _fad ==nil {return 0,_ea .Error (_add ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_ffa ,_efee :=_fad .GetSegmentData ();if _efee !=nil {return 0,_ea .Wrap (_efee ,_add ,"");};_adg ,_egab :=_ffa .(*_aa .PageInformationSegment );
|
|
if !_egab {return 0,_ea .Errorf (_add ,"\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",_ffa );
|
|
};_ebae .FinalWidth =_adg .PageBMWidth ;return _ebae .FinalWidth ,nil ;};func (_affc *Document )determineRandomDataOffsets (_deea []*_aa .Header ,_aac uint64 ){if _affc .OrganizationType !=_aa .ORandom {return ;};for _ ,_aed :=range _deea {_aed .SegmentDataStartOffset =_aac ;
|
|
_aac +=_aed .SegmentDataLength ;};};func (_ccc *Page )countRegions ()int {var _dbb int ;for _ ,_gce :=range _ccc .Segments {switch _gce .Type {case 6,7,22,23,38,39,42,43:_dbb ++;};};return _dbb ;};func (_baa *Document )encodeFileHeader (_gf _ga .BinaryWriter )(_geb int ,_cfg error ){const _bba ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
|
|
_geb ,_cfg =_gf .Write (_bf );if _cfg !=nil {return _geb ,_ea .Wrap (_cfg ,_bba ,"\u0069\u0064");};if _cfg =_gf .WriteByte (0x01);_cfg !=nil {return _geb ,_ea .Wrap (_cfg ,_bba ,"\u0066\u006c\u0061g\u0073");};_geb ++;_dgc :=make ([]byte ,4);_d .BigEndian .PutUint32 (_dgc ,_baa .NumberOfPages );
|
|
_aeg ,_cfg :=_gf .Write (_dgc );if _cfg !=nil {return _aeg ,_ea .Wrap (_cfg ,_bba ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_geb +=_aeg ;return _geb ,nil ;};func (_bac *Document )GetNumberOfPages ()(uint32 ,error ){if _bac .NumberOfPagesUnknown ||_bac .NumberOfPages ==0{if len (_bac .Pages )==0{if _faa :=_bac .mapData ();
|
|
_faa !=nil {return 0,_ea .Wrap (_faa ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_bac .Pages )),nil ;};return _bac .NumberOfPages ,nil ;};func (_baga *Document )nextSegmentNumber ()uint32 {_abea :=_baga .CurrentSegmentNumber ;
|
|
_baga .CurrentSegmentNumber ++;return _abea ;};func (_ag *Document )AddGenericPage (bm *_e .Bitmap ,duplicateLineRemoval bool )(_dd error ){const _ac ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
|
|
if !_ag .FullHeaders &&_ag .NumberOfPages !=0{return _ea .Error (_ac ,"\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");
|
|
};_fe :=&Page {Segments :[]*_aa .Header {},Bitmap :bm ,Document :_ag ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_e .Chocolate };_fe .PageNumber =int (_ag .nextPageNumber ());_ag .Pages [_fe .PageNumber ]=_fe ;
|
|
bm .InverseData ();_fe .AddPageInformationSegment ();if _dd =_fe .AddGenericRegion (bm ,0,0,0,_aa .TImmediateGenericRegion ,duplicateLineRemoval );_dd !=nil {return _ea .Wrap (_dd ,_ac ,"");};if _ag .FullHeaders {_fe .AddEndOfPageSegment ();};return nil ;
|
|
};func (_dde *Document )completeSymbols ()(_fdd error ){const _ae ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _dde .Classer ==nil {return nil ;};if _dde .Classer .UndilatedTemplates ==nil {return _ea .Error (_ae ,"\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");
|
|
};_fag :=len (_dde .Pages )==1;_cc :=make ([]int ,_dde .Classer .UndilatedTemplates .Size ());var _gcg int ;for _fbb :=0;_fbb < _dde .Classer .ClassIDs .Size ();_fbb ++{_gcg ,_fdd =_dde .Classer .ClassIDs .Get (_fbb );if _fdd !=nil {return _ea .Wrap (_fdd ,_ae ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
|
|
};_cc [_gcg ]++;};var _fef []int ;for _fcd :=0;_fcd < _dde .Classer .UndilatedTemplates .Size ();_fcd ++{if _cc [_fcd ]==0{return _ea .Error (_ae ,"\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 _cc [_fcd ]> 1||_fag {_fef =append (_fef ,_fcd );};};_dde ._be =len (_fef );var _fba ,_cgbc int ;for _ffd :=0;_ffd < _dde .Classer .ComponentPageNumbers .Size ();_ffd ++{_fba ,_fdd =_dde .Classer .ComponentPageNumbers .Get (_ffd );if _fdd !=nil {return _ea .Wrapf (_fdd ,_ae ,"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",_ffd );
|
|
};_cgbc ,_fdd =_dde .Classer .ClassIDs .Get (_ffd );if _fdd !=nil {return _ea .Wrapf (_fdd ,_ae ,"\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",_fba );
|
|
};if _cc [_cgbc ]==1&&!_fag {_dde ._aaa [_fba ]=append (_dde ._aaa [_fba ],_cgbc );};};if _fdd =_dde .Classer .ComputeLLCorners ();_fdd !=nil {return _ea .Wrap (_fdd ,_ae ,"");};return nil ;};func (_fddc *Document )isFileHeaderPresent ()(bool ,error ){_fddc .InputStream .Mark ();
|
|
for _ ,_bda :=range _bf {_faaf ,_cb :=_fddc .InputStream .ReadByte ();if _cb !=nil {return false ,_cb ;};if _bda !=_faaf {_fddc .InputStream .Reset ();return false ,nil ;};};_fddc .InputStream .Reset ();return true ,nil ;};const (GenericEM EncodingMethod =iota ;
|
|
CorrelationEM ;RankHausEM ;);func (_ggb *Page )GetResolutionY ()(int ,error ){return _ggb .getResolutionY ()};func (_cdc *Page )GetHeight ()(int ,error ){return _cdc .getHeight ()};func (_ffc *Page )getCombinationOperator (_fcb *_aa .PageInformationSegment ,_cbc _e .CombinationOperator )_e .CombinationOperator {if _fcb .CombinationOperatorOverrideAllowed (){return _cbc ;
|
|
};return _fcb .CombinationOperator ();};func (_gac *Page )getResolutionX ()(int ,error ){const _ade ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _gac .ResolutionX !=0{return _gac .ResolutionX ,nil ;};_gaf :=_gac .getPageInformationSegment ();
|
|
if _gaf ==nil {return 0,_ea .Error (_ade ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_deb ,_bacb :=_gaf .GetSegmentData ();if _bacb !=nil {return 0,_ea .Wrap (_bacb ,_ade ,"");};_ggfg ,_egb :=_deb .(*_aa .PageInformationSegment );
|
|
if !_egb {return 0,_ea .Errorf (_ade ,"\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",_deb );
|
|
};_gac .ResolutionX =_ggfg .ResolutionX ;return _gac .ResolutionX ,nil ;};func (_eca *Document )addSymbolDictionary (_bec int ,_ebf *_e .Bitmaps ,_ecb []int ,_dfd map[int ]int ,_fedb bool )(*_aa .Header ,error ){const _ef ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
|
|
_bg :=&_aa .SymbolDictionary {};if _fdb :=_bg .InitEncode (_ebf ,_ecb ,_dfd ,_fedb );_fdb !=nil {return nil ,_fdb ;};_ca :=&_aa .Header {Type :_aa .TSymbolDictionary ,PageAssociation :_bec ,SegmentData :_bg };if _bec ==0{if _eca .GlobalSegments ==nil {_eca .GlobalSegments =&Globals {};
|
|
};_eca .GlobalSegments .AddSegment (_ca );return _ca ,nil ;};_bfc ,_ece :=_eca .Pages [_bec ];if !_ece {return nil ,_ea .Errorf (_ef ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_bec );};var (_caa int ;
|
|
_cfd *_aa .Header ;);for _caa ,_cfd =range _bfc .Segments {if _cfd .Type ==_aa .TPageInformation {break ;};};_caa ++;_bfc .Segments =append (_bfc .Segments ,nil );copy (_bfc .Segments [_caa +1:],_bfc .Segments [_caa :]);_bfc .Segments [_caa ]=_ca ;return _ca ,nil ;
|
|
}; |