mirror of
https://github.com/unidoc/unipdf.git
synced 2025-05-02 22:17:06 +08:00
132 lines
39 KiB
Go
132 lines
39 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 (_f "encoding/binary";_e "fmt";_b "github.com/unidoc/unipdf/v3/common";_gd "github.com/unidoc/unipdf/v3/internal/bitwise";_ffd "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_db "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
|
|
_eg "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_bd "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_c "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_fe "io";_ff "math";_g "runtime/debug";);func (_bbg *Document )mapData ()error {const _ceb ="\u006da\u0070\u0044\u0061\u0074\u0061";
|
|
var (_ddf []*_eg .Header ;_ggg int64 ;_bacb _eg .Type ;);_gcee ,_gebc :=_bbg .isFileHeaderPresent ();if _gebc !=nil {return _c .Wrap (_gebc ,_ceb ,"");};if _gcee {if _gebc =_bbg .parseFileHeader ();_gebc !=nil {return _c .Wrap (_gebc ,_ceb ,"");};_ggg +=int64 (_bbg ._dba );
|
|
_bbg .FullHeaders =true ;};var (_cca *Page ;_cec bool ;);for _bacb !=51&&!_cec {_eba ,_gbb :=_eg .NewHeader (_bbg ,_bbg .InputStream ,_ggg ,_bbg .OrganizationType );if _gbb !=nil {return _c .Wrap (_gbb ,_ceb ,"");};_b .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",_eba .SegmentNumber ,_eba .Type );
|
|
_bacb =_eba .Type ;if _bacb !=_eg .TEndOfFile {if _eba .PageAssociation !=0{_cca =_bbg .Pages [_eba .PageAssociation ];if _cca ==nil {_cca =_dce (_bbg ,_eba .PageAssociation );_bbg .Pages [_eba .PageAssociation ]=_cca ;if _bbg .NumberOfPagesUnknown {_bbg .NumberOfPages ++;
|
|
};};_cca .Segments =append (_cca .Segments ,_eba );}else {_bbg .GlobalSegments .AddSegment (_eba );};};_ddf =append (_ddf ,_eba );_ggg =_bbg .InputStream .AbsolutePosition ();if _bbg .OrganizationType ==_eg .OSequential {_ggg +=int64 (_eba .SegmentDataLength );
|
|
};_cec ,_gbb =_bbg .reachedEOF (_ggg );if _gbb !=nil {_b .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",_gbb );
|
|
return _c .Wrap (_gbb ,_ceb ,"");};};_bbg .determineRandomDataOffsets (_ddf ,uint64 (_ggg ));return nil ;};func DecodeDocument (input *_gd .Reader ,globals *Globals )(*Document ,error ){return _cag (input ,globals );};func (_bac *Document )completeSymbols ()(_bbb error ){const _bfd ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";
|
|
if _bac .Classer ==nil {return nil ;};if _bac .Classer .UndilatedTemplates ==nil {return _c .Error (_bfd ,"\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");
|
|
};_cea :=len (_bac .Pages )==1;_afa :=make ([]int ,_bac .Classer .UndilatedTemplates .Size ());var _dec int ;for _gbea :=0;_gbea < _bac .Classer .ClassIDs .Size ();_gbea ++{_dec ,_bbb =_bac .Classer .ClassIDs .Get (_gbea );if _bbb !=nil {return _c .Wrap (_bbb ,_bfd ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
|
|
};_afa [_dec ]++;};var _fa []int ;for _fd :=0;_fd < _bac .Classer .UndilatedTemplates .Size ();_fd ++{if _afa [_fd ]==0{return _c .Error (_bfd ,"\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 _afa [_fd ]> 1||_cea {_fa =append (_fa ,_fd );};};_bac ._fef =len (_fa );var _gbc ,_ffc int ;for _ca :=0;_ca < _bac .Classer .ComponentPageNumbers .Size ();_ca ++{_gbc ,_bbb =_bac .Classer .ComponentPageNumbers .Get (_ca );if _bbb !=nil {return _c .Wrapf (_bbb ,_bfd ,"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",_ca );
|
|
};_ffc ,_bbb =_bac .Classer .ClassIDs .Get (_ca );if _bbb !=nil {return _c .Wrapf (_bbb ,_bfd ,"\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",_gbc );
|
|
};if _afa [_ffc ]==1&&!_cea {_bac ._fec [_gbc ]=append (_bac ._fec [_gbc ],_ffc );};};if _bbb =_bac .Classer .ComputeLLCorners ();_bbb !=nil {return _c .Wrap (_bbb ,_bfd ,"");};return nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;
|
|
NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream *_gd .Reader ;GlobalSegments *Globals ;OrganizationType _eg .OrganizationType ;Classer *_bd .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_db .Bitmaps ;
|
|
BaseIndexes []int ;Refinement bool ;RefineLevel int ;_dba uint8 ;_bg *_gd .BufferedWriter ;EncodeGlobals bool ;_fef int ;_fec map[int ][]int ;_gg map[int ][]int ;_a []int ;_ac map[int ]int ;};type EncodingMethod int ;func (_dab *Page )lastSegmentNumber ()(_gdcf uint32 ,_acfd error ){const _ada ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";
|
|
if len (_dab .Segments )==0{return _gdcf ,_c .Errorf (_ada ,"\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",_dab .PageNumber );
|
|
};return _dab .Segments [len (_dab .Segments )-1].SegmentNumber ,nil ;};func (_feda *Document )determineRandomDataOffsets (_bef []*_eg .Header ,_ffe uint64 ){if _feda .OrganizationType !=_eg .ORandom {return ;};for _ ,_egd :=range _bef {_egd .SegmentDataStartOffset =_ffe ;
|
|
_ffe +=_egd .SegmentDataLength ;};};func (_cba *Document )reachedEOF (_def int64 )(bool ,error ){const _fgf ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_bbcc :=_cba .InputStream .Seek (_def ,_fe .SeekStart );if _bbcc !=nil {_b .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",_bbcc );
|
|
return false ,_c .Wrap (_bbcc ,_fgf ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_bbcc =_cba .InputStream .ReadBits (32);if _bbcc ==_fe .EOF {return true ,nil ;
|
|
}else if _bbcc !=nil {return false ,_c .Wrap (_bbcc ,_fgf ,"");};return false ,nil ;};func (_bgae *Page )Encode (w _gd .BinaryWriter )(_dbfe int ,_fdbe error ){const _abb ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _aca int ;for _ ,_eebb :=range _bgae .Segments {if _aca ,_fdbe =_eebb .Encode (w );
|
|
_fdbe !=nil {return _dbfe ,_c .Wrap (_fdbe ,_abb ,"");};_dbfe +=_aca ;};return _dbfe ,nil ;};func (_fedg *Document )nextSegmentNumber ()uint32 {_gdc :=_fedg .CurrentSegmentNumber ;_fedg .CurrentSegmentNumber ++;return _gdc ;};func (_gfa *Page )fitsPage (_cgb *_eg .PageInformationSegment ,_ecc *_db .Bitmap )bool {return _gfa .countRegions ()==1&&_cgb .DefaultPixelValue ==0&&_cgb .PageBMWidth ==_ecc .Width &&_cgb .PageBMHeight ==_ecc .Height ;
|
|
};func (_dedd *Page )GetBitmap ()(_dbd *_db .Bitmap ,_beb error ){_b .Log .Trace (_e .Sprintf ("\u005b\u0050\u0041G\u0045\u005d\u005b\u0023%\u0064\u005d\u0020\u0047\u0065\u0074\u0042i\u0074\u006d\u0061\u0070\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e",_dedd .PageNumber ));
|
|
defer func (){if _beb !=nil {_b .Log .Trace (_e .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064\u005d\u0020\u0047\u0065\u0074B\u0069t\u006d\u0061\u0070\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_dedd .PageNumber ,_beb ));
|
|
}else {_b .Log .Trace (_e .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064]\u0020\u0047\u0065\u0074\u0042\u0069\u0074m\u0061\u0070\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064",_dedd .PageNumber ));};}();if _dedd .Bitmap !=nil {return _dedd .Bitmap ,nil ;
|
|
};_beb =_dedd .composePageBitmap ();if _beb !=nil {return nil ,_beb ;};return _dedd .Bitmap ,nil ;};func (_adg *Document )GetNumberOfPages ()(uint32 ,error ){if _adg .NumberOfPagesUnknown ||_adg .NumberOfPages ==0{if len (_adg .Pages )==0{if _bab :=_adg .mapData ();
|
|
_bab !=nil {return 0,_c .Wrap (_bab ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_adg .Pages )),nil ;};return _adg .NumberOfPages ,nil ;};func (_ef *Document )nextPageNumber ()uint32 {_ef .NumberOfPages ++;
|
|
return _ef .NumberOfPages };func (_bed *Page )getHeight ()(int ,error ){const _gbf ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _bed .FinalHeight !=0{return _bed .FinalHeight ,nil ;};_abe :=_bed .getPageInformationSegment ();if _abe ==nil {return 0,_c .Error (_gbf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
|
|
};_dgbd ,_aab :=_abe .GetSegmentData ();if _aab !=nil {return 0,_c .Wrap (_aab ,_gbf ,"");};_bgac ,_bbf :=_dgbd .(*_eg .PageInformationSegment );if !_bbf {return 0,_c .Errorf (_gbf ,"\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",_dgbd );
|
|
};if _bgac .PageBMHeight ==_ff .MaxInt32 {_ ,_aab =_bed .GetBitmap ();if _aab !=nil {return 0,_c .Wrap (_aab ,_gbf ,"");};}else {_bed .FinalHeight =_bgac .PageBMHeight ;};return _bed .FinalHeight ,nil ;};type Globals struct{Segments []*_eg .Header ;};const (GenericEM EncodingMethod =iota ;
|
|
CorrelationEM ;RankHausEM ;);func (_gcg *Page )getResolutionX ()(int ,error ){const _acf ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _gcg .ResolutionX !=0{return _gcg .ResolutionX ,nil ;};_cfc :=_gcg .getPageInformationSegment ();
|
|
if _cfc ==nil {return 0,_c .Error (_acf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_gba ,_egbe :=_cfc .GetSegmentData ();if _egbe !=nil {return 0,_c .Wrap (_egbe ,_acf ,"");};_aagc ,_geaf :=_gba .(*_eg .PageInformationSegment );
|
|
if !_geaf {return 0,_c .Errorf (_acf ,"\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",_gba );
|
|
};_gcg .ResolutionX =_aagc .ResolutionX ;return _gcg .ResolutionX ,nil ;};type Page struct{Segments []*_eg .Header ;PageNumber int ;Bitmap *_db .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;
|
|
FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;};func (_bc *Document )isFileHeaderPresent ()(bool ,error ){_bc .InputStream .Mark ();for _ ,_cg :=range _feg {_baf ,_caa :=_bc .InputStream .ReadByte ();if _caa !=nil {return false ,_caa ;
|
|
};if _cg !=_baf {_bc .InputStream .Reset ();return false ,nil ;};};_bc .InputStream .Reset ();return true ,nil ;};func (_eged *Page )createStripedPage (_gbg *_eg .PageInformationSegment )error {const _fcgf ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";
|
|
_gaa ,_baeb :=_eged .collectPageStripes ();if _baeb !=nil {return _c .Wrap (_baeb ,_fcgf ,"");};var _dca int ;for _ ,_ged :=range _gaa {if _cce ,_ebc :=_ged .(*_eg .EndOfStripe );_ebc {_dca =_cce .LineNumber ()+1;}else {_bdb :=_ged .(_eg .Regioner );_bdf :=_bdb .GetRegionInfo ();
|
|
_ega :=_eged .getCombinationOperator (_gbg ,_bdf .CombinaionOperator );_bccc ,_dcb :=_bdb .GetRegionBitmap ();if _dcb !=nil {return _c .Wrap (_dcb ,_fcgf ,"");};_dcb =_db .Blit (_bccc ,_eged .Bitmap ,int (_bdf .XLocation ),_dca ,_ega );if _dcb !=nil {return _c .Wrap (_dcb ,_fcgf ,"");
|
|
};};};return nil ;};func (_gcf *Page )GetWidth ()(int ,error ){return _gcf .getWidth ()};func (_cgc *Globals )GetSegment (segmentNumber int )(*_eg .Header ,error ){const _ecb ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";
|
|
if _cgc ==nil {return nil ,_c .Error (_ecb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_cgc .Segments )==0{return nil ,_c .Error (_ecb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};var _ffdc *_eg .Header ;for _ ,_ffdc =range _cgc .Segments {if _ffdc .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _ffdc ==nil {return nil ,_c .Error (_ecb ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
|
|
};return _ffdc ,nil ;};func (_ggc *Page )collectPageStripes ()(_eag []_eg .Segmenter ,_aeff error ){const _aba ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _dfa _eg .Segmenter ;for _ ,_adf :=range _ggc .Segments {switch _adf .Type {case 6,7,22,23,38,39,42,43:_dfa ,_aeff =_adf .GetSegmentData ();
|
|
if _aeff !=nil {return nil ,_c .Wrap (_aeff ,_aba ,"");};_eag =append (_eag ,_dfa );case 50:_dfa ,_aeff =_adf .GetSegmentData ();if _aeff !=nil {return nil ,_aeff ;};_ddb ,_dbba :=_dfa .(*_eg .EndOfStripe );if !_dbba {return nil ,_c .Errorf (_aba ,"\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",_dfa );
|
|
};_eag =append (_eag ,_ddb );_ggc .FinalHeight =_ddb .LineNumber ();};};return _eag ,nil ;};func (_cff *Page )addTextRegionSegment (_aebb []*_eg .Header ,_dbf ,_fag map[int ]int ,_fcc []int ,_gcc *_db .Points ,_decf *_db .Bitmaps ,_dge *_ffd .IntSlice ,_dac *_db .Boxes ,_eac ,_fae int ){_fba :=&_eg .TextRegion {NumberOfSymbols :uint32 (_fae )};
|
|
_fba .InitEncode (_dbf ,_fag ,_fcc ,_gcc ,_decf ,_dge ,_dac ,_cff .FinalWidth ,_cff .FinalHeight ,_eac );_dga :=&_eg .Header {RTSegments :_aebb ,SegmentData :_fba ,PageAssociation :_cff .PageNumber ,Type :_eg .TImmediateTextRegion };_babf :=_eg .TPageInformation ;
|
|
if _fag !=nil {_babf =_eg .TSymbolDictionary ;};var _dfc int ;for ;_dfc < len (_cff .Segments );_dfc ++{if _cff .Segments [_dfc ].Type ==_babf {_dfc ++;break ;};};_cff .Segments =append (_cff .Segments ,nil );copy (_cff .Segments [_dfc +1:],_cff .Segments [_dfc :]);
|
|
_cff .Segments [_dfc ]=_dga ;};func (_cagb *Page )AddPageInformationSegment (){_gge :=&_eg .PageInformationSegment {PageBMWidth :_cagb .FinalWidth ,PageBMHeight :_cagb .FinalHeight ,ResolutionX :_cagb .ResolutionX ,ResolutionY :_cagb .ResolutionY ,IsLossless :_cagb .IsLossless };
|
|
if _cagb .BlackIsOne {_gge .DefaultPixelValue =uint8 (0x1);};_gefe :=&_eg .Header {PageAssociation :_cagb .PageNumber ,SegmentDataLength :uint64 (_gge .Size ()),SegmentData :_gge ,Type :_eg .TPageInformation };_cagb .Segments =append (_cagb .Segments ,_gefe );
|
|
};func (_gfe *Page )AddEndOfPageSegment (){_bbgc :=&_eg .Header {Type :_eg .TEndOfPage ,PageAssociation :_gfe .PageNumber };_gfe .Segments =append (_gfe .Segments ,_bbgc );};func (_fgb *Page )GetHeight ()(int ,error ){return _fgb .getHeight ()};func (_defb *Page )nextSegmentNumber ()uint32 {return _defb .Document .nextSegmentNumber ()};
|
|
func (_gfb *Globals )GetSymbolDictionary ()(*_eg .Header ,error ){const _ded ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";if _gfb ==nil {return nil ,_c .Error (_ded ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_gfb .Segments )==0{return nil ,_c .Error (_ded ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};for _ ,_baee :=range _gfb .Segments {if _baee .Type ==_eg .TSymbolDictionary {return _baee ,nil ;
|
|
};};return nil ,_c .Error (_ded ,"\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 (_fgfg *Page )getPageInformationSegment ()*_eg .Header {for _ ,_fde :=range _fgfg .Segments {if _fde .Type ==_eg .TPageInformation {return _fde ;
|
|
};};_b .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",_fgfg );
|
|
return nil ;};func _dce (_cgd *Document ,_caea int )*Page {return &Page {Document :_cgd ,PageNumber :_caea ,Segments :[]*_eg .Header {}};};func (_aeed *Page )getResolutionY ()(int ,error ){const _eeg ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";
|
|
if _aeed .ResolutionY !=0{return _aeed .ResolutionY ,nil ;};_ffb :=_aeed .getPageInformationSegment ();if _ffb ==nil {return 0,_c .Error (_eeg ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_fbeb ,_caeb :=_ffb .GetSegmentData ();
|
|
if _caeb !=nil {return 0,_c .Wrap (_caeb ,_eeg ,"");};_dcad ,_ccae :=_fbeb .(*_eg .PageInformationSegment );if !_ccae {return 0,_c .Errorf (_eeg ,"\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",_fbeb );
|
|
};_aeed .ResolutionY =_dcad .ResolutionY ;return _aeed .ResolutionY ,nil ;};func (_fee *Page )GetSegment (number int )(*_eg .Header ,error ){const _bcf ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_bfc :=range _fee .Segments {if _bfc .SegmentNumber ==uint32 (number ){return _bfc ,nil ;
|
|
};};_aac :=make ([]uint32 ,len (_fee .Segments ));for _eae ,_ccb :=range _fee .Segments {_aac [_eae ]=_ccb .SegmentNumber ;};return nil ,_c .Errorf (_bcf ,"\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 ,_fee .PageNumber ,_aac );
|
|
};func _cag (_egcf *_gd .Reader ,_bggb *Globals )(*Document ,error ){_eafb :=&Document {Pages :make (map[int ]*Page ),InputStream :_egcf ,OrganizationType :_eg .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_bggb ,_dba :9};if _eafb .GlobalSegments ==nil {_eafb .GlobalSegments =&Globals {};
|
|
};if _fedd :=_eafb .mapData ();_fedd !=nil {return nil ,_fedd ;};return _eafb ,nil ;};func (_baa *Page )getWidth ()(int ,error ){const _eed ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _baa .FinalWidth !=0{return _baa .FinalWidth ,nil ;};_bfda :=_baa .getPageInformationSegment ();
|
|
if _bfda ==nil {return 0,_c .Error (_eed ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_caaf ,_daa :=_bfda .GetSegmentData ();if _daa !=nil {return 0,_c .Wrap (_daa ,_eed ,"");};_cgg ,_edf :=_caaf .(*_eg .PageInformationSegment );
|
|
if !_edf {return 0,_c .Errorf (_eed ,"\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",_caaf );
|
|
};_baa .FinalWidth =_cgg .PageBMWidth ;return _baa .FinalWidth ,nil ;};func (_fcbf *Page )AddGenericRegion (bm *_db .Bitmap ,xloc ,yloc ,template int ,tp _eg .Type ,duplicateLineRemoval bool )error {const _egcg ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
|
|
_dag :=&_eg .GenericRegion {};if _egdg :=_dag .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_egdg !=nil {return _c .Wrap (_egdg ,_egcg ,"");};_ecbg :=&_eg .Header {Type :_eg .TImmediateGenericRegion ,PageAssociation :_fcbf .PageNumber ,SegmentData :_dag };
|
|
_fcbf .Segments =append (_fcbf .Segments ,_ecbg );return nil ;};func (_ebae *Page )countRegions ()int {var _ede int ;for _ ,_gfd :=range _ebae .Segments {switch _gfd .Type {case 6,7,22,23,38,39,42,43:_ede ++;};};return _ede ;};func (_ffea *Page )String ()string {return _e .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_ffea .PageNumber );
|
|
};func (_agb *Document )addSymbolDictionary (_ec int ,_afd *_db .Bitmaps ,_dc []int ,_cb map[int ]int ,_cbg bool )(*_eg .Header ,error ){const _gcb ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
|
|
_deb :=&_eg .SymbolDictionary {};if _gea :=_deb .InitEncode (_afd ,_dc ,_cb ,_cbg );_gea !=nil {return nil ,_gea ;};_fed :=&_eg .Header {Type :_eg .TSymbolDictionary ,PageAssociation :_ec ,SegmentData :_deb };if _ec ==0{if _agb .GlobalSegments ==nil {_agb .GlobalSegments =&Globals {};
|
|
};_agb .GlobalSegments .AddSegment (_fed );return _fed ,nil ;};_aed ,_fc :=_agb .Pages [_ec ];if !_fc {return nil ,_c .Errorf (_gcb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ec );};var (_dfg int ;
|
|
_agg *_eg .Header ;);for _dfg ,_agg =range _aed .Segments {if _agg .Type ==_eg .TPageInformation {break ;};};_dfg ++;_aed .Segments =append (_aed .Segments ,nil );copy (_aed .Segments [_dfg +1:],_aed .Segments [_dfg :]);_aed .Segments [_dfg ]=_fed ;return _fed ,nil ;
|
|
};func (_fgc *Page )GetResolutionY ()(int ,error ){return _fgc .getResolutionY ()};func (_ed *Document )AddClassifiedPage (bm *_db .Bitmap ,method _bd .Method )(_ce error ){const _bf ="\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 !_ed .FullHeaders &&_ed .NumberOfPages !=0{return _c .Error (_bf ,"\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 _ed .Classer ==nil {if _ed .Classer ,_ce =_bd .Init (_bd .DefaultSettings ());_ce !=nil {return _c .Wrap (_ce ,_bf ,"");};};_ba :=int (_ed .nextPageNumber ());_gc :=&Page {Segments :[]*_eg .Header {},Bitmap :bm ,Document :_ed ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_ba };
|
|
_ed .Pages [_ba ]=_gc ;switch method {case _bd .RankHaus :_gc .EncodingMethod =RankHausEM ;case _bd .Correlation :_gc .EncodingMethod =CorrelationEM ;};_gc .AddPageInformationSegment ();if _ce =_ed .Classer .AddPage (bm ,_ba ,method );_ce !=nil {return _c .Wrap (_ce ,_bf ,"");
|
|
};if _ed .FullHeaders {_gc .AddEndOfPageSegment ();};return nil ;};func (_gccf *Page )clearSegmentData (){for _ecga :=range _gccf .Segments {_gccf .Segments [_ecga ].CleanSegmentData ();};};func (_egcc *Page )composePageBitmap ()error {const _dbag ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";
|
|
if _egcc .PageNumber ==0{return nil ;};_fgee :=_egcc .getPageInformationSegment ();if _fgee ==nil {return _c .Error (_dbag ,"\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");
|
|
};_egcd ,_ga :=_fgee .GetSegmentData ();if _ga !=nil {return _ga ;};_bbgf ,_dddg :=_egcd .(*_eg .PageInformationSegment );if !_dddg {return _c .Error (_dbag ,"\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 _ga =_egcc .createPage (_bbgf );_ga !=nil {return _c .Wrap (_ga ,_dbag ,"");};_egcc .clearSegmentData ();return nil ;};func (_gdb *Page )createPage (_bdeb *_eg .PageInformationSegment )error {var _feddd error ;if !_bdeb .IsStripe ||_bdeb .PageBMHeight !=-1{_feddd =_gdb .createNormalPage (_bdeb );
|
|
}else {_feddd =_gdb .createStripedPage (_bdeb );};return _feddd ;};func (_dgb *Document )GetPage (pageNumber int )(_eg .Pager ,error ){const _bbc ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_b .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 ,_g .Stack ());
|
|
return nil ,_c .Errorf (_bbc ,"\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 (_dgb .Pages ){_b .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_g .Stack ());return nil ,_c .Error (_bbc ,"\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");
|
|
};_eca ,_fcf :=_dgb .Pages [pageNumber ];if !_fcf {_b .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_g .Stack ());return nil ,_c .Errorf (_bbc ,"\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 _eca ,nil ;};func (_bcc *Globals )AddSegment (segment *_eg .Header ){_bcc .Segments =append (_bcc .Segments ,segment )};func (_ea *Document )GetGlobalSegment (i int )(*_eg .Header ,error ){_eeb ,_fg :=_ea .GlobalSegments .GetSegment (i );if _fg !=nil {return nil ,_c .Wrap (_fg ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
|
|
};return _eeb ,nil ;};func (_dacb *Page )GetResolutionX ()(int ,error ){return _dacb .getResolutionX ()};func (_ab *Document )completeClassifiedPages ()(_ae error ){const _da ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
|
|
if _ab .Classer ==nil {return nil ;};_ab ._a =make ([]int ,_ab .Classer .UndilatedTemplates .Size ());for _dd :=0;_dd < _ab .Classer .ClassIDs .Size ();_dd ++{_acd ,_bff :=_ab .Classer .ClassIDs .Get (_dd );if _bff !=nil {return _c .Wrapf (_bff ,_da ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_dd );
|
|
};_ab ._a [_acd ]++;};var _gca []int ;for _gb :=0;_gb < _ab .Classer .UndilatedTemplates .Size ();_gb ++{if _ab .NumberOfPages ==1||_ab ._a [_gb ]> 1{_gca =append (_gca ,_gb );};};var (_de *Page ;_gf bool ;);for _ag ,_acdd :=range *_ab .Classer .ComponentPageNumbers {if _de ,_gf =_ab .Pages [_acdd ];
|
|
!_gf {return _c .Errorf (_da ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ag );};if _de .EncodingMethod ==GenericEM {_b .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",_ag );
|
|
continue ;};_ab ._gg [_acdd ]=append (_ab ._gg [_acdd ],_ag );_cf ,_bfe :=_ab .Classer .ClassIDs .Get (_ag );if _bfe !=nil {return _c .Wrapf (_bfe ,_da ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_ag );
|
|
};if _ab ._a [_cf ]==1&&_ab .NumberOfPages !=1{_aeg :=append (_ab ._fec [_acdd ],_cf );_ab ._fec [_acdd ]=_aeg ;};};if _ae =_ab .Classer .ComputeLLCorners ();_ae !=nil {return _c .Wrap (_ae ,_da ,"");};if _ ,_ae =_ab .addSymbolDictionary (0,_ab .Classer .UndilatedTemplates ,_gca ,_ab ._ac ,false );
|
|
_ae !=nil {return _c .Wrap (_ae ,_da ,"");};return nil ;};func _edgg (_bde int )int {_bb :=0;_egf :=(_bde &(_bde -1))==0;_bde >>=1;for ;_bde !=0;_bde >>=1{_bb ++;};if _egf {return _bb ;};return _bb +1;};func (_gbe *Document )produceClassifiedPages ()(_edg error ){const _ge ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
|
|
if _gbe .Classer ==nil {return nil ;};var (_ee *Page ;_df bool ;_cc *_eg .Header ;);for _bgg :=1;_bgg <=int (_gbe .NumberOfPages );_bgg ++{if _ee ,_df =_gbe .Pages [_bgg ];!_df {return _c .Errorf (_ge ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_bgg );
|
|
};if _ee .EncodingMethod ==GenericEM {continue ;};if _cc ==nil {if _cc ,_edg =_gbe .GlobalSegments .GetSymbolDictionary ();_edg !=nil {return _c .Wrap (_edg ,_ge ,"");};};if _edg =_gbe .produceClassifiedPage (_ee ,_cc );_edg !=nil {return _c .Wrapf (_edg ,_ge ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_bgg );
|
|
};};return nil ;};func (_fdd *Globals )GetSegmentByIndex (index int )(*_eg .Header ,error ){const _dgg ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _fdd ==nil {return nil ,_c .Error (_dgg ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_fdd .Segments )==0{return nil ,_c .Error (_dgg ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_fdd .Segments )-1{return nil ,_c .Error (_dgg ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
|
|
};return _fdd .Segments [index ],nil ;};func (_eaf *Document )parseFileHeader ()error {const _agc ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_aef :=_eaf .InputStream .Seek (8,_fe .SeekStart );if _aef !=nil {return _c .Wrap (_aef ,_agc ,"\u0069\u0064");
|
|
};_ ,_aef =_eaf .InputStream .ReadBits (5);if _aef !=nil {return _c .Wrap (_aef ,_agc ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_bfee ,_aef :=_eaf .InputStream .ReadBit ();if _aef !=nil {return _c .Wrap (_aef ,_agc ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");
|
|
};if _bfee ==1{_eaf .GBUseExtTemplate =true ;};_bfee ,_aef =_eaf .InputStream .ReadBit ();if _aef !=nil {return _c .Wrap (_aef ,_agc ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _bfee !=1{_eaf .NumberOfPagesUnknown =false ;
|
|
};_bfee ,_aef =_eaf .InputStream .ReadBit ();if _aef !=nil {return _c .Wrap (_aef ,_agc ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_eaf .OrganizationType =_eg .OrganizationType (_bfee );if !_eaf .NumberOfPagesUnknown {_eaf .NumberOfPages ,_aef =_eaf .InputStream .ReadUint32 ();
|
|
if _aef !=nil {return _c .Wrap (_aef ,_agc ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_eaf ._dba =13;};return nil ;};func (_efe *Page )getCombinationOperator (_ecd *_eg .PageInformationSegment ,_fbe _db .CombinationOperator )_db .CombinationOperator {if _ecd .CombinationOperatorOverrideAllowed (){return _fbe ;
|
|
};return _ecd .CombinationOperator ();};func (_dceg *Page )createNormalPage (_gaf *_eg .PageInformationSegment )error {const _dagd ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_dceg .Bitmap =_db .New (_gaf .PageBMWidth ,_gaf .PageBMHeight );
|
|
if _gaf .DefaultPixelValue !=0{_dceg .Bitmap .SetDefaultPixel ();};for _ ,_abd :=range _dceg .Segments {switch _abd .Type {case 6,7,22,23,38,39,42,43:_b .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_abd .SegmentNumber );
|
|
_dfcd ,_ffdcf :=_abd .GetSegmentData ();if _ffdcf !=nil {return _ffdcf ;};_fbaa ,_fegg :=_dfcd .(_eg .Regioner );if !_fegg {_b .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",_dfcd );
|
|
return _c .Errorf (_dagd ,"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",_dfcd );
|
|
};_acb ,_ffdcf :=_fbaa .GetRegionBitmap ();if _ffdcf !=nil {return _c .Wrap (_ffdcf ,_dagd ,"");};if _dceg .fitsPage (_gaf ,_acb ){_dceg .Bitmap =_acb ;}else {_aeef :=_fbaa .GetRegionInfo ();_fefd :=_dceg .getCombinationOperator (_gaf ,_aeef .CombinaionOperator );
|
|
_ffdcf =_db .Blit (_acb ,_dceg .Bitmap ,int (_aeef .XLocation ),int (_aeef .YLocation ),_fefd );if _ffdcf !=nil {return _c .Wrap (_ffdcf ,_dagd ,"");};};};};return nil ;};func (_fge *Document )encodeFileHeader (_fbb _gd .BinaryWriter )(_ffdb int ,_dff error ){const _dbb ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
|
|
_ffdb ,_dff =_fbb .Write (_feg );if _dff !=nil {return _ffdb ,_c .Wrap (_dff ,_dbb ,"\u0069\u0064");};if _dff =_fbb .WriteByte (0x01);_dff !=nil {return _ffdb ,_c .Wrap (_dff ,_dbb ,"\u0066\u006c\u0061g\u0073");};_ffdb ++;_fcb :=make ([]byte ,4);_f .BigEndian .PutUint32 (_fcb ,_fge .NumberOfPages );
|
|
_ecaf ,_dff :=_fbb .Write (_fcb );if _dff !=nil {return _ecaf ,_c .Wrap (_dff ,_dbb ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_ffdb +=_ecaf ;return _ffdb ,nil ;};func (_dg *Document )encodeSegment (_bae *_eg .Header ,_aag *int )error {const _fcg ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
|
|
_bae .SegmentNumber =_dg .nextSegmentNumber ();_afde ,_gef :=_bae .Encode (_dg ._bg );if _gef !=nil {return _c .Wrapf (_gef ,_fcg ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_bae .SegmentNumber );};*_aag +=_afde ;return nil ;
|
|
};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_bg :_gd .BufferedMSB (),Pages :map[int ]*Page {},_fec :map[int ][]int {},_ac :map[int ]int {},_gg :map[int ][]int {}};};func (_egb *Document )produceClassifiedPage (_bfa *Page ,_be *_eg .Header )(_bga error ){const _ege ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
|
|
var _cd map[int ]int ;_edc :=_egb ._fef ;_ad :=[]*_eg .Header {_be };if len (_egb ._fec [_bfa .PageNumber ])> 0{_cd =map[int ]int {};_ddd ,_af :=_egb .addSymbolDictionary (_bfa .PageNumber ,_egb .Classer .UndilatedTemplates ,_egb ._fec [_bfa .PageNumber ],_cd ,false );
|
|
if _af !=nil {return _c .Wrap (_af ,_ege ,"");};_ad =append (_ad ,_ddd );_edc +=len (_egb ._fec [_bfa .PageNumber ]);};_eea :=_egb ._gg [_bfa .PageNumber ];_b .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_bfa .PageNumber ,_eea );
|
|
_bfa .addTextRegionSegment (_ad ,_egb ._ac ,_cd ,_egb ._gg [_bfa .PageNumber ],_egb .Classer .PtaLL ,_egb .Classer .UndilatedTemplates ,_egb .Classer .ClassIDs ,nil ,_edgg (_edc ),len (_egb ._gg [_bfa .PageNumber ]));return nil ;};func (_gbcc *Document )encodeEOFHeader (_agf _gd .BinaryWriter )(_aaf int ,_aga error ){_aeb :=&_eg .Header {SegmentNumber :_gbcc .nextSegmentNumber (),Type :_eg .TEndOfFile };
|
|
if _aaf ,_aga =_aeb .Encode (_agf );_aga !=nil {return 0,_c .Wrap (_aga ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _aaf ,nil ;};func (_aa *Document )AddGenericPage (bm *_db .Bitmap ,duplicateLineRemoval bool )(_aad error ){const _eb ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
|
|
if !_aa .FullHeaders &&_aa .NumberOfPages !=0{return _c .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");
|
|
};_aaa :=&Page {Segments :[]*_eg .Header {},Bitmap :bm ,Document :_aa ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_db .Chocolate };_aaa .PageNumber =int (_aa .nextPageNumber ());_aa .Pages [_aaa .PageNumber ]=_aaa ;
|
|
bm .InverseData ();_aaa .AddPageInformationSegment ();if _aad =_aaa .AddGenericRegion (bm ,0,0,0,_eg .TImmediateGenericRegion ,duplicateLineRemoval );_aad !=nil {return _c .Wrap (_aad ,_eb ,"");};if _aa .FullHeaders {_aaa .AddEndOfPageSegment ();};return nil ;
|
|
};func (_bdea *Document )Encode ()(_adc []byte ,_egc error ){const _aee ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _age ,_cae int ;if _bdea .FullHeaders {if _age ,_egc =_bdea .encodeFileHeader (_bdea ._bg );
|
|
_egc !=nil {return nil ,_c .Wrap (_egc ,_aee ,"");};};var (_fdf bool ;_bbe *_eg .Header ;_gee *Page ;);if _egc =_bdea .completeClassifiedPages ();_egc !=nil {return nil ,_c .Wrap (_egc ,_aee ,"");};if _egc =_bdea .produceClassifiedPages ();_egc !=nil {return nil ,_c .Wrap (_egc ,_aee ,"");
|
|
};if _bdea .GlobalSegments !=nil {for _ ,_bbe =range _bdea .GlobalSegments .Segments {if _egc =_bdea .encodeSegment (_bbe ,&_age );_egc !=nil {return nil ,_c .Wrap (_egc ,_aee ,"");};};};for _afc :=1;_afc <=int (_bdea .NumberOfPages );_afc ++{if _gee ,_fdf =_bdea .Pages [_afc ];
|
|
!_fdf {return nil ,_c .Errorf (_aee ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_afc );};for _ ,_bbe =range _gee .Segments {if _egc =_bdea .encodeSegment (_bbe ,&_age );_egc !=nil {return nil ,_c .Wrap (_egc ,_aee ,"");
|
|
};};};if _bdea .FullHeaders {if _cae ,_egc =_bdea .encodeEOFHeader (_bdea ._bg );_egc !=nil {return nil ,_c .Wrap (_egc ,_aee ,"");};_age +=_cae ;};_adc =_bdea ._bg .Data ();if len (_adc )!=_age {_b .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",_age ,len (_adc ));
|
|
};return _adc ,nil ;};var _feg =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A}; |