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 (_b "encoding/binary";_f "fmt";_c "github.com/unidoc/unipdf/v3/common";_da "github.com/unidoc/unipdf/v3/internal/bitwise";_g "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_dc "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
|
|
_gd "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_bf "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_ba "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_a "io";_d "math";_fe "runtime/debug";);func (_gfg *Document )encodeEOFHeader (_fde _da .BinaryWriter )(_fgd int ,_efa error ){_edb :=&_gd .Header {SegmentNumber :_gfg .nextSegmentNumber (),Type :_gd .TEndOfFile };
|
|
if _fgd ,_efa =_edb .Encode (_fde );_efa !=nil {return 0,_ba .Wrap (_efa ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _fgd ,nil ;};func (_fbf *Page )getCombinationOperator (_eea *_gd .PageInformationSegment ,_dge _dc .CombinationOperator )_dc .CombinationOperator {if _eea .CombinationOperatorOverrideAllowed (){return _dge ;
|
|
};return _eea .CombinationOperator ();};func (_gdfb *Globals )GetSymbolDictionary ()(*_gd .Header ,error ){const _daca ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
|
|
if _gdfb ==nil {return nil ,_ba .Error (_daca ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_gdfb .Segments )==0{return nil ,_ba .Error (_daca ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};for _ ,_cbe :=range _gdfb .Segments {if _cbe .Type ==_gd .TSymbolDictionary {return _cbe ,nil ;};};return nil ,_ba .Error (_daca ,"\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 (_bgad *Page )GetWidth ()(int ,error ){return _bgad .getWidth ()};func (_gbdd *Document )Encode ()(_ecg []byte ,_aaab error ){const _dfa ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _cdd ,_bad int ;if _gbdd .FullHeaders {if _cdd ,_aaab =_gbdd .encodeFileHeader (_gbdd ._bb );
|
|
_aaab !=nil {return nil ,_ba .Wrap (_aaab ,_dfa ,"");};};var (_dgb bool ;_ffa *_gd .Header ;_dadc *Page ;);if _aaab =_gbdd .completeClassifiedPages ();_aaab !=nil {return nil ,_ba .Wrap (_aaab ,_dfa ,"");};if _aaab =_gbdd .produceClassifiedPages ();_aaab !=nil {return nil ,_ba .Wrap (_aaab ,_dfa ,"");
|
|
};if _gbdd .GlobalSegments !=nil {for _ ,_ffa =range _gbdd .GlobalSegments .Segments {if _aaab =_gbdd .encodeSegment (_ffa ,&_cdd );_aaab !=nil {return nil ,_ba .Wrap (_aaab ,_dfa ,"");};};};for _fga :=1;_fga <=int (_gbdd .NumberOfPages );_fga ++{if _dadc ,_dgb =_gbdd .Pages [_fga ];
|
|
!_dgb {return nil ,_ba .Errorf (_dfa ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_fga );};for _ ,_ffa =range _dadc .Segments {if _aaab =_gbdd .encodeSegment (_ffa ,&_cdd );_aaab !=nil {return nil ,_ba .Wrap (_aaab ,_dfa ,"");
|
|
};};};if _gbdd .FullHeaders {if _bad ,_aaab =_gbdd .encodeEOFHeader (_gbdd ._bb );_aaab !=nil {return nil ,_ba .Wrap (_aaab ,_dfa ,"");};_cdd +=_bad ;};_ecg =_gbdd ._bb .Data ();if len (_ecg )!=_cdd {_c .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",_cdd ,len (_ecg ));
|
|
};return _ecg ,nil ;};type Page struct{Segments []*_gd .Header ;PageNumber int ;Bitmap *_dc .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;
|
|
BlackIsOne bool ;};func (_fcda *Page )countRegions ()int {var _gce int ;for _ ,_cfab :=range _fcda .Segments {switch _cfab .Type {case 6,7,22,23,38,39,42,43:_gce ++;};};return _gce ;};func (_gdfba *Page )GetResolutionX ()(int ,error ){return _gdfba .getResolutionX ()};
|
|
type EncodingMethod int ;func (_bbc *Document )parseFileHeader ()error {const _bgc ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_aegd :=_bbc .InputStream .Seek (8,_a .SeekStart );if _aegd !=nil {return _ba .Wrap (_aegd ,_bgc ,"\u0069\u0064");
|
|
};_ ,_aegd =_bbc .InputStream .ReadBits (5);if _aegd !=nil {return _ba .Wrap (_aegd ,_bgc ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_acf ,_aegd :=_bbc .InputStream .ReadBit ();if _aegd !=nil {return _ba .Wrap (_aegd ,_bgc ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");
|
|
};if _acf ==1{_bbc .GBUseExtTemplate =true ;};_acf ,_aegd =_bbc .InputStream .ReadBit ();if _aegd !=nil {return _ba .Wrap (_aegd ,_bgc ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _acf !=1{_bbc .NumberOfPagesUnknown =false ;
|
|
};_acf ,_aegd =_bbc .InputStream .ReadBit ();if _aegd !=nil {return _ba .Wrap (_aegd ,_bgc ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_bbc .OrganizationType =_gd .OrganizationType (_acf );if !_bbc .NumberOfPagesUnknown {_bbc .NumberOfPages ,_aegd =_bbc .InputStream .ReadUint32 ();
|
|
if _aegd !=nil {return _ba .Wrap (_aegd ,_bgc ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_bbc ._fc =13;};return nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;
|
|
GBUseExtTemplate bool ;InputStream _da .StreamReader ;GlobalSegments *Globals ;OrganizationType _gd .OrganizationType ;Classer *_bf .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_dc .Bitmaps ;BaseIndexes []int ;
|
|
Refinement bool ;RefineLevel int ;_fc uint8 ;_bb *_da .BufferedWriter ;EncodeGlobals bool ;_ec int ;_be map[int ][]int ;_daa map[int ][]int ;_db []int ;_bef map[int ]int ;};func (_ffe *Page )AddEndOfPageSegment (){_cfb :=&_gd .Header {Type :_gd .TEndOfPage ,PageAssociation :_ffe .PageNumber };
|
|
_ffe .Segments =append (_ffe .Segments ,_cfb );};func (_beb *Globals )AddSegment (segment *_gd .Header ){_beb .Segments =append (_beb .Segments ,segment )};func (_cf *Document )AddClassifiedPage (bm *_dc .Bitmap ,method _bf .Method )(_aa error ){const _dg ="\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 !_cf .FullHeaders &&_cf .NumberOfPages !=0{return _ba .Error (_dg ,"\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 _cf .Classer ==nil {if _cf .Classer ,_aa =_bf .Init (_bf .DefaultSettings ());_aa !=nil {return _ba .Wrap (_aa ,_dg ,"");};};_ca :=int (_cf .nextPageNumber ());_dgd :=&Page {Segments :[]*_gd .Header {},Bitmap :bm ,Document :_cf ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_ca };
|
|
_cf .Pages [_ca ]=_dgd ;switch method {case _bf .RankHaus :_dgd .EncodingMethod =RankHausEM ;case _bf .Correlation :_dgd .EncodingMethod =CorrelationEM ;};_dgd .AddPageInformationSegment ();if _aa =_cf .Classer .AddPage (bm ,_ca ,method );_aa !=nil {return _ba .Wrap (_aa ,_dg ,"");
|
|
};if _cf .FullHeaders {_dgd .AddEndOfPageSegment ();};return nil ;};func _bbee (_ggb _da .StreamReader ,_bab *Globals )(*Document ,error ){_bed :=&Document {Pages :make (map[int ]*Page ),InputStream :_ggb ,OrganizationType :_gd .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_bab ,_fc :9};
|
|
if _bed .GlobalSegments ==nil {_bed .GlobalSegments =&Globals {};};if _becg :=_bed .mapData ();_becg !=nil {return nil ,_becg ;};return _bed ,nil ;};func (_ga *Document )AddGenericPage (bm *_dc .Bitmap ,duplicateLineRemoval bool )(_fb error ){const _cb ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
|
|
if !_ga .FullHeaders &&_ga .NumberOfPages !=0{return _ba .Error (_cb ,"\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");
|
|
};_ef :=&Page {Segments :[]*_gd .Header {},Bitmap :bm ,Document :_ga ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_dc .Chocolate };_ef .PageNumber =int (_ga .nextPageNumber ());_ga .Pages [_ef .PageNumber ]=_ef ;
|
|
bm .InverseData ();_ef .AddPageInformationSegment ();if _fb =_ef .AddGenericRegion (bm ,0,0,0,_gd .TImmediateGenericRegion ,duplicateLineRemoval );_fb !=nil {return _ba .Wrap (_fb ,_cb ,"");};if _ga .FullHeaders {_ef .AddEndOfPageSegment ();};return nil ;
|
|
};func DecodeDocument (input _da .StreamReader ,globals *Globals )(*Document ,error ){return _bbee (input ,globals );};func (_gee *Page )createStripedPage (_bce *_gd .PageInformationSegment )error {const _gda ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";
|
|
_dga ,_agcb :=_gee .collectPageStripes ();if _agcb !=nil {return _ba .Wrap (_agcb ,_gda ,"");};var _ccbb int ;for _ ,_cgf :=range _dga {if _aae ,_eaa :=_cgf .(*_gd .EndOfStripe );_eaa {_ccbb =_aae .LineNumber ()+1;}else {_ddc :=_cgf .(_gd .Regioner );_dgdd :=_ddc .GetRegionInfo ();
|
|
_bfg :=_gee .getCombinationOperator (_bce ,_dgdd .CombinaionOperator );_gega ,_efaf :=_ddc .GetRegionBitmap ();if _efaf !=nil {return _ba .Wrap (_efaf ,_gda ,"");};_efaf =_dc .Blit (_gega ,_gee .Bitmap ,int (_dgdd .XLocation ),_ccbb ,_bfg );if _efaf !=nil {return _ba .Wrap (_efaf ,_gda ,"");
|
|
};};};return nil ;};type Globals struct{Segments []*_gd .Header ;};func (_egd *Page )addTextRegionSegment (_edbf []*_gd .Header ,_fcg ,_ebbc map[int ]int ,_abca []int ,_bbeee *_dc .Points ,_fgb *_dc .Bitmaps ,_aag *_g .IntSlice ,_abf *_dc .Boxes ,_ega ,_gaee int ){_gbb :=&_gd .TextRegion {NumberOfSymbols :uint32 (_gaee )};
|
|
_gbb .InitEncode (_fcg ,_ebbc ,_abca ,_bbeee ,_fgb ,_aag ,_abf ,_egd .FinalWidth ,_egd .FinalHeight ,_ega );_fbd :=&_gd .Header {RTSegments :_edbf ,SegmentData :_gbb ,PageAssociation :_egd .PageNumber ,Type :_gd .TImmediateTextRegion };_gde :=_gd .TPageInformation ;
|
|
if _ebbc !=nil {_gde =_gd .TSymbolDictionary ;};var _cfg int ;for ;_cfg < len (_egd .Segments );_cfg ++{if _egd .Segments [_cfg ].Type ==_gde {_cfg ++;break ;};};_egd .Segments =append (_egd .Segments ,nil );copy (_egd .Segments [_cfg +1:],_egd .Segments [_cfg :]);
|
|
_egd .Segments [_cfg ]=_fbd ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_bb :_da .BufferedMSB (),Pages :map[int ]*Page {},_be :map[int ][]int {},_bef :map[int ]int {},_daa :map[int ][]int {}};};func (_gaad *Page )getPageInformationSegment ()*_gd .Header {for _ ,_gbbe :=range _gaad .Segments {if _gbbe .Type ==_gd .TPageInformation {return _gbbe ;
|
|
};};_c .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",_gaad );
|
|
return nil ;};func (_dbb *Document )GetPage (pageNumber int )(_gd .Pager ,error ){const _adg ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_c .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 ,_fe .Stack ());
|
|
return nil ,_ba .Errorf (_adg ,"\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 (_dbb .Pages ){_c .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_fe .Stack ());return nil ,_ba .Error (_adg ,"\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");
|
|
};_bcf ,_dff :=_dbb .Pages [pageNumber ];if !_dff {_c .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_fe .Stack ());return nil ,_ba .Errorf (_adg ,"\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 _bcf ,nil ;};func (_dbdg *Page )fitsPage (_cfbc *_gd .PageInformationSegment ,_gab *_dc .Bitmap )bool {return _dbdg .countRegions ()==1&&_cfbc .DefaultPixelValue ==0&&_cfbc .PageBMWidth ==_gab .Width &&_cfbc .PageBMHeight ==_gab .Height ;};func (_fgc *Page )nextSegmentNumber ()uint32 {return _fgc .Document .nextSegmentNumber ()};
|
|
func (_ee *Document )mapData ()error {const _dffg ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_cdg []*_gd .Header ;_bbd int64 ;_cea _gd .Type ;);_acc ,_dda :=_ee .isFileHeaderPresent ();if _dda !=nil {return _ba .Wrap (_dda ,_dffg ,"");};if _acc {if _dda =_ee .parseFileHeader ();
|
|
_dda !=nil {return _ba .Wrap (_dda ,_dffg ,"");};_bbd +=int64 (_ee ._fc );_ee .FullHeaders =true ;};var (_bd *Page ;_cbf bool ;);for _cea !=51&&!_cbf {_ebga ,_cec :=_gd .NewHeader (_ee ,_ee .InputStream ,_bbd ,_ee .OrganizationType );if _cec !=nil {return _ba .Wrap (_cec ,_dffg ,"");
|
|
};_c .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",_ebga .SegmentNumber ,_ebga .Type );
|
|
_cea =_ebga .Type ;if _cea !=_gd .TEndOfFile {if _ebga .PageAssociation !=0{_bd =_ee .Pages [_ebga .PageAssociation ];if _bd ==nil {_bd =_gbf (_ee ,_ebga .PageAssociation );_ee .Pages [_ebga .PageAssociation ]=_bd ;if _ee .NumberOfPagesUnknown {_ee .NumberOfPages ++;
|
|
};};_bd .Segments =append (_bd .Segments ,_ebga );}else {_ee .GlobalSegments .AddSegment (_ebga );};};_cdg =append (_cdg ,_ebga );_bbd =_ee .InputStream .StreamPosition ();if _ee .OrganizationType ==_gd .OSequential {_bbd +=int64 (_ebga .SegmentDataLength );
|
|
};_cbf ,_cec =_ee .reachedEOF (_bbd );if _cec !=nil {_c .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",_cec );
|
|
return _ba .Wrap (_cec ,_dffg ,"");};};_ee .determineRandomDataOffsets (_cdg ,uint64 (_bbd ));return nil ;};func (_bcc *Page )AddPageInformationSegment (){_cac :=&_gd .PageInformationSegment {PageBMWidth :_bcc .FinalWidth ,PageBMHeight :_bcc .FinalHeight ,ResolutionX :_bcc .ResolutionX ,ResolutionY :_bcc .ResolutionY ,IsLossless :_bcc .IsLossless };
|
|
if _bcc .BlackIsOne {_cac .DefaultPixelValue =uint8 (0x1);};_cg :=&_gd .Header {PageAssociation :_bcc .PageNumber ,SegmentDataLength :uint64 (_cac .Size ()),SegmentData :_cac ,Type :_gd .TPageInformation };_bcc .Segments =append (_bcc .Segments ,_cg );
|
|
};func (_dd *Document )completeSymbols ()(_eg error ){const _ddg ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _dd .Classer ==nil {return nil ;};if _dd .Classer .UndilatedTemplates ==nil {return _ba .Error (_ddg ,"\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");
|
|
};_gca :=len (_dd .Pages )==1;_dcd :=make ([]int ,_dd .Classer .UndilatedTemplates .Size ());var _gg int ;for _ce :=0;_ce < _dd .Classer .ClassIDs .Size ();_ce ++{_gg ,_eg =_dd .Classer .ClassIDs .Get (_ce );if _eg !=nil {return _ba .Wrap (_eg ,_ddg ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
|
|
};_dcd [_gg ]++;};var _af []int ;for _cbc :=0;_cbc < _dd .Classer .UndilatedTemplates .Size ();_cbc ++{if _dcd [_cbc ]==0{return _ba .Error (_ddg ,"\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 _dcd [_cbc ]> 1||_gca {_af =append (_af ,_cbc );};};_dd ._ec =len (_af );var _ffb ,_baf int ;for _beg :=0;_beg < _dd .Classer .ComponentPageNumbers .Size ();_beg ++{_ffb ,_eg =_dd .Classer .ComponentPageNumbers .Get (_beg );if _eg !=nil {return _ba .Wrapf (_eg ,_ddg ,"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",_beg );
|
|
};_baf ,_eg =_dd .Classer .ClassIDs .Get (_beg );if _eg !=nil {return _ba .Wrapf (_eg ,_ddg ,"\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",_ffb );
|
|
};if _dcd [_baf ]==1&&!_gca {_dd ._be [_ffb ]=append (_dd ._be [_ffb ],_baf );};};if _eg =_dd .Classer .ComputeLLCorners ();_eg !=nil {return _ba .Wrap (_eg ,_ddg ,"");};return nil ;};var _eb =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_cdb *Globals )GetSegmentByIndex (index int )(*_gd .Header ,error ){const _acgg ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";
|
|
if _cdb ==nil {return nil ,_ba .Error (_acgg ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_cdb .Segments )==0{return nil ,_ba .Error (_acgg ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};if index > len (_cdb .Segments )-1{return nil ,_ba .Error (_acgg ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _cdb .Segments [index ],nil ;};func (_aggb *Page )GetHeight ()(int ,error ){return _aggb .getHeight ()};
|
|
const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_dab *Globals )GetSegment (segmentNumber int )(*_gd .Header ,error ){const _fcb ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _dab ==nil {return nil ,_ba .Error (_fcb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_dab .Segments )==0{return nil ,_ba .Error (_fcb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _ddac *_gd .Header ;for _ ,_ddac =range _dab .Segments {if _ddac .SegmentNumber ==uint32 (segmentNumber ){break ;
|
|
};};if _ddac ==nil {return nil ,_ba .Error (_fcb ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _ddac ,nil ;};func (_dgf *Page )Encode (w _da .BinaryWriter )(_gbdg int ,_egcb error ){const _cfd ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
var _ge int ;for _ ,_eef :=range _dgf .Segments {if _ge ,_egcb =_eef .Encode (w );_egcb !=nil {return _gbdg ,_ba .Wrap (_egcb ,_cfd ,"");};_gbdg +=_ge ;};return _gbdg ,nil ;};func (_fgg *Document )isFileHeaderPresent ()(bool ,error ){_fgg .InputStream .Mark ();
|
|
for _ ,_acg :=range _eb {_aef ,_ebe :=_fgg .InputStream .ReadByte ();if _ebe !=nil {return false ,_ebe ;};if _acg !=_aef {_fgg .InputStream .Reset ();return false ,nil ;};};_fgg .InputStream .Reset ();return true ,nil ;};func (_ece *Document )produceClassifiedPages ()(_bbe error ){const _aeg ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
|
|
if _ece .Classer ==nil {return nil ;};var (_ccb *Page ;_daf bool ;_ag *_gd .Header ;);for _cfa :=1;_cfa <=int (_ece .NumberOfPages );_cfa ++{if _ccb ,_daf =_ece .Pages [_cfa ];!_daf {return _ba .Errorf (_aeg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_cfa );
|
|
};if _ccb .EncodingMethod ==GenericEM {continue ;};if _ag ==nil {if _ag ,_bbe =_ece .GlobalSegments .GetSymbolDictionary ();_bbe !=nil {return _ba .Wrap (_bbe ,_aeg ,"");};};if _bbe =_ece .produceClassifiedPage (_ccb ,_ag );_bbe !=nil {return _ba .Wrapf (_bbe ,_aeg ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_cfa );
|
|
};};return nil ;};func (_adef *Page )lastSegmentNumber ()(_fca uint32 ,_cdbc error ){const _edef ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_adef .Segments )==0{return _fca ,_ba .Errorf (_edef ,"\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",_adef .PageNumber );
|
|
};return _adef .Segments [len (_adef .Segments )-1].SegmentNumber ,nil ;};func (_aeb *Page )GetSegment (number int )(*_gd .Header ,error ){const _gdg ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_gfgd :=range _aeb .Segments {if _gfgd .SegmentNumber ==uint32 (number ){return _gfgd ,nil ;
|
|
};};_gec :=make ([]uint32 ,len (_aeb .Segments ));for _aeag ,_edbe :=range _aeb .Segments {_gec [_aeag ]=_edbe .SegmentNumber ;};return nil ,_ba .Errorf (_gdg ,"\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 ,_aeb .PageNumber ,_gec );
|
|
};func (_gga *Page )createNormalPage (_egg *_gd .PageInformationSegment )error {const _ege ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_gga .Bitmap =_dc .New (_egg .PageBMWidth ,_egg .PageBMHeight );if _egg .DefaultPixelValue !=0{_gga .Bitmap .SetDefaultPixel ();
|
|
};for _ ,_ggfa :=range _gga .Segments {switch _ggfa .Type {case 6,7,22,23,38,39,42,43:_c .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_ggfa .SegmentNumber );_geg ,_cee :=_ggfa .GetSegmentData ();
|
|
if _cee !=nil {return _cee ;};_cbfg ,_agd :=_geg .(_gd .Regioner );if !_agd {_c .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",_geg );
|
|
return _ba .Errorf (_ege ,"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",_geg );
|
|
};_cbfd ,_cee :=_cbfg .GetRegionBitmap ();if _cee !=nil {return _ba .Wrap (_cee ,_ege ,"");};if _gga .fitsPage (_egg ,_cbfd ){_gga .Bitmap =_cbfd ;}else {_bafa :=_cbfg .GetRegionInfo ();_agc :=_gga .getCombinationOperator (_egg ,_bafa .CombinaionOperator );
|
|
_cee =_dc .Blit (_cbfd ,_gga .Bitmap ,int (_bafa .XLocation ),int (_bafa .YLocation ),_agc );if _cee !=nil {return _ba .Wrap (_cee ,_ege ,"");};};};};return nil ;};func (_ede *Document )nextSegmentNumber ()uint32 {_gdde :=_ede .CurrentSegmentNumber ;_ede .CurrentSegmentNumber ++;
|
|
return _gdde ;};func (_gcc *Document )nextPageNumber ()uint32 {_gcc .NumberOfPages ++;return _gcc .NumberOfPages };func (_ccc *Page )composePageBitmap ()error {const _bge ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";
|
|
if _ccc .PageNumber ==0{return nil ;};_bbf :=_ccc .getPageInformationSegment ();if _bbf ==nil {return _ba .Error (_bge ,"\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");
|
|
};_edf ,_bdc :=_bbf .GetSegmentData ();if _bdc !=nil {return _bdc ;};_ggf ,_bca :=_edf .(*_gd .PageInformationSegment );if !_bca {return _ba .Error (_bge ,"\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 _bdc =_ccc .createPage (_ggf );_bdc !=nil {return _ba .Wrap (_bdc ,_bge ,"");};_ccc .clearSegmentData ();return nil ;};func _gbf (_cfgb *Document ,_ffg int )*Page {return &Page {Document :_cfgb ,PageNumber :_ffg ,Segments :[]*_gd .Header {}};};func (_eac *Page )clearSegmentData (){for _acfb :=range _eac .Segments {_eac .Segments [_acfb ].CleanSegmentData ();
|
|
};};func (_dbd *Page )createPage (_ccd *_gd .PageInformationSegment )error {var _abb error ;if !_ccd .IsStripe ||_ccd .PageBMHeight !=-1{_abb =_dbd .createNormalPage (_ccd );}else {_abb =_dbd .createStripedPage (_ccd );};return _abb ;};func (_fbb *Page )collectPageStripes ()(_gfed []_gd .Segmenter ,_ffd error ){const _bece ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";
|
|
var _afe _gd .Segmenter ;for _ ,_afd :=range _fbb .Segments {switch _afd .Type {case 6,7,22,23,38,39,42,43:_afe ,_ffd =_afd .GetSegmentData ();if _ffd !=nil {return nil ,_ba .Wrap (_ffd ,_bece ,"");};_gfed =append (_gfed ,_afe );case 50:_afe ,_ffd =_afd .GetSegmentData ();
|
|
if _ffd !=nil {return nil ,_ffd ;};_fbe ,_cad :=_afe .(*_gd .EndOfStripe );if !_cad {return nil ,_ba .Errorf (_bece ,"\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",_afe );
|
|
};_gfed =append (_gfed ,_fbe );_fbb .FinalHeight =_fbe .LineNumber ();};};return _gfed ,nil ;};func (_fbbc *Page )getHeight ()(int ,error ){const _gcac ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _fbbc .FinalHeight !=0{return _fbbc .FinalHeight ,nil ;
|
|
};_aebb :=_fbbc .getPageInformationSegment ();if _aebb ==nil {return 0,_ba .Error (_gcac ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_dbc ,_aeba :=_aebb .GetSegmentData ();if _aeba !=nil {return 0,_ba .Wrap (_aeba ,_gcac ,"");
|
|
};_bbbd ,_aaf :=_dbc .(*_gd .PageInformationSegment );if !_aaf {return 0,_ba .Errorf (_gcac ,"\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",_dbc );
|
|
};if _bbbd .PageBMHeight ==_d .MaxInt32 {_ ,_aeba =_fbbc .GetBitmap ();if _aeba !=nil {return 0,_ba .Wrap (_aeba ,_gcac ,"");};}else {_fbbc .FinalHeight =_bbbd .PageBMHeight ;};return _fbbc .FinalHeight ,nil ;};func (_gccg *Document )reachedEOF (_fag int64 )(bool ,error ){const _bfcb ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";
|
|
_ ,_decf :=_gccg .InputStream .Seek (_fag ,_a .SeekStart );if _decf !=nil {_c .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",_decf );
|
|
return false ,_ba .Wrap (_decf ,_bfcb ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_decf =_gccg .InputStream .ReadBits (32);if _decf ==_a .EOF {return true ,nil ;
|
|
}else if _decf !=nil {return false ,_ba .Wrap (_decf ,_bfcb ,"");};return false ,nil ;};func (_ade *Document )determineRandomDataOffsets (_fd []*_gd .Header ,_ddb uint64 ){if _ade .OrganizationType !=_gd .ORandom {return ;};for _ ,_ced :=range _fd {_ced .SegmentDataStartOffset =_ddb ;
|
|
_ddb +=_ced .SegmentDataLength ;};};func (_cfc *Document )GetNumberOfPages ()(uint32 ,error ){if _cfc .NumberOfPagesUnknown ||_cfc .NumberOfPages ==0{if len (_cfc .Pages )==0{if _aea :=_cfc .mapData ();_aea !=nil {return 0,_ba .Wrap (_aea ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");
|
|
};};return uint32 (len (_cfc .Pages )),nil ;};return _cfc .NumberOfPages ,nil ;};func (_bba *Document )addSymbolDictionary (_eaf int ,_bbb *_dc .Bitmaps ,_bbbc []int ,_dadg map[int ]int ,_fge bool )(*_gd .Header ,error ){const _gbd ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
|
|
_ebb :=&_gd .SymbolDictionary {};if _ccg :=_ebb .InitEncode (_bbb ,_bbbc ,_dadg ,_fge );_ccg !=nil {return nil ,_ccg ;};_aed :=&_gd .Header {Type :_gd .TSymbolDictionary ,PageAssociation :_eaf ,SegmentData :_ebb };if _eaf ==0{if _bba .GlobalSegments ==nil {_bba .GlobalSegments =&Globals {};
|
|
};_bba .GlobalSegments .AddSegment (_aed );return _aed ,nil ;};_aaa ,_ab :=_bba .Pages [_eaf ];if !_ab {return nil ,_ba .Errorf (_gbd ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_eaf );};var (_bfd int ;
|
|
_df *_gd .Header ;);for _bfd ,_df =range _aaa .Segments {if _df .Type ==_gd .TPageInformation {break ;};};_bfd ++;_aaa .Segments =append (_aaa .Segments ,nil );copy (_aaa .Segments [_bfd +1:],_aaa .Segments [_bfd :]);_aaa .Segments [_bfd ]=_aed ;return _aed ,nil ;
|
|
};func (_gae *Document )encodeSegment (_bga *_gd .Header ,_aga *int )error {const _bec ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_bga .SegmentNumber =_gae .nextSegmentNumber ();_acd ,_dade :=_bga .Encode (_gae ._bb );
|
|
if _dade !=nil {return _ba .Wrapf (_dade ,_bec ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_bga .SegmentNumber );};*_aga +=_acd ;return nil ;};func (_eec *Page )GetBitmap ()(_aec *_dc .Bitmap ,_fbg error ){_c .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",_eec .PageNumber ));
|
|
defer func (){if _fbg !=nil {_c .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",_eec .PageNumber ,_fbg ));
|
|
}else {_c .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",_eec .PageNumber ));};}();if _eec .Bitmap !=nil {return _eec .Bitmap ,nil ;
|
|
};_fbg =_eec .composePageBitmap ();if _fbg !=nil {return nil ,_fbg ;};return _eec .Bitmap ,nil ;};func (_egc *Document )encodeFileHeader (_ggg _da .BinaryWriter )(_abc int ,_fdec error ){const _aff ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
|
|
_abc ,_fdec =_ggg .Write (_eb );if _fdec !=nil {return _abc ,_ba .Wrap (_fdec ,_aff ,"\u0069\u0064");};if _fdec =_ggg .WriteByte (0x01);_fdec !=nil {return _abc ,_ba .Wrap (_fdec ,_aff ,"\u0066\u006c\u0061g\u0073");};_abc ++;_aedc :=make ([]byte ,4);_b .BigEndian .PutUint32 (_aedc ,_egc .NumberOfPages );
|
|
_efb ,_fdec :=_ggg .Write (_aedc );if _fdec !=nil {return _efb ,_ba .Wrap (_fdec ,_aff ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_abc +=_efb ;return _abc ,nil ;};func (_dbg *Page )AddGenericRegion (bm *_dc .Bitmap ,xloc ,yloc ,template int ,tp _gd .Type ,duplicateLineRemoval bool )error {const _cce ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
|
|
_eae :=&_gd .GenericRegion {};if _eeb :=_eae .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_eeb !=nil {return _ba .Wrap (_eeb ,_cce ,"");};_agg :=&_gd .Header {Type :_gd .TImmediateGenericRegion ,PageAssociation :_dbg .PageNumber ,SegmentData :_eae };
|
|
_dbg .Segments =append (_dbg .Segments ,_agg );return nil ;};func (_ac *Document )completeClassifiedPages ()(_befd error ){const _bfc ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
|
|
if _ac .Classer ==nil {return nil ;};_ac ._db =make ([]int ,_ac .Classer .UndilatedTemplates .Size ());for _ebg :=0;_ebg < _ac .Classer .ClassIDs .Size ();_ebg ++{_gc ,_ae :=_ac .Classer .ClassIDs .Get (_ebg );if _ae !=nil {return _ba .Wrapf (_ae ,_bfc ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_ebg );
|
|
};_ac ._db [_gc ]++;};var _ed []int ;for _gb :=0;_gb < _ac .Classer .UndilatedTemplates .Size ();_gb ++{if _ac .NumberOfPages ==1||_ac ._db [_gb ]> 1{_ed =append (_ed ,_gb );};};var (_cba *Page ;_fg bool ;);for _cc ,_gf :=range *_ac .Classer .ComponentPageNumbers {if _cba ,_fg =_ac .Pages [_gf ];
|
|
!_fg {return _ba .Errorf (_bfc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_cc );};if _cba .EncodingMethod ==GenericEM {_c .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",_cc );
|
|
continue ;};_ac ._daa [_gf ]=append (_ac ._daa [_gf ],_cc );_gaf ,_ad :=_ac .Classer .ClassIDs .Get (_cc );if _ad !=nil {return _ba .Wrapf (_ad ,_bfc ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_cc );
|
|
};if _ac ._db [_gaf ]==1&&_ac .NumberOfPages !=1{_cbae :=append (_ac ._be [_gf ],_gaf );_ac ._be [_gf ]=_cbae ;};};if _befd =_ac .Classer .ComputeLLCorners ();_befd !=nil {return _ba .Wrap (_befd ,_bfc ,"");};if _ ,_befd =_ac .addSymbolDictionary (0,_ac .Classer .UndilatedTemplates ,_ed ,_ac ._bef ,false );
|
|
_befd !=nil {return _ba .Wrap (_befd ,_bfc ,"");};return nil ;};func (_ea *Document )produceClassifiedPage (_de *Page ,_dac *_gd .Header )(_gfe error ){const _cd ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
|
|
var _dec map[int ]int ;_dad :=_ea ._ec ;_bag :=[]*_gd .Header {_dac };if len (_ea ._be [_de .PageNumber ])> 0{_dec =map[int ]int {};_bc ,_cde :=_ea .addSymbolDictionary (_de .PageNumber ,_ea .Classer .UndilatedTemplates ,_ea ._be [_de .PageNumber ],_dec ,false );
|
|
if _cde !=nil {return _ba .Wrap (_cde ,_cd ,"");};_bag =append (_bag ,_bc );_dad +=len (_ea ._be [_de .PageNumber ]);};_gdd :=_ea ._daa [_de .PageNumber ];_c .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_de .PageNumber ,_gdd );
|
|
_de .addTextRegionSegment (_bag ,_ea ._bef ,_dec ,_ea ._daa [_de .PageNumber ],_ea .Classer .PtaLL ,_ea .Classer .UndilatedTemplates ,_ea .Classer .ClassIDs ,nil ,_ff (_dad ),len (_ea ._daa [_de .PageNumber ]));return nil ;};func (_bged *Page )getWidth ()(int ,error ){const _ebc ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";
|
|
if _bged .FinalWidth !=0{return _bged .FinalWidth ,nil ;};_dbcd :=_bged .getPageInformationSegment ();if _dbcd ==nil {return 0,_ba .Error (_ebc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bbg ,_gdfa :=_dbcd .GetSegmentData ();
|
|
if _gdfa !=nil {return 0,_ba .Wrap (_gdfa ,_ebc ,"");};_edeb ,_cag :=_bbg .(*_gd .PageInformationSegment );if !_cag {return 0,_ba .Errorf (_ebc ,"\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",_bbg );
|
|
};_bged .FinalWidth =_edeb .PageBMWidth ;return _bged .FinalWidth ,nil ;};func _ff (_cdef int )int {_dacb :=0;_gdf :=(_cdef &(_cdef -1))==0;_cdef >>=1;for ;_cdef !=0;_cdef >>=1{_dacb ++;};if _gdf {return _dacb ;};return _dacb +1;};func (_bccc *Page )String ()string {return _f .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_bccc .PageNumber );
|
|
};func (_aggbb *Page )getResolutionY ()(int ,error ){const _edc ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _aggbb .ResolutionY !=0{return _aggbb .ResolutionY ,nil ;};_bedb :=_aggbb .getPageInformationSegment ();
|
|
if _bedb ==nil {return 0,_ba .Error (_edc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bbdf ,_gfc :=_bedb .GetSegmentData ();if _gfc !=nil {return 0,_ba .Wrap (_gfc ,_edc ,"");};_dcb ,_cccd :=_bbdf .(*_gd .PageInformationSegment );
|
|
if !_cccd {return 0,_ba .Errorf (_edc ,"\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",_bbdf );
|
|
};_aggbb .ResolutionY =_dcb .ResolutionY ;return _aggbb .ResolutionY ,nil ;};func (_def *Document )GetGlobalSegment (i int )(*_gd .Header ,error ){_gdb ,_ead :=_def .GlobalSegments .GetSegment (i );if _ead !=nil {return nil ,_ba .Wrap (_ead ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
|
|
};return _gdb ,nil ;};func (_bgg *Page )getResolutionX ()(int ,error ){const _cadb ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _bgg .ResolutionX !=0{return _bgg .ResolutionX ,nil ;};_daad :=_bgg .getPageInformationSegment ();
|
|
if _daad ==nil {return 0,_ba .Error (_cadb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_fdeb ,_ebd :=_daad .GetSegmentData ();if _ebd !=nil {return 0,_ba .Wrap (_ebd ,_cadb ,"");};_eaca ,_feg :=_fdeb .(*_gd .PageInformationSegment );
|
|
if !_feg {return 0,_ba .Errorf (_cadb ,"\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",_fdeb );
|
|
};_bgg .ResolutionX =_eaca .ResolutionX ;return _bgg .ResolutionX ,nil ;};func (_gbda *Page )GetResolutionY ()(int ,error ){return _gbda .getResolutionY ()}; |