mirror of
https://github.com/unidoc/unipdf.git
synced 2025-05-02 22:17:06 +08:00
134 lines
40 KiB
Go
134 lines
40 KiB
Go
//
|
|
// Copyright 2020 FoxyUtils ehf. All rights reserved.
|
|
//
|
|
// This is a commercial product and requires a license to operate.
|
|
// A trial license can be obtained at https://unidoc.io
|
|
//
|
|
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
|
|
//
|
|
// Use of this source code is governed by the UniDoc End User License Agreement
|
|
// terms that can be accessed at https://unidoc.io/eula/
|
|
|
|
package document ;import (_b "encoding/binary";_d "fmt";_g "github.com/unidoc/unipdf/v3/common";_gc "github.com/unidoc/unipdf/v3/internal/bitwise";_fe "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_f "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
|
|
_cb "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_bcb "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_ge "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_be "io";_c "math";_bc "runtime/debug";);func (_gecf *Page )AddEndOfPageSegment (){_gge :=&_cb .Header {Type :_cb .TEndOfPage ,PageAssociation :_gecf .PageNumber };
|
|
_gecf .Segments =append (_gecf .Segments ,_gge );};func (_abg *Page )String ()string {return _d .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_abg .PageNumber );};type Globals struct{Segments []*_cb .Header ;};type Document struct{Pages map[int ]*Page ;
|
|
NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream *_gc .Reader ;GlobalSegments *Globals ;OrganizationType _cb .OrganizationType ;Classer *_bcb .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_f .Bitmaps ;
|
|
BaseIndexes []int ;Refinement bool ;RefineLevel int ;_gea uint8 ;_ba *_gc .BufferedWriter ;EncodeGlobals bool ;_bcc int ;_eg map[int ][]int ;_a map[int ][]int ;_bb []int ;_cba map[int ]int ;};func (_de *Document )AddGenericPage (bm *_f .Bitmap ,duplicateLineRemoval bool )(_cd error ){const _bf ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
|
|
if !_de .FullHeaders &&_de .NumberOfPages !=0{return _ge .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");
|
|
};_ac :=&Page {Segments :[]*_cb .Header {},Bitmap :bm ,Document :_de ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_f .Chocolate };_ac .PageNumber =int (_de .nextPageNumber ());_de .Pages [_ac .PageNumber ]=_ac ;
|
|
bm .InverseData ();_ac .AddPageInformationSegment ();if _cd =_ac .AddGenericRegion (bm ,0,0,0,_cb .TImmediateGenericRegion ,duplicateLineRemoval );_cd !=nil {return _ge .Wrap (_cd ,_bf ,"");};if _de .FullHeaders {_ac .AddEndOfPageSegment ();};return nil ;
|
|
};func _ged (_gad int )int {_cc :=0;_bbd :=(_gad &(_gad -1))==0;_gad >>=1;for ;_gad !=0;_gad >>=1{_cc ++;};if _bbd {return _cc ;};return _cc +1;};func (_edc *Page )GetSegment (number int )(*_cb .Header ,error ){const _ddd ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
|
|
for _ ,_adc :=range _edc .Segments {if _adc .SegmentNumber ==uint32 (number ){return _adc ,nil ;};};_efd :=make ([]uint32 ,len (_edc .Segments ));for _fefc ,_cdcgg :=range _edc .Segments {_efd [_fefc ]=_cdcgg .SegmentNumber ;};return nil ,_ge .Errorf (_ddd ,"\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 ,_edc .PageNumber ,_efd );
|
|
};func (_add *Page )AddGenericRegion (bm *_f .Bitmap ,xloc ,yloc ,template int ,tp _cb .Type ,duplicateLineRemoval bool )error {const _gaf ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_bfg :=&_cb .GenericRegion {};
|
|
if _ed :=_bfg .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_ed !=nil {return _ge .Wrap (_ed ,_gaf ,"");};_dbe :=&_cb .Header {Type :_cb .TImmediateGenericRegion ,PageAssociation :_add .PageNumber ,SegmentData :_bfg };_add .Segments =append (_add .Segments ,_dbe );
|
|
return nil ;};func (_gbd *Document )GetGlobalSegment (i int )(*_cb .Header ,error ){_bdf ,_cfc :=_gbd .GlobalSegments .GetSegment (i );if _cfc !=nil {return nil ,_ge .Wrap (_cfc ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
|
|
};return _bdf ,nil ;};type Page struct{Segments []*_cb .Header ;PageNumber int ;Bitmap *_f .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;
|
|
BlackIsOne bool ;};func (_ag *Document )GetPage (pageNumber int )(_cb .Pager ,error ){const _cbb ="\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 ,_bc .Stack ());
|
|
return nil ,_ge .Errorf (_cbb ,"\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 (_ag .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 ,_bc .Stack ());return nil ,_ge .Error (_cbb ,"\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");
|
|
};_gac ,_fc :=_ag .Pages [pageNumber ];if !_fc {_g .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_bc .Stack ());return nil ,_ge .Errorf (_cbb ,"\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 _gac ,nil ;};func (_gdb *Document )produceClassifiedPages ()(_ab error ){const _bcfg ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _gdb .Classer ==nil {return nil ;};
|
|
var (_ae *Page ;_efe bool ;_gg *_cb .Header ;);for _ec :=1;_ec <=int (_gdb .NumberOfPages );_ec ++{if _ae ,_efe =_gdb .Pages [_ec ];!_efe {return _ge .Errorf (_bcfg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ec );
|
|
};if _ae .EncodingMethod ==GenericEM {continue ;};if _gg ==nil {if _gg ,_ab =_gdb .GlobalSegments .GetSymbolDictionary ();_ab !=nil {return _ge .Wrap (_ab ,_bcfg ,"");};};if _ab =_gdb .produceClassifiedPage (_ae ,_gg );_ab !=nil {return _ge .Wrapf (_ab ,_bcfg ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_ec );
|
|
};};return nil ;};func (_bg *Document )Encode ()(_gf []byte ,_aa error ){const _fb ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _fdd ,_bbe int ;if _bg .FullHeaders {if _fdd ,_aa =_bg .encodeFileHeader (_bg ._ba );
|
|
_aa !=nil {return nil ,_ge .Wrap (_aa ,_fb ,"");};};var (_aba bool ;_ad *_cb .Header ;_ggc *Page ;);if _aa =_bg .completeClassifiedPages ();_aa !=nil {return nil ,_ge .Wrap (_aa ,_fb ,"");};if _aa =_bg .produceClassifiedPages ();_aa !=nil {return nil ,_ge .Wrap (_aa ,_fb ,"");
|
|
};if _bg .GlobalSegments !=nil {for _ ,_ad =range _bg .GlobalSegments .Segments {if _aa =_bg .encodeSegment (_ad ,&_fdd );_aa !=nil {return nil ,_ge .Wrap (_aa ,_fb ,"");};};};for _cdcg :=1;_cdcg <=int (_bg .NumberOfPages );_cdcg ++{if _ggc ,_aba =_bg .Pages [_cdcg ];
|
|
!_aba {return nil ,_ge .Errorf (_fb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_cdcg );};for _ ,_ad =range _ggc .Segments {if _aa =_bg .encodeSegment (_ad ,&_fdd );_aa !=nil {return nil ,_ge .Wrap (_aa ,_fb ,"");
|
|
};};};if _bg .FullHeaders {if _bbe ,_aa =_bg .encodeEOFHeader (_bg ._ba );_aa !=nil {return nil ,_ge .Wrap (_aa ,_fb ,"");};_fdd +=_bbe ;};_gf =_bg ._ba .Data ();if len (_gf )!=_fdd {_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",_fdd ,len (_gf ));
|
|
};return _gf ,nil ;};func (_bfac *Page )countRegions ()int {var _dbed int ;for _ ,_gade :=range _bfac .Segments {switch _gade .Type {case 6,7,22,23,38,39,42,43:_dbed ++;};};return _dbed ;};func (_dac *Globals )AddSegment (segment *_cb .Header ){_dac .Segments =append (_dac .Segments ,segment )};
|
|
func (_aca *Page )getCombinationOperator (_cfb *_cb .PageInformationSegment ,_fca _f .CombinationOperator )_f .CombinationOperator {if _cfb .CombinationOperatorOverrideAllowed (){return _fca ;};return _cfb .CombinationOperator ();};func DecodeDocument (input *_gc .Reader ,globals *Globals )(*Document ,error ){return _bfa (input ,globals );
|
|
};func (_gag *Page )collectPageStripes ()(_faee []_cb .Segmenter ,_ace error ){const _gfcb ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _gfg _cb .Segmenter ;for _ ,_adbg :=range _gag .Segments {switch _adbg .Type {case 6,7,22,23,38,39,42,43:_gfg ,_ace =_adbg .GetSegmentData ();
|
|
if _ace !=nil {return nil ,_ge .Wrap (_ace ,_gfcb ,"");};_faee =append (_faee ,_gfg );case 50:_gfg ,_ace =_adbg .GetSegmentData ();if _ace !=nil {return nil ,_ace ;};_gbb ,_bda :=_gfg .(*_cb .EndOfStripe );if !_bda {return nil ,_ge .Errorf (_gfcb ,"\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",_gfg );
|
|
};_faee =append (_faee ,_gbb );_gag .FinalHeight =_gbb .LineNumber ();};};return _faee ,nil ;};func (_aac *Document )GetNumberOfPages ()(uint32 ,error ){if _aac .NumberOfPagesUnknown ||_aac .NumberOfPages ==0{if len (_aac .Pages )==0{if _gfc :=_aac .mapData ();
|
|
_gfc !=nil {return 0,_ge .Wrap (_gfc ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_aac .Pages )),nil ;};return _aac .NumberOfPages ,nil ;};func (_bdd *Document )isFileHeaderPresent ()(bool ,error ){_bdd .InputStream .Mark ();
|
|
for _ ,_ded :=range _bcf {_abe ,_dcee :=_bdd .InputStream .ReadByte ();if _dcee !=nil {return false ,_dcee ;};if _ded !=_abe {_bdd .InputStream .Reset ();return false ,nil ;};};_bdd .InputStream .Reset ();return true ,nil ;};func (_gadb *Page )fitsPage (_fag *_cb .PageInformationSegment ,_aed *_f .Bitmap )bool {return _gadb .countRegions ()==1&&_fag .DefaultPixelValue ==0&&_fag .PageBMWidth ==_aed .Width &&_fag .PageBMHeight ==_aed .Height ;
|
|
};func (_fdda *Document )encodeSegment (_ddbb *_cb .Header ,_ecf *int )error {const _fddaf ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_ddbb .SegmentNumber =_fdda .nextSegmentNumber ();_fbb ,_gff :=_ddbb .Encode (_fdda ._ba );
|
|
if _gff !=nil {return _ge .Wrapf (_gff ,_fddaf ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_ddbb .SegmentNumber );};*_ecf +=_fbb ;return nil ;};func (_fed *Document )AddClassifiedPage (bm *_f .Bitmap ,method _bcb .Method )(_fd error ){const _dd ="\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 !_fed .FullHeaders &&_fed .NumberOfPages !=0{return _ge .Error (_dd ,"\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 _fed .Classer ==nil {if _fed .Classer ,_fd =_bcb .Init (_bcb .DefaultSettings ());_fd !=nil {return _ge .Wrap (_fd ,_dd ,"");};};_fg :=int (_fed .nextPageNumber ());_gcg :=&Page {Segments :[]*_cb .Header {},Bitmap :bm ,Document :_fed ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_fg };
|
|
_fed .Pages [_fg ]=_gcg ;switch method {case _bcb .RankHaus :_gcg .EncodingMethod =RankHausEM ;case _bcb .Correlation :_gcg .EncodingMethod =CorrelationEM ;};_gcg .AddPageInformationSegment ();if _fd =_fed .Classer .AddPage (bm ,_fg ,method );_fd !=nil {return _ge .Wrap (_fd ,_dd ,"");
|
|
};if _fed .FullHeaders {_gcg .AddEndOfPageSegment ();};return nil ;};func (_gga *Document )reachedEOF (_ecfc int64 )(bool ,error ){const _acd ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_ceg :=_gga .InputStream .Seek (_ecfc ,_be .SeekStart );
|
|
if _ceg !=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",_ceg );
|
|
return false ,_ge .Wrap (_ceg ,_acd ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_ceg =_gga .InputStream .ReadBits (32);if _ceg ==_be .EOF {return true ,nil ;
|
|
}else if _ceg !=nil {return false ,_ge .Wrap (_ceg ,_acd ,"");};return false ,nil ;};func (_bec *Document )parseFileHeader ()error {const _fdg ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_baad :=_bec .InputStream .Seek (8,_be .SeekStart );
|
|
if _baad !=nil {return _ge .Wrap (_baad ,_fdg ,"\u0069\u0064");};_ ,_baad =_bec .InputStream .ReadBits (5);if _baad !=nil {return _ge .Wrap (_baad ,_fdg ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_fcec ,_baad :=_bec .InputStream .ReadBit ();
|
|
if _baad !=nil {return _ge .Wrap (_baad ,_fdg ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _fcec ==1{_bec .GBUseExtTemplate =true ;};_fcec ,_baad =_bec .InputStream .ReadBit ();if _baad !=nil {return _ge .Wrap (_baad ,_fdg ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
|
|
};if _fcec !=1{_bec .NumberOfPagesUnknown =false ;};_fcec ,_baad =_bec .InputStream .ReadBit ();if _baad !=nil {return _ge .Wrap (_baad ,_fdg ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_bec .OrganizationType =_cb .OrganizationType (_fcec );
|
|
if !_bec .NumberOfPagesUnknown {_bec .NumberOfPages ,_baad =_bec .InputStream .ReadUint32 ();if _baad !=nil {return _ge .Wrap (_baad ,_fdg ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_bec ._gea =13;};return nil ;
|
|
};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);type EncodingMethod int ;func (_gdf *Document )produceClassifiedPage (_dda *Page ,_acc *_cb .Header )(_dgd error ){const _ggb ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
|
|
var _af map[int ]int ;_df :=_gdf ._bcc ;_dgg :=[]*_cb .Header {_acc };if len (_gdf ._eg [_dda .PageNumber ])> 0{_af =map[int ]int {};_eba ,_bd :=_gdf .addSymbolDictionary (_dda .PageNumber ,_gdf .Classer .UndilatedTemplates ,_gdf ._eg [_dda .PageNumber ],_af ,false );
|
|
if _bd !=nil {return _ge .Wrap (_bd ,_ggb ,"");};_dgg =append (_dgg ,_eba );_df +=len (_gdf ._eg [_dda .PageNumber ]);};_cg :=_gdf ._a [_dda .PageNumber ];_g .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_dda .PageNumber ,_cg );
|
|
_dda .addTextRegionSegment (_dgg ,_gdf ._cba ,_af ,_gdf ._a [_dda .PageNumber ],_gdf .Classer .PtaLL ,_gdf .Classer .UndilatedTemplates ,_gdf .Classer .ClassIDs ,nil ,_ged (_df ),len (_gdf ._a [_dda .PageNumber ]));return nil ;};func (_afb *Document )addSymbolDictionary (_ebe int ,_eaf *_f .Bitmaps ,_ccc []int ,_dcc map[int ]int ,_gcb bool )(*_cb .Header ,error ){const _ccce ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
|
|
_ebc :=&_cb .SymbolDictionary {};if _db :=_ebc .InitEncode (_eaf ,_ccc ,_dcc ,_gcb );_db !=nil {return nil ,_db ;};_bdb :=&_cb .Header {Type :_cb .TSymbolDictionary ,PageAssociation :_ebe ,SegmentData :_ebc };if _ebe ==0{if _afb .GlobalSegments ==nil {_afb .GlobalSegments =&Globals {};
|
|
};_afb .GlobalSegments .AddSegment (_bdb );return _bdb ,nil ;};_gb ,_ee :=_afb .Pages [_ebe ];if !_ee {return nil ,_ge .Errorf (_ccce ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ebe );};var (_cae int ;
|
|
_gca *_cb .Header ;);for _cae ,_gca =range _gb .Segments {if _gca .Type ==_cb .TPageInformation {break ;};};_cae ++;_gb .Segments =append (_gb .Segments ,nil );copy (_gb .Segments [_cae +1:],_gb .Segments [_cae :]);_gb .Segments [_cae ]=_bdb ;return _bdb ,nil ;
|
|
};func (_gfef *Page )createNormalPage (_gdfc *_cb .PageInformationSegment )error {const _acdc ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_gfef .Bitmap =_f .New (_gdfc .PageBMWidth ,_gdfc .PageBMHeight );if _gdfc .DefaultPixelValue !=0{_gfef .Bitmap .SetDefaultPixel ();
|
|
};for _ ,_cec :=range _gfef .Segments {switch _cec .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",_cec .SegmentNumber );_accc ,_bfaa :=_cec .GetSegmentData ();
|
|
if _bfaa !=nil {return _bfaa ;};_bgd ,_fdgf :=_accc .(_cb .Regioner );if !_fdgf {_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",_accc );
|
|
return _ge .Errorf (_acdc ,"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",_accc );
|
|
};_gfefd ,_bfaa :=_bgd .GetRegionBitmap ();if _bfaa !=nil {return _ge .Wrap (_bfaa ,_acdc ,"");};if _gfef .fitsPage (_gdfc ,_gfefd ){_gfef .Bitmap =_gfefd ;}else {_fee :=_bgd .GetRegionInfo ();_cff :=_gfef .getCombinationOperator (_gdfc ,_fee .CombinaionOperator );
|
|
_bfaa =_f .Blit (_gfefd ,_gfef .Bitmap ,int (_fee .XLocation ),int (_fee .YLocation ),_cff );if _bfaa !=nil {return _ge .Wrap (_bfaa ,_acdc ,"");};};};};return nil ;};func (_adcg *Page )createPage (_aff *_cb .PageInformationSegment )error {var _abag error ;
|
|
if !_aff .IsStripe ||_aff .PageBMHeight !=-1{_abag =_adcg .createNormalPage (_aff );}else {_abag =_adcg .createStripedPage (_aff );};return _abag ;};func _gcd (_fda *Document ,_acg int )*Page {return &Page {Document :_fda ,PageNumber :_acg ,Segments :[]*_cb .Header {}};
|
|
};func (_dfc *Globals )GetSymbolDictionary ()(*_cb .Header ,error ){const _gef ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";if _dfc ==nil {return nil ,_ge .Error (_gef ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_dfc .Segments )==0{return nil ,_ge .Error (_gef ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};for _ ,_fbba :=range _dfc .Segments {if _fbba .Type ==_cb .TSymbolDictionary {return _fbba ,nil ;
|
|
};};return nil ,_ge .Error (_gef ,"\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 (_bbea *Page )getHeight ()(int ,error ){const _gcag ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";
|
|
if _bbea .FinalHeight !=0{return _bbea .FinalHeight ,nil ;};_gcf :=_bbea .getPageInformationSegment ();if _gcf ==nil {return 0,_ge .Error (_gcag ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bge ,_cbee :=_gcf .GetSegmentData ();
|
|
if _cbee !=nil {return 0,_ge .Wrap (_cbee ,_gcag ,"");};_gfea ,_ccf :=_bge .(*_cb .PageInformationSegment );if !_ccf {return 0,_ge .Errorf (_gcag ,"\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",_bge );
|
|
};if _gfea .PageBMHeight ==_c .MaxInt32 {_ ,_cbee =_bbea .GetBitmap ();if _cbee !=nil {return 0,_ge .Wrap (_cbee ,_gcag ,"");};}else {_bbea .FinalHeight =_gfea .PageBMHeight ;};return _bbea .FinalHeight ,nil ;};func (_bgg *Page )addTextRegionSegment (_fba []*_cb .Header ,_dgb ,_ead map[int ]int ,_fbg []int ,_def *_f .Points ,_abd *_f .Bitmaps ,_ccb *_fe .IntSlice ,_ffbf *_f .Boxes ,_beb ,_bgb int ){_gafe :=&_cb .TextRegion {NumberOfSymbols :uint32 (_bgb )};
|
|
_gafe .InitEncode (_dgb ,_ead ,_fbg ,_def ,_abd ,_ccb ,_ffbf ,_bgg .FinalWidth ,_bgg .FinalHeight ,_beb );_dgf :=&_cb .Header {RTSegments :_fba ,SegmentData :_gafe ,PageAssociation :_bgg .PageNumber ,Type :_cb .TImmediateTextRegion };_dcg :=_cb .TPageInformation ;
|
|
if _ead !=nil {_dcg =_cb .TSymbolDictionary ;};var _cccc int ;for ;_cccc < len (_bgg .Segments );_cccc ++{if _bgg .Segments [_cccc ].Type ==_dcg {_cccc ++;break ;};};_bgg .Segments =append (_bgg .Segments ,nil );copy (_bgg .Segments [_cccc +1:],_bgg .Segments [_cccc :]);
|
|
_bgg .Segments [_cccc ]=_dgf ;};func (_bbfg *Page )lastSegmentNumber ()(_ggee uint32 ,_dgda error ){const _ecd ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_bbfg .Segments )==0{return _ggee ,_ge .Errorf (_ecd ,"\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",_bbfg .PageNumber );
|
|
};return _bbfg .Segments [len (_bbfg .Segments )-1].SegmentNumber ,nil ;};func (_daa *Document )nextPageNumber ()uint32 {_daa .NumberOfPages ++;return _daa .NumberOfPages };func _bfa (_becc *_gc .Reader ,_cfe *Globals )(*Document ,error ){_baf :=&Document {Pages :make (map[int ]*Page ),InputStream :_becc ,OrganizationType :_cb .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_cfe ,_gea :9};
|
|
if _baf .GlobalSegments ==nil {_baf .GlobalSegments =&Globals {};};if _gec :=_baf .mapData ();_gec !=nil {return nil ,_gec ;};return _baf ,nil ;};func (_cfd *Document )determineRandomDataOffsets (_ceae []*_cb .Header ,_dbf uint64 ){if _cfd .OrganizationType !=_cb .ORandom {return ;
|
|
};for _ ,_fa :=range _ceae {_fa .SegmentDataStartOffset =_dbf ;_dbf +=_fa .SegmentDataLength ;};};func (_bfb *Document )completeSymbols ()(_ce error ){const _eaff ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _bfb .Classer ==nil {return nil ;
|
|
};if _bfb .Classer .UndilatedTemplates ==nil {return _ge .Error (_eaff ,"\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");};_cdc :=len (_bfb .Pages )==1;
|
|
_efff :=make ([]int ,_bfb .Classer .UndilatedTemplates .Size ());var _ffb int ;for _cag :=0;_cag < _bfb .Classer .ClassIDs .Size ();_cag ++{_ffb ,_ce =_bfb .Classer .ClassIDs .Get (_cag );if _ce !=nil {return _ge .Wrap (_ce ,_eaff ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
|
|
};_efff [_ffb ]++;};var _ddf []int ;for _ddfg :=0;_ddfg < _bfb .Classer .UndilatedTemplates .Size ();_ddfg ++{if _efff [_ddfg ]==0{return _ge .Error (_eaff ,"\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 _efff [_ddfg ]> 1||_cdc {_ddf =append (_ddf ,_ddfg );};};_bfb ._bcc =len (_ddf );var _dbg ,_cea int ;for _da :=0;_da < _bfb .Classer .ComponentPageNumbers .Size ();_da ++{_dbg ,_ce =_bfb .Classer .ComponentPageNumbers .Get (_da );if _ce !=nil {return _ge .Wrapf (_ce ,_eaff ,"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",_da );
|
|
};_cea ,_ce =_bfb .Classer .ClassIDs .Get (_da );if _ce !=nil {return _ge .Wrapf (_ce ,_eaff ,"\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",_dbg );
|
|
};if _efff [_cea ]==1&&!_cdc {_bfb ._eg [_dbg ]=append (_bfb ._eg [_dbg ],_cea );};};if _ce =_bfb .Classer .ComputeLLCorners ();_ce !=nil {return _ge .Wrap (_ce ,_eaff ,"");};return nil ;};func (_egf *Document )encodeFileHeader (_baab _gc .BinaryWriter )(_cfa int ,_dbfe error ){const _eef ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
|
|
_cfa ,_dbfe =_baab .Write (_bcf );if _dbfe !=nil {return _cfa ,_ge .Wrap (_dbfe ,_eef ,"\u0069\u0064");};if _dbfe =_baab .WriteByte (0x01);_dbfe !=nil {return _cfa ,_ge .Wrap (_dbfe ,_eef ,"\u0066\u006c\u0061g\u0073");};_cfa ++;_efef :=make ([]byte ,4);
|
|
_b .BigEndian .PutUint32 (_efef ,_egf .NumberOfPages );_fce ,_dbfe :=_baab .Write (_efef );if _dbfe !=nil {return _fce ,_ge .Wrap (_dbfe ,_eef ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_cfa +=_fce ;return _cfa ,nil ;};func (_ef *Document )completeClassifiedPages ()(_gd error ){const _ea ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
|
|
if _ef .Classer ==nil {return nil ;};_ef ._bb =make ([]int ,_ef .Classer .UndilatedTemplates .Size ());for _ddb :=0;_ddb < _ef .Classer .ClassIDs .Size ();_ddb ++{_eff ,_fgg :=_ef .Classer .ClassIDs .Get (_ddb );if _fgg !=nil {return _ge .Wrapf (_fgg ,_ea ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_ddb );
|
|
};_ef ._bb [_eff ]++;};var _deb []int ;for _baa :=0;_baa < _ef .Classer .UndilatedTemplates .Size ();_baa ++{if _ef .NumberOfPages ==1||_ef ._bb [_baa ]> 1{_deb =append (_deb ,_baa );};};var (_ff *Page ;_ffe bool ;);for _dg ,_cf :=range *_ef .Classer .ComponentPageNumbers {if _ff ,_ffe =_ef .Pages [_cf ];
|
|
!_ffe {return _ge .Errorf (_ea ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_dg );};if _ff .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",_dg );
|
|
continue ;};_ef ._a [_cf ]=append (_ef ._a [_cf ],_dg );_ca ,_dc :=_ef .Classer .ClassIDs .Get (_dg );if _dc !=nil {return _ge .Wrapf (_dc ,_ea ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_dg );
|
|
};if _ef ._bb [_ca ]==1&&_ef .NumberOfPages !=1{_ga :=append (_ef ._eg [_cf ],_ca );_ef ._eg [_cf ]=_ga ;};};if _gd =_ef .Classer .ComputeLLCorners ();_gd !=nil {return _ge .Wrap (_gd ,_ea ,"");};if _ ,_gd =_ef .addSymbolDictionary (0,_ef .Classer .UndilatedTemplates ,_deb ,_ef ._cba ,false );
|
|
_gd !=nil {return _ge .Wrap (_gd ,_ea ,"");};return nil ;};var _bcf =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_ffd *Globals )GetSegmentByIndex (index int )(*_cb .Header ,error ){const _dace ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";
|
|
if _ffd ==nil {return nil ,_ge .Error (_dace ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_ffd .Segments )==0{return nil ,_ge .Error (_dace ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};if index > len (_ffd .Segments )-1{return nil ,_ge .Error (_dace ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _ffd .Segments [index ],nil ;};func (_cad *Page )composePageBitmap ()error {const _feg ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";
|
|
if _cad .PageNumber ==0{return nil ;};_cgg :=_cad .getPageInformationSegment ();if _cgg ==nil {return _ge .Error (_feg ,"\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");
|
|
};_cggc ,_fae :=_cgg .GetSegmentData ();if _fae !=nil {return _fae ;};_gfe ,_gbf :=_cggc .(*_cb .PageInformationSegment );if !_gbf {return _ge .Error (_feg ,"\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 _fae =_cad .createPage (_gfe );_fae !=nil {return _ge .Wrap (_fae ,_feg ,"");};_cad .clearSegmentData ();return nil ;};func (_cbd *Page )GetResolutionX ()(int ,error ){return _cbd .getResolutionX ()};func (_eadg *Page )GetResolutionY ()(int ,error ){return _eadg .getResolutionY ()};
|
|
func (_bgdg *Page )nextSegmentNumber ()uint32 {return _bgdg .Document .nextSegmentNumber ()};func (_bba *Page )GetHeight ()(int ,error ){return _bba .getHeight ()};func (_adbc *Document )nextSegmentNumber ()uint32 {_geb :=_adbc .CurrentSegmentNumber ;_adbc .CurrentSegmentNumber ++;
|
|
return _geb ;};func (_acfb *Page )GetBitmap ()(_adbb *_f .Bitmap ,_ggeg error ){_g .Log .Trace (_d .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",_acfb .PageNumber ));
|
|
defer func (){if _ggeg !=nil {_g .Log .Trace (_d .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",_acfb .PageNumber ,_ggeg ));
|
|
}else {_g .Log .Trace (_d .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",_acfb .PageNumber ));};}();if _acfb .Bitmap !=nil {return _acfb .Bitmap ,nil ;
|
|
};_ggeg =_acfb .composePageBitmap ();if _ggeg !=nil {return nil ,_ggeg ;};return _acfb .Bitmap ,nil ;};func (_ggegd *Page )clearSegmentData (){for _gfcd :=range _ggegd .Segments {_ggegd .Segments [_gfcd ].CleanSegmentData ();};};func (_bce *Page )getPageInformationSegment ()*_cb .Header {for _ ,_aeb :=range _bce .Segments {if _aeb .Type ==_cb .TPageInformation {return _aeb ;
|
|
};};_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",_bce );
|
|
return nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_ba :_gc .BufferedMSB (),Pages :map[int ]*Page {},_eg :map[int ][]int {},_cba :map[int ]int {},_a :map[int ][]int {}};};func (_gce *Globals )GetSegment (segmentNumber int )(*_cb .Header ,error ){const _gde ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";
|
|
if _gce ==nil {return nil ,_ge .Error (_gde ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_gce .Segments )==0{return nil ,_ge .Error (_gde ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};var _bea *_cb .Header ;for _ ,_bea =range _gce .Segments {if _bea .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _bea ==nil {return nil ,_ge .Error (_gde ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
|
|
};return _bea ,nil ;};func (_efg *Document )mapData ()error {const _bbf ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_gee []*_cb .Header ;_gbdf int64 ;_agf _cb .Type ;);_egc ,_bdfa :=_efg .isFileHeaderPresent ();if _bdfa !=nil {return _ge .Wrap (_bdfa ,_bbf ,"");
|
|
};if _egc {if _bdfa =_efg .parseFileHeader ();_bdfa !=nil {return _ge .Wrap (_bdfa ,_bbf ,"");};_gbdf +=int64 (_efg ._gea );_efg .FullHeaders =true ;};var (_gfd *Page ;_ebad bool ;);for _agf !=51&&!_ebad {_caa ,_fbe :=_cb .NewHeader (_efg ,_efg .InputStream ,_gbdf ,_efg .OrganizationType );
|
|
if _fbe !=nil {return _ge .Wrap (_fbe ,_bbf ,"");};_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",_caa .SegmentNumber ,_caa .Type );
|
|
_agf =_caa .Type ;if _agf !=_cb .TEndOfFile {if _caa .PageAssociation !=0{_gfd =_efg .Pages [_caa .PageAssociation ];if _gfd ==nil {_gfd =_gcd (_efg ,_caa .PageAssociation );_efg .Pages [_caa .PageAssociation ]=_gfd ;if _efg .NumberOfPagesUnknown {_efg .NumberOfPages ++;
|
|
};};_gfd .Segments =append (_gfd .Segments ,_caa );}else {_efg .GlobalSegments .AddSegment (_caa );};};_gee =append (_gee ,_caa );_gbdf =_efg .InputStream .AbsolutePosition ();if _efg .OrganizationType ==_cb .OSequential {_gbdf +=int64 (_caa .SegmentDataLength );
|
|
};_ebad ,_fbe =_efg .reachedEOF (_gbdf );if _fbe !=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",_fbe );
|
|
return _ge .Wrap (_fbe ,_bbf ,"");};};_efg .determineRandomDataOffsets (_gee ,uint64 (_gbdf ));return nil ;};func (_dcdg *Page )getResolutionX ()(int ,error ){const _bcbb ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";
|
|
if _dcdg .ResolutionX !=0{return _dcdg .ResolutionX ,nil ;};_aaa :=_dcdg .getPageInformationSegment ();if _aaa ==nil {return 0,_ge .Error (_bcbb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_aee ,_eda :=_aaa .GetSegmentData ();
|
|
if _eda !=nil {return 0,_ge .Wrap (_eda ,_bcbb ,"");};_debc ,_dcgc :=_aee .(*_cb .PageInformationSegment );if !_dcgc {return 0,_ge .Errorf (_bcbb ,"\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",_aee );
|
|
};_dcdg .ResolutionX =_debc .ResolutionX ;return _dcdg .ResolutionX ,nil ;};func (_ggbd *Page )createStripedPage (_agc *_cb .PageInformationSegment )error {const _ddaa ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";
|
|
_agd ,_bbc :=_ggbd .collectPageStripes ();if _bbc !=nil {return _ge .Wrap (_bbc ,_ddaa ,"");};var _eefe int ;for _ ,_cfdb :=range _agd {if _dgc ,_cbc :=_cfdb .(*_cb .EndOfStripe );_cbc {_eefe =_dgc .LineNumber ()+1;}else {_gbdfb :=_cfdb .(_cb .Regioner );
|
|
_dcf :=_gbdfb .GetRegionInfo ();_cde :=_ggbd .getCombinationOperator (_agc ,_dcf .CombinaionOperator );_dfd ,_efc :=_gbdfb .GetRegionBitmap ();if _efc !=nil {return _ge .Wrap (_efc ,_ddaa ,"");};_efc =_f .Blit (_dfd ,_ggbd .Bitmap ,int (_dcf .XLocation ),_eefe ,_cde );
|
|
if _efc !=nil {return _ge .Wrap (_efc ,_ddaa ,"");};};};return nil ;};func (_aedd *Page )getResolutionY ()(int ,error ){const _bafg ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _aedd .ResolutionY !=0{return _aedd .ResolutionY ,nil ;
|
|
};_gcgb :=_aedd .getPageInformationSegment ();if _gcgb ==nil {return 0,_ge .Error (_bafg ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_gede ,_egg :=_gcgb .GetSegmentData ();if _egg !=nil {return 0,_ge .Wrap (_egg ,_bafg ,"");
|
|
};_fac ,_efda :=_gede .(*_cb .PageInformationSegment );if !_efda {return 0,_ge .Errorf (_bafg ,"\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",_gede );
|
|
};_aedd .ResolutionY =_fac .ResolutionY ;return _aedd .ResolutionY ,nil ;};func (_fbf *Page )GetWidth ()(int ,error ){return _fbf .getWidth ()};func (_adda *Page )Encode (w _gc .BinaryWriter )(_aab int ,_afbc error ){const _fea ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
var _cdf int ;for _ ,_cbe :=range _adda .Segments {if _cdf ,_afbc =_cbe .Encode (w );_afbc !=nil {return _aab ,_ge .Wrap (_afbc ,_fea ,"");};_aab +=_cdf ;};return _aab ,nil ;};func (_adb *Document )encodeEOFHeader (_ebf _gc .BinaryWriter )(_acf int ,_dce error ){_dcd :=&_cb .Header {SegmentNumber :_adb .nextSegmentNumber (),Type :_cb .TEndOfFile };
|
|
if _acf ,_dce =_dcd .Encode (_ebf );_dce !=nil {return 0,_ge .Wrap (_dce ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _acf ,nil ;};func (_ebd *Page )getWidth ()(int ,error ){const _gfb ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";
|
|
if _ebd .FinalWidth !=0{return _ebd .FinalWidth ,nil ;};_bddf :=_ebd .getPageInformationSegment ();if _bddf ==nil {return 0,_ge .Error (_gfb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_ggaf ,_dga :=_bddf .GetSegmentData ();
|
|
if _dga !=nil {return 0,_ge .Wrap (_dga ,_gfb ,"");};_bbdf ,_ada :=_ggaf .(*_cb .PageInformationSegment );if !_ada {return 0,_ge .Errorf (_gfb ,"\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",_ggaf );
|
|
};_ebd .FinalWidth =_bbdf .PageBMWidth ;return _ebd .FinalWidth ,nil ;};func (_bab *Page )AddPageInformationSegment (){_egfg :=&_cb .PageInformationSegment {PageBMWidth :_bab .FinalWidth ,PageBMHeight :_bab .FinalHeight ,ResolutionX :_bab .ResolutionX ,ResolutionY :_bab .ResolutionY ,IsLossless :_bab .IsLossless };
|
|
if _bab .BlackIsOne {_egfg .DefaultPixelValue =uint8 (0x1);};_bfc :=&_cb .Header {PageAssociation :_bab .PageNumber ,SegmentDataLength :uint64 (_egfg .Size ()),SegmentData :_egfg ,Type :_cb .TPageInformation };_bab .Segments =append (_bab .Segments ,_bfc );
|
|
}; |