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 (_db "encoding/binary";_df "fmt";_g "github.com/unidoc/unipdf/v3/common";_bb "github.com/unidoc/unipdf/v3/internal/bitwise";_dba "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_fa "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
|
|
_ce "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_de "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_c "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_b "io";_f "math";_a "runtime/debug";);func (_gbbe *Document )GetNumberOfPages ()(uint32 ,error ){if _gbbe .NumberOfPagesUnknown ||_gbbe .NumberOfPages ==0{if len (_gbbe .Pages )==0{if _dae :=_gbbe .mapData ();
|
|
_dae !=nil {return 0,_c .Wrap (_dae ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_gbbe .Pages )),nil ;};return _gbbe .NumberOfPages ,nil ;};func (_ffaf *Document )nextSegmentNumber ()uint32 {_cba :=_ffaf .CurrentSegmentNumber ;
|
|
_ffaf .CurrentSegmentNumber ++;return _cba ;};func (_bec *Document )encodeSegment (_aead *_ce .Header ,_eaf *int )error {const _gf ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_aead .SegmentNumber =_bec .nextSegmentNumber ();
|
|
_aac ,_ddb :=_aead .Encode (_bec ._bfe );if _ddb !=nil {return _c .Wrapf (_ddb ,_gf ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_aead .SegmentNumber );};*_eaf +=_aac ;return nil ;};func _egf (_fgcf int )int {_dfd :=0;
|
|
_ffe :=(_fgcf &(_fgcf -1))==0;_fgcf >>=1;for ;_fgcf !=0;_fgcf >>=1{_dfd ++;};if _ffe {return _dfd ;};return _dfd +1;};func (_afa *Page )clearSegmentData (){for _cca :=range _afa .Segments {_afa .Segments [_cca ].CleanSegmentData ();};};func (_cff *Page )AddEndOfPageSegment (){_ecb :=&_ce .Header {Type :_ce .TEndOfPage ,PageAssociation :_cff .PageNumber };
|
|
_cff .Segments =append (_cff .Segments ,_ecb );};type Page struct{Segments []*_ce .Header ;PageNumber int ;Bitmap *_fa .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;
|
|
EncodingMethod EncodingMethod ;BlackIsOne bool ;};func (_ad *Globals )GetSegment (segmentNumber int )(*_ce .Header ,error ){const _cde ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _ad ==nil {return nil ,_c .Error (_cde ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_ad .Segments )==0{return nil ,_c .Error (_cde ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _ffeb *_ce .Header ;for _ ,_ffeb =range _ad .Segments {if _ffeb .SegmentNumber ==uint32 (segmentNumber ){break ;
|
|
};};if _ffeb ==nil {return nil ,_c .Error (_cde ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _ffeb ,nil ;};func (_acfe *Document )parseFileHeader ()error {const _ddf ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
|
|
_ ,_gda :=_acfe .InputStream .Seek (8,_b .SeekStart );if _gda !=nil {return _c .Wrap (_gda ,_ddf ,"\u0069\u0064");};_ ,_gda =_acfe .InputStream .ReadBits (5);if _gda !=nil {return _c .Wrap (_gda ,_ddf ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");
|
|
};_cbg ,_gda :=_acfe .InputStream .ReadBit ();if _gda !=nil {return _c .Wrap (_gda ,_ddf ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _cbg ==1{_acfe .GBUseExtTemplate =true ;};_cbg ,_gda =_acfe .InputStream .ReadBit ();
|
|
if _gda !=nil {return _c .Wrap (_gda ,_ddf ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _cbg !=1{_acfe .NumberOfPagesUnknown =false ;};_cbg ,_gda =_acfe .InputStream .ReadBit ();if _gda !=nil {return _c .Wrap (_gda ,_ddf ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");
|
|
};_acfe .OrganizationType =_ce .OrganizationType (_cbg );if !_acfe .NumberOfPagesUnknown {_acfe .NumberOfPages ,_gda =_acfe .InputStream .ReadUint32 ();if _gda !=nil {return _c .Wrap (_gda ,_ddf ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");
|
|
};_acfe ._bf =13;};return nil ;};func (_bae *Page )getHeight ()(int ,error ){const _gfca ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _bae .FinalHeight !=0{return _bae .FinalHeight ,nil ;};_fcfd :=_bae .getPageInformationSegment ();if _fcfd ==nil {return 0,_c .Error (_gfca ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
|
|
};_gddc ,_eeg :=_fcfd .GetSegmentData ();if _eeg !=nil {return 0,_c .Wrap (_eeg ,_gfca ,"");};_fge ,_bdb :=_gddc .(*_ce .PageInformationSegment );if !_bdb {return 0,_c .Errorf (_gfca ,"\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",_gddc );
|
|
};if _fge .PageBMHeight ==_f .MaxInt32 {_ ,_eeg =_bae .GetBitmap ();if _eeg !=nil {return 0,_c .Wrap (_eeg ,_gfca ,"");};}else {_bae .FinalHeight =_fge .PageBMHeight ;};return _bae .FinalHeight ,nil ;};func (_gdea *Page )addTextRegionSegment (_cec []*_ce .Header ,_acg ,_ddac map[int ]int ,_fef []int ,_bbdc *_fa .Points ,_bff *_fa .Bitmaps ,_bcg *_dba .IntSlice ,_fdb *_fa .Boxes ,_adb ,_gca int ){_bfd :=&_ce .TextRegion {NumberOfSymbols :uint32 (_gca )};
|
|
_bfd .InitEncode (_acg ,_ddac ,_fef ,_bbdc ,_bff ,_bcg ,_fdb ,_gdea .FinalWidth ,_gdea .FinalHeight ,_adb );_ceca :=&_ce .Header {RTSegments :_cec ,SegmentData :_bfd ,PageAssociation :_gdea .PageNumber ,Type :_ce .TImmediateTextRegion };_faa :=_ce .TPageInformation ;
|
|
if _ddac !=nil {_faa =_ce .TSymbolDictionary ;};var _agba int ;for ;_agba < len (_gdea .Segments );_agba ++{if _gdea .Segments [_agba ].Type ==_faa {_agba ++;break ;};};_gdea .Segments =append (_gdea .Segments ,nil );copy (_gdea .Segments [_agba +1:],_gdea .Segments [_agba :]);
|
|
_gdea .Segments [_agba ]=_ceca ;};func (_gdabe *Page )getCombinationOperator (_dfaf *_ce .PageInformationSegment ,_bfff _fa .CombinationOperator )_fa .CombinationOperator {if _dfaf .CombinationOperatorOverrideAllowed (){return _bfff ;};return _dfaf .CombinationOperator ();
|
|
};func (_ag *Document )produceClassifiedPages ()(_be error ){const _eb ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _ag .Classer ==nil {return nil ;};var (_gbb *Page ;_ed bool ;
|
|
_efa *_ce .Header ;);for _ga :=1;_ga <=int (_ag .NumberOfPages );_ga ++{if _gbb ,_ed =_ag .Pages [_ga ];!_ed {return _c .Errorf (_eb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ga );};if _gbb .EncodingMethod ==GenericEM {continue ;
|
|
};if _efa ==nil {if _efa ,_be =_ag .GlobalSegments .GetSymbolDictionary ();_be !=nil {return _c .Wrap (_be ,_eb ,"");};};if _be =_ag .produceClassifiedPage (_gbb ,_efa );_be !=nil {return _c .Wrapf (_be ,_eb ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_ga );
|
|
};};return nil ;};func (_dega *Document )GetGlobalSegment (i int )(*_ce .Header ,error ){_gdd ,_agb :=_dega .GlobalSegments .GetSegment (i );if _agb !=nil {return nil ,_c .Wrap (_agb ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
|
|
};return _gdd ,nil ;};func (_fg *Document )completeClassifiedPages ()(_gc error ){const _aeb ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";if _fg .Classer ==nil {return nil ;
|
|
};_fg ._cc =make ([]int ,_fg .Classer .UndilatedTemplates .Size ());for _dfb :=0;_dfb < _fg .Classer .ClassIDs .Size ();_dfb ++{_eac ,_gba :=_fg .Classer .ClassIDs .Get (_dfb );if _gba !=nil {return _c .Wrapf (_gba ,_aeb ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_dfb );
|
|
};_fg ._cc [_eac ]++;};var _gd []int ;for _ef :=0;_ef < _fg .Classer .UndilatedTemplates .Size ();_ef ++{if _fg .NumberOfPages ==1||_fg ._cc [_ef ]> 1{_gd =append (_gd ,_ef );};};var (_bg *Page ;_bag bool ;);for _bd ,_deg :=range *_fg .Classer .ComponentPageNumbers {if _bg ,_bag =_fg .Pages [_deg ];
|
|
!_bag {return _c .Errorf (_aeb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_bd );};if _bg .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",_bd );
|
|
continue ;};_fg ._fff [_deg ]=append (_fg ._fff [_deg ],_bd );_gcc ,_aa :=_fg .Classer .ClassIDs .Get (_bd );if _aa !=nil {return _c .Wrapf (_aa ,_aeb ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_bd );
|
|
};if _fg ._cc [_gcc ]==1&&_fg .NumberOfPages !=1{_gg :=append (_fg ._e [_deg ],_gcc );_fg ._e [_deg ]=_gg ;};};if _gc =_fg .Classer .ComputeLLCorners ();_gc !=nil {return _c .Wrap (_gc ,_aeb ,"");};if _ ,_gc =_fg .addSymbolDictionary (0,_fg .Classer .UndilatedTemplates ,_gd ,_fg ._gb ,false );
|
|
_gc !=nil {return _c .Wrap (_gc ,_aeb ,"");};return nil ;};func (_efg *Page )AddPageInformationSegment (){_egc :=&_ce .PageInformationSegment {PageBMWidth :_efg .FinalWidth ,PageBMHeight :_efg .FinalHeight ,ResolutionX :_efg .ResolutionX ,ResolutionY :_efg .ResolutionY ,IsLossless :_efg .IsLossless };
|
|
if _efg .BlackIsOne {_egc .DefaultPixelValue =uint8 (0x1);};_fdf :=&_ce .Header {PageAssociation :_efg .PageNumber ,SegmentDataLength :uint64 (_egc .Size ()),SegmentData :_egc ,Type :_ce .TPageInformation };_efg .Segments =append (_efg .Segments ,_fdf );
|
|
};func (_ded *Document )Encode ()(_dcd []byte ,_ca error ){const _dbe ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _dd ,_cegb int ;if _ded .FullHeaders {if _dd ,_ca =_ded .encodeFileHeader (_ded ._bfe );_ca !=nil {return nil ,_c .Wrap (_ca ,_dbe ,"");
|
|
};};var (_dbd bool ;_bbe *_ce .Header ;_ebd *Page ;);if _ca =_ded .completeClassifiedPages ();_ca !=nil {return nil ,_c .Wrap (_ca ,_dbe ,"");};if _ca =_ded .produceClassifiedPages ();_ca !=nil {return nil ,_c .Wrap (_ca ,_dbe ,"");};if _ded .GlobalSegments !=nil {for _ ,_bbe =range _ded .GlobalSegments .Segments {if _ca =_ded .encodeSegment (_bbe ,&_dd );
|
|
_ca !=nil {return nil ,_c .Wrap (_ca ,_dbe ,"");};};};for _fgg :=1;_fgg <=int (_ded .NumberOfPages );_fgg ++{if _ebd ,_dbd =_ded .Pages [_fgg ];!_dbd {return nil ,_c .Errorf (_dbe ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_fgg );
|
|
};for _ ,_bbe =range _ebd .Segments {if _ca =_ded .encodeSegment (_bbe ,&_dd );_ca !=nil {return nil ,_c .Wrap (_ca ,_dbe ,"");};};};if _ded .FullHeaders {if _cegb ,_ca =_ded .encodeEOFHeader (_ded ._bfe );_ca !=nil {return nil ,_c .Wrap (_ca ,_dbe ,"");
|
|
};_dd +=_cegb ;};_dcd =_ded ._bfe .Data ();if len (_dcd )!=_dd {_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",_dd ,len (_dcd ));
|
|
};return _dcd ,nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_dea *Page )getPageInformationSegment ()*_ce .Header {for _ ,_dgd :=range _dea .Segments {if _dgd .Type ==_ce .TPageInformation {return _dgd ;};};_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",_dea );
|
|
return nil ;};type EncodingMethod int ;func (_ccd *Page )createPage (_cffe *_ce .PageInformationSegment )error {var _gdab error ;if !_cffe .IsStripe ||_cffe .PageBMHeight !=-1{_gdab =_ccd .createNormalPage (_cffe );}else {_gdab =_ccd .createStripedPage (_cffe );
|
|
};return _gdab ;};func _fee (_cfe *_bb .Reader ,_dg *Globals )(*Document ,error ){_ffad :=&Document {Pages :make (map[int ]*Page ),InputStream :_cfe ,OrganizationType :_ce .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_dg ,_bf :9};if _ffad .GlobalSegments ==nil {_ffad .GlobalSegments =&Globals {};
|
|
};if _bgca :=_ffad .mapData ();_bgca !=nil {return nil ,_bgca ;};return _ffad ,nil ;};func (_afg *Page )GetResolutionY ()(int ,error ){return _afg .getResolutionY ()};func (_feag *Document )isFileHeaderPresent ()(bool ,error ){_feag .InputStream .Mark ();
|
|
for _ ,_ega :=range _ff {_dfag ,_dfe :=_feag .InputStream .ReadByte ();if _dfe !=nil {return false ,_dfe ;};if _ega !=_dfag {_feag .InputStream .Reset ();return false ,nil ;};};_feag .InputStream .Reset ();return true ,nil ;};func (_ddeg *Page )Encode (w _bb .BinaryWriter )(_dgc int ,_afd error ){const _dec ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
var _ddg int ;for _ ,_egag :=range _ddeg .Segments {if _ddg ,_afd =_egag .Encode (w );_afd !=nil {return _dgc ,_c .Wrap (_afd ,_dec ,"");};_dgc +=_ddg ;};return _dgc ,nil ;};func (_eef *Page )GetSegment (number int )(*_ce .Header ,error ){const _cbd ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
|
|
for _ ,_bfcf :=range _eef .Segments {if _bfcf .SegmentNumber ==uint32 (number ){return _bfcf ,nil ;};};_abd :=make ([]uint32 ,len (_eef .Segments ));for _cfd ,_bfee :=range _eef .Segments {_abd [_cfd ]=_bfee .SegmentNumber ;};return nil ,_c .Errorf (_cbd ,"\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 ,_eef .PageNumber ,_abd );
|
|
};func (_ffee *Document )nextPageNumber ()uint32 {_ffee .NumberOfPages ++;return _ffee .NumberOfPages };func (_gbf *Document )produceClassifiedPage (_bed *Page ,_bfa *_ce .Header )(_ec error ){const _baa ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
|
|
var _fcd map[int ]int ;_aea :=_gbf ._af ;_efb :=[]*_ce .Header {_bfa };if len (_gbf ._e [_bed .PageNumber ])> 0{_fcd =map[int ]int {};_aga ,_ee :=_gbf .addSymbolDictionary (_bed .PageNumber ,_gbf .Classer .UndilatedTemplates ,_gbf ._e [_bed .PageNumber ],_fcd ,false );
|
|
if _ee !=nil {return _c .Wrap (_ee ,_baa ,"");};_efb =append (_efb ,_aga );_aea +=len (_gbf ._e [_bed .PageNumber ]);};_ceg :=_gbf ._fff [_bed .PageNumber ];_g .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_bed .PageNumber ,_ceg );
|
|
_bed .addTextRegionSegment (_efb ,_gbf ._gb ,_fcd ,_gbf ._fff [_bed .PageNumber ],_gbf .Classer .PtaLL ,_gbf .Classer .UndilatedTemplates ,_gbf .Classer .ClassIDs ,nil ,_egf (_aea ),len (_gbf ._fff [_bed .PageNumber ]));return nil ;};func (_bcb *Globals )GetSymbolDictionary ()(*_ce .Header ,error ){const _ceaa ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
|
|
if _bcb ==nil {return nil ,_c .Error (_ceaa ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_bcb .Segments )==0{return nil ,_c .Error (_ceaa ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};for _ ,_aff :=range _bcb .Segments {if _aff .Type ==_ce .TSymbolDictionary {return _aff ,nil ;};};return nil ,_c .Error (_ceaa ,"\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 (_cd *Document )completeSymbols ()(_gdb error ){const _gdbf ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _cd .Classer ==nil {return nil ;};if _cd .Classer .UndilatedTemplates ==nil {return _c .Error (_gdbf ,"\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");
|
|
};_cb :=len (_cd .Pages )==1;_gccf :=make ([]int ,_cd .Classer .UndilatedTemplates .Size ());var _faf int ;for _bfc :=0;_bfc < _cd .Classer .ClassIDs .Size ();_bfc ++{_faf ,_gdb =_cd .Classer .ClassIDs .Get (_bfc );if _gdb !=nil {return _c .Wrap (_gdb ,_gdbf ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
|
|
};_gccf [_faf ]++;};var _egec []int ;for _gac :=0;_gac < _cd .Classer .UndilatedTemplates .Size ();_gac ++{if _gccf [_gac ]==0{return _c .Error (_gdbf ,"\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 _gccf [_gac ]> 1||_cb {_egec =append (_egec ,_gac );};};_cd ._af =len (_egec );var _cdg ,_acf int ;for _cbc :=0;_cbc < _cd .Classer .ComponentPageNumbers .Size ();_cbc ++{_cdg ,_gdb =_cd .Classer .ComponentPageNumbers .Get (_cbc );if _gdb !=nil {return _c .Wrapf (_gdb ,_gdbf ,"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",_cbc );
|
|
};_acf ,_gdb =_cd .Classer .ClassIDs .Get (_cbc );if _gdb !=nil {return _c .Wrapf (_gdb ,_gdbf ,"\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",_cdg );
|
|
};if _gccf [_acf ]==1&&!_cb {_cd ._e [_cdg ]=append (_cd ._e [_cdg ],_acf );};};if _gdb =_cd .Classer .ComputeLLCorners ();_gdb !=nil {return _c .Wrap (_gdb ,_gdbf ,"");};return nil ;};func (_cefd *Document )mapData ()error {const _fgda ="\u006da\u0070\u0044\u0061\u0074\u0061";
|
|
var (_ede []*_ce .Header ;_faeb int64 ;_cdb _ce .Type ;);_ffaa ,_cbcb :=_cefd .isFileHeaderPresent ();if _cbcb !=nil {return _c .Wrap (_cbcb ,_fgda ,"");};if _ffaa {if _cbcb =_cefd .parseFileHeader ();_cbcb !=nil {return _c .Wrap (_cbcb ,_fgda ,"");};_faeb +=int64 (_cefd ._bf );
|
|
_cefd .FullHeaders =true ;};var (_gaa *Page ;_ddaa bool ;);for _cdb !=51&&!_ddaa {_gbbee ,_bbf :=_ce .NewHeader (_cefd ,_cefd .InputStream ,_faeb ,_cefd .OrganizationType );if _bbf !=nil {return _c .Wrap (_bbf ,_fgda ,"");};_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",_gbbee .SegmentNumber ,_gbbee .Type );
|
|
_cdb =_gbbee .Type ;if _cdb !=_ce .TEndOfFile {if _gbbee .PageAssociation !=0{_gaa =_cefd .Pages [_gbbee .PageAssociation ];if _gaa ==nil {_gaa =_acc (_cefd ,_gbbee .PageAssociation );_cefd .Pages [_gbbee .PageAssociation ]=_gaa ;if _cefd .NumberOfPagesUnknown {_cefd .NumberOfPages ++;
|
|
};};_gaa .Segments =append (_gaa .Segments ,_gbbee );}else {_cefd .GlobalSegments .AddSegment (_gbbee );};};_ede =append (_ede ,_gbbee );_faeb =_cefd .InputStream .AbsolutePosition ();if _cefd .OrganizationType ==_ce .OSequential {_faeb +=int64 (_gbbee .SegmentDataLength );
|
|
};_ddaa ,_bbf =_cefd .reachedEOF (_faeb );if _bbf !=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",_bbf );
|
|
return _c .Wrap (_bbf ,_fgda ,"");};};_cefd .determineRandomDataOffsets (_ede ,uint64 (_faeb ));return nil ;};func DecodeDocument (input *_bb .Reader ,globals *Globals )(*Document ,error ){return _fee (input ,globals );};func (_affg *Page )createStripedPage (_agcd *_ce .PageInformationSegment )error {const _eceg ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";
|
|
_bcf ,_ccbd :=_affg .collectPageStripes ();if _ccbd !=nil {return _c .Wrap (_ccbd ,_eceg ,"");};var _cccf int ;for _ ,_ged :=range _bcf {if _bffe ,_agcdc :=_ged .(*_ce .EndOfStripe );_agcdc {_cccf =_bffe .LineNumber ()+1;}else {_aab :=_ged .(_ce .Regioner );
|
|
_gaf :=_aab .GetRegionInfo ();_aaa :=_affg .getCombinationOperator (_agcd ,_gaf .CombinaionOperator );_fgb ,_agf :=_aab .GetRegionBitmap ();if _agf !=nil {return _c .Wrap (_agf ,_eceg ,"");};_agf =_fa .Blit (_fgb ,_affg .Bitmap ,int (_gaf .XLocation ),_cccf ,_aaa );
|
|
if _agf !=nil {return _c .Wrap (_agf ,_eceg ,"");};};};return nil ;};func (_ffc *Page )GetResolutionX ()(int ,error ){return _ffc .getResolutionX ()};func (_dgb *Page )getResolutionY ()(int ,error ){const _eafa ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";
|
|
if _dgb .ResolutionY !=0{return _dgb .ResolutionY ,nil ;};_fca :=_dgb .getPageInformationSegment ();if _fca ==nil {return 0,_c .Error (_eafa ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_eeda ,_caeg :=_fca .GetSegmentData ();
|
|
if _caeg !=nil {return 0,_c .Wrap (_caeg ,_eafa ,"");};_cgb ,_beg :=_eeda .(*_ce .PageInformationSegment );if !_beg {return 0,_c .Errorf (_eafa ,"\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",_eeda );
|
|
};_dgb .ResolutionY =_cgb .ResolutionY ;return _dgb .ResolutionY ,nil ;};func (_eba *Page )countRegions ()int {var _daba int ;for _ ,_eed :=range _eba .Segments {switch _eed .Type {case 6,7,22,23,38,39,42,43:_daba ++;};};return _daba ;};func (_bge *Document )GetPage (pageNumber int )(_ce .Pager ,error ){const _dcg ="\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 ,_a .Stack ());
|
|
return nil ,_c .Errorf (_dcg ,"\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 (_bge .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 ,_a .Stack ());return nil ,_c .Error (_dcg ,"\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");
|
|
};_bbb ,_bgc :=_bge .Pages [pageNumber ];if !_bgc {_g .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_a .Stack ());return nil ,_c .Errorf (_dcg ,"\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 _bbb ,nil ;};func (_eda *Globals )GetSegmentByIndex (index int )(*_ce .Header ,error ){const _eeee ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _eda ==nil {return nil ,_c .Error (_eeee ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_eda .Segments )==0{return nil ,_c .Error (_eeee ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_eda .Segments )-1{return nil ,_c .Error (_eeee ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
|
|
};return _eda .Segments [index ],nil ;};func (_ddd *Page )createNormalPage (_fb *_ce .PageInformationSegment )error {const _dbbf ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_ddd .Bitmap =_fa .New (_fb .PageBMWidth ,_fb .PageBMHeight );
|
|
if _fb .DefaultPixelValue !=0{_ddd .Bitmap .SetDefaultPixel ();};for _ ,_bgd :=range _ddd .Segments {switch _bgd .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",_bgd .SegmentNumber );
|
|
_dff ,_agdc :=_bgd .GetSegmentData ();if _agdc !=nil {return _agdc ;};_becc ,_cae :=_dff .(_ce .Regioner );if !_cae {_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",_dff );
|
|
return _c .Errorf (_dbbf ,"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",_dff );
|
|
};_bdec ,_agdc :=_becc .GetRegionBitmap ();if _agdc !=nil {return _c .Wrap (_agdc ,_dbbf ,"");};if _ddd .fitsPage (_fb ,_bdec ){_ddd .Bitmap =_bdec ;}else {_gee :=_becc .GetRegionInfo ();_bfdf :=_ddd .getCombinationOperator (_fb ,_gee .CombinaionOperator );
|
|
_agdc =_fa .Blit (_bdec ,_ddd .Bitmap ,int (_gee .XLocation ),int (_gee .YLocation ),_bfdf );if _agdc !=nil {return _c .Wrap (_agdc ,_dbbf ,"");};};};};return nil ;};func (_bea *Page )GetHeight ()(int ,error ){return _bea .getHeight ()};func (_fab *Page )collectPageStripes ()(_cgf []_ce .Segmenter ,_dcb error ){const _gfa ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";
|
|
var _afb _ce .Segmenter ;for _ ,_abc :=range _fab .Segments {switch _abc .Type {case 6,7,22,23,38,39,42,43:_afb ,_dcb =_abc .GetSegmentData ();if _dcb !=nil {return nil ,_c .Wrap (_dcb ,_gfa ,"");};_cgf =append (_cgf ,_afb );case 50:_afb ,_dcb =_abc .GetSegmentData ();
|
|
if _dcb !=nil {return nil ,_dcb ;};_dag ,_acgf :=_afb .(*_ce .EndOfStripe );if !_acgf {return nil ,_c .Errorf (_gfa ,"\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",_afb );
|
|
};_cgf =append (_cgf ,_dag );_fab .FinalHeight =_dag .LineNumber ();};};return _cgf ,nil ;};func (_agc *Page )composePageBitmap ()error {const _cfbg ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _agc .PageNumber ==0{return nil ;
|
|
};_aba :=_agc .getPageInformationSegment ();if _aba ==nil {return _c .Error (_cfbg ,"\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");
|
|
};_ddbf ,_caa :=_aba .GetSegmentData ();if _caa !=nil {return _caa ;};_bgb ,_dge :=_ddbf .(*_ce .PageInformationSegment );if !_dge {return _c .Error (_cfbg ,"\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 _caa =_agc .createPage (_bgb );_caa !=nil {return _c .Wrap (_caa ,_cfbg ,"");};_agc .clearSegmentData ();return nil ;};func _acc (_fcf *Document ,_fdcb int )*Page {return &Page {Document :_fcf ,PageNumber :_fdcb ,Segments :[]*_ce .Header {}};};type Document struct{Pages map[int ]*Page ;
|
|
NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream *_bb .Reader ;GlobalSegments *Globals ;OrganizationType _ce .OrganizationType ;Classer *_de .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_fa .Bitmaps ;
|
|
BaseIndexes []int ;Refinement bool ;RefineLevel int ;_bf uint8 ;_bfe *_bb .BufferedWriter ;EncodeGlobals bool ;_af int ;_e map[int ][]int ;_fff map[int ][]int ;_cc []int ;_gb map[int ]int ;};func (_ebe *Page )GetBitmap ()(_eceb *_fa .Bitmap ,_cge error ){_g .Log .Trace (_df .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",_ebe .PageNumber ));
|
|
defer func (){if _cge !=nil {_g .Log .Trace (_df .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",_ebe .PageNumber ,_cge ));
|
|
}else {_g .Log .Trace (_df .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",_ebe .PageNumber ));};}();if _ebe .Bitmap !=nil {return _ebe .Bitmap ,nil ;
|
|
};_cge =_ebe .composePageBitmap ();if _cge !=nil {return nil ,_cge ;};return _ebe .Bitmap ,nil ;};func (_bc *Globals )AddSegment (segment *_ce .Header ){_bc .Segments =append (_bc .Segments ,segment )};func (_geb *Page )getResolutionX ()(int ,error ){const _ebdg ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";
|
|
if _geb .ResolutionX !=0{return _geb .ResolutionX ,nil ;};_gad :=_geb .getPageInformationSegment ();if _gad ==nil {return 0,_c .Error (_ebdg ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_cdbf ,_aeec :=_gad .GetSegmentData ();
|
|
if _aeec !=nil {return 0,_c .Wrap (_aeec ,_ebdg ,"");};_bca ,_abaf :=_cdbf .(*_ce .PageInformationSegment );if !_abaf {return 0,_c .Errorf (_ebdg ,"\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",_cdbf );
|
|
};_geb .ResolutionX =_bca .ResolutionX ;return _geb .ResolutionX ,nil ;};func (_eg *Document )AddGenericPage (bm *_fa .Bitmap ,duplicateLineRemoval bool )(_ae error ){const _dc ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
|
|
if !_eg .FullHeaders &&_eg .NumberOfPages !=0{return _c .Error (_dc ,"\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 :[]*_ce .Header {},Bitmap :bm ,Document :_eg ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_fa .Chocolate };_ac .PageNumber =int (_eg .nextPageNumber ());_eg .Pages [_ac .PageNumber ]=_ac ;
|
|
bm .InverseData ();_ac .AddPageInformationSegment ();if _ae =_ac .AddGenericRegion (bm ,0,0,0,_ce .TImmediateGenericRegion ,duplicateLineRemoval );_ae !=nil {return _c .Wrap (_ae ,_dc ,"");};if _eg .FullHeaders {_ac .AddEndOfPageSegment ();};return nil ;
|
|
};func (_bab *Page )GetWidth ()(int ,error ){return _bab .getWidth ()};func (_eee *Document )addSymbolDictionary (_ege int ,_bde *_fa .Bitmaps ,_dfa []int ,_ab map[int ]int ,_dfbg bool )(*_ce .Header ,error ){const _fd ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
|
|
_ffa :=&_ce .SymbolDictionary {};if _bbd :=_ffa .InitEncode (_bde ,_dfa ,_ab ,_dfbg );_bbd !=nil {return nil ,_bbd ;};_efd :=&_ce .Header {Type :_ce .TSymbolDictionary ,PageAssociation :_ege ,SegmentData :_ffa };if _ege ==0{if _eee .GlobalSegments ==nil {_eee .GlobalSegments =&Globals {};
|
|
};_eee .GlobalSegments .AddSegment (_efd );return _efd ,nil ;};_fe ,_da :=_eee .Pages [_ege ];if !_da {return nil ,_c .Errorf (_fd ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ege );};var (_agd int ;
|
|
_cg *_ce .Header ;);for _agd ,_cg =range _fe .Segments {if _cg .Type ==_ce .TPageInformation {break ;};};_agd ++;_fe .Segments =append (_fe .Segments ,nil );copy (_fe .Segments [_agd +1:],_fe .Segments [_agd :]);_fe .Segments [_agd ]=_efd ;return _efd ,nil ;
|
|
};func (_adf *Page )getWidth ()(int ,error ){const _fdca ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _adf .FinalWidth !=0{return _adf .FinalWidth ,nil ;};_ccag :=_adf .getPageInformationSegment ();if _ccag ==nil {return 0,_c .Error (_fdca ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
|
|
};_gea ,_cefe :=_ccag .GetSegmentData ();if _cefe !=nil {return 0,_c .Wrap (_cefe ,_fdca ,"");};_gfag ,_eafb :=_gea .(*_ce .PageInformationSegment );if !_eafb {return 0,_c .Errorf (_fdca ,"\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",_gea );
|
|
};_adf .FinalWidth =_gfag .PageBMWidth ;return _adf .FinalWidth ,nil ;};func (_fcda *Page )AddGenericRegion (bm *_fa .Bitmap ,xloc ,yloc ,template int ,tp _ce .Type ,duplicateLineRemoval bool )error {const _bee ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
|
|
_dab :=&_ce .GenericRegion {};if _bdf :=_dab .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_bdf !=nil {return _c .Wrap (_bdf ,_bee ,"");};_efdb :=&_ce .Header {Type :_ce .TImmediateGenericRegion ,PageAssociation :_fcda .PageNumber ,SegmentData :_dab };
|
|
_fcda .Segments =append (_fcda .Segments ,_efdb );return nil ;};func (_abcd *Page )lastSegmentNumber ()(_dfc uint32 ,_gfe error ){const _bgec ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_abcd .Segments )==0{return _dfc ,_c .Errorf (_bgec ,"\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",_abcd .PageNumber );
|
|
};return _abcd .Segments [len (_abcd .Segments )-1].SegmentNumber ,nil ;};type Globals struct{Segments []*_ce .Header ;};func (_fae *Document )determineRandomDataOffsets (_dda []*_ce .Header ,_fea uint64 ){if _fae .OrganizationType !=_ce .ORandom {return ;
|
|
};for _ ,_cdf :=range _dda {_cdf .SegmentDataStartOffset =_fea ;_fea +=_cdf .SegmentDataLength ;};};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_bfe :_bb .BufferedMSB (),Pages :map[int ]*Page {},_e :map[int ][]int {},_gb :map[int ]int {},_fff :map[int ][]int {}};
|
|
};var _ff =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_ge *Document )AddClassifiedPage (bm *_fa .Bitmap ,method _de .Method )(_ba error ){const _ea ="\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 !_ge .FullHeaders &&_ge .NumberOfPages !=0{return _c .Error (_ea ,"\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 _ge .Classer ==nil {if _ge .Classer ,_ba =_de .Init (_de .DefaultSettings ());_ba !=nil {return _c .Wrap (_ba ,_ea ,"");};};_fc :=int (_ge .nextPageNumber ());_ccb :=&Page {Segments :[]*_ce .Header {},Bitmap :bm ,Document :_ge ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_fc };
|
|
_ge .Pages [_fc ]=_ccb ;switch method {case _de .RankHaus :_ccb .EncodingMethod =RankHausEM ;case _de .Correlation :_ccb .EncodingMethod =CorrelationEM ;};_ccb .AddPageInformationSegment ();if _ba =_ge .Classer .AddPage (bm ,_fc ,method );_ba !=nil {return _c .Wrap (_ba ,_ea ,"");
|
|
};if _ge .FullHeaders {_ccb .AddEndOfPageSegment ();};return nil ;};func (_fdc *Document )encodeFileHeader (_cf _bb .BinaryWriter )(_gfd int ,_gde error ){const _cgg ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
|
|
_gfd ,_gde =_cf .Write (_ff );if _gde !=nil {return _gfd ,_c .Wrap (_gde ,_cgg ,"\u0069\u0064");};if _gde =_cf .WriteByte (0x01);_gde !=nil {return _gfd ,_c .Wrap (_gde ,_cgg ,"\u0066\u006c\u0061g\u0073");};_gfd ++;_aeg :=make ([]byte ,4);_db .BigEndian .PutUint32 (_aeg ,_fdc .NumberOfPages );
|
|
_cdfd ,_gde :=_cf .Write (_aeg );if _gde !=nil {return _cdfd ,_c .Wrap (_gde ,_cgg ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_gfd +=_cdfd ;return _gfd ,nil ;};func (_cfb *Document )reachedEOF (_bdd int64 )(bool ,error ){const _ccc ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";
|
|
_ ,_aee :=_cfb .InputStream .Seek (_bdd ,_b .SeekStart );if _aee !=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",_aee );
|
|
return false ,_c .Wrap (_aee ,_ccc ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_aee =_cfb .InputStream .ReadBits (32);if _aee ==_b .EOF {return true ,nil ;
|
|
}else if _aee !=nil {return false ,_c .Wrap (_aee ,_ccc ,"");};return false ,nil ;};func (_ebg *Page )fitsPage (_faca *_ce .PageInformationSegment ,_gfc *_fa .Bitmap )bool {return _ebg .countRegions ()==1&&_faca .DefaultPixelValue ==0&&_faca .PageBMWidth ==_gfc .Width &&_faca .PageBMHeight ==_gfc .Height ;
|
|
};func (_bcd *Page )nextSegmentNumber ()uint32 {return _bcd .Document .nextSegmentNumber ()};func (_cef *Document )encodeEOFHeader (_fda _bb .BinaryWriter )(_cea int ,_edc error ){_fgd :=&_ce .Header {SegmentNumber :_cef .nextSegmentNumber (),Type :_ce .TEndOfFile };
|
|
if _cea ,_edc =_fgd .Encode (_fda );_edc !=nil {return 0,_c .Wrap (_edc ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _cea ,nil ;};func (_dbb *Page )String ()string {return _df .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_dbb .PageNumber );
|
|
}; |