2020-03-27 12:47:41 +01:00
|
|
|
//
|
2020-08-27 21:45:09 +00:00
|
|
|
// 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/
|
2020-03-27 12:47:41 +01:00
|
|
|
|
2021-05-11 00:01:27 +00:00
|
|
|
package document ;import (_c "encoding/binary";_e "fmt";_fb "github.com/unidoc/unipdf/v3/common";_cba "github.com/unidoc/unipdf/v3/internal/bitwise";_ac "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_ga "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
|
|
|
|
_ad "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_ab "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_gaf "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_f "io";_cb "math";_g "runtime/debug";);func (_cfe *Page )getWidth ()(int ,error ){const _caf ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";
|
|
|
|
if _cfe .FinalWidth !=0{return _cfe .FinalWidth ,nil ;};_bbbdd :=_cfe .getPageInformationSegment ();if _bbbdd ==nil {return 0,_gaf .Error (_caf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_gafd ,_cdga :=_bbbdd .GetSegmentData ();
|
|
|
|
if _cdga !=nil {return 0,_gaf .Wrap (_cdga ,_caf ,"");};_aee ,_cfcc :=_gafd .(*_ad .PageInformationSegment );if !_cfcc {return 0,_gaf .Errorf (_caf ,"\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",_gafd );
|
|
|
|
};_cfe .FinalWidth =_aee .PageBMWidth ;return _cfe .FinalWidth ,nil ;};func (_bdb *Page )getHeight ()(int ,error ){const _cae ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _bdb .FinalHeight !=0{return _bdb .FinalHeight ,nil ;};_gbd :=_bdb .getPageInformationSegment ();
|
|
|
|
if _gbd ==nil {return 0,_gaf .Error (_cae ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_dada ,_cacc :=_gbd .GetSegmentData ();if _cacc !=nil {return 0,_gaf .Wrap (_cacc ,_cae ,"");};_fgdb ,_ebe :=_dada .(*_ad .PageInformationSegment );
|
|
|
|
if !_ebe {return 0,_gaf .Errorf (_cae ,"\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",_dada );
|
|
|
|
};if _fgdb .PageBMHeight ==_cb .MaxInt32 {_ ,_cacc =_bdb .GetBitmap ();if _cacc !=nil {return 0,_gaf .Wrap (_cacc ,_cae ,"");};}else {_bdb .FinalHeight =_fgdb .PageBMHeight ;};return _bdb .FinalHeight ,nil ;};func (_beg *Document )encodeSegment (_eb *_ad .Header ,_adg *int )error {const _dg ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
|
|
|
|
_eb .SegmentNumber =_beg .nextSegmentNumber ();_gcc ,_bea :=_eb .Encode (_beg ._d );if _bea !=nil {return _gaf .Wrapf (_bea ,_dg ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_eb .SegmentNumber );};*_adg +=_gcc ;return nil ;
|
|
|
|
};func (_edc *Document )nextPageNumber ()uint32 {_edc .NumberOfPages ++;return _edc .NumberOfPages };func (_bcde *Document )addSymbolDictionary (_fdf int ,_bcc *_ga .Bitmaps ,_aaf []int ,_ca map[int ]int ,_aefd bool )(*_ad .Header ,error ){const _abc ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
|
|
|
|
_ec :=&_ad .SymbolDictionary {};if _be :=_ec .InitEncode (_bcc ,_aaf ,_ca ,_aefd );_be !=nil {return nil ,_be ;};_cab :=&_ad .Header {Type :_ad .TSymbolDictionary ,PageAssociation :_fdf ,SegmentData :_ec };if _fdf ==0{if _bcde .GlobalSegments ==nil {_bcde .GlobalSegments =&Globals {};
|
|
|
|
};_bcde .GlobalSegments .AddSegment (_cab );return _cab ,nil ;};_aff ,_fbf :=_bcde .Pages [_fdf ];if !_fbf {return nil ,_gaf .Errorf (_abc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_fdf );};var (_ee int ;
|
|
|
|
_abb *_ad .Header ;);for _ee ,_abb =range _aff .Segments {if _abb .Type ==_ad .TPageInformation {break ;};};_ee ++;_aff .Segments =append (_aff .Segments ,nil );copy (_aff .Segments [_ee +1:],_aff .Segments [_ee :]);_aff .Segments [_ee ]=_cab ;return _cab ,nil ;
|
|
|
|
};func _adea (_dbeb *Document ,_egb int )*Page {return &Page {Document :_dbeb ,PageNumber :_egb ,Segments :[]*_ad .Header {}};};func (_fdc *Document )encodeFileHeader (_ebad _cba .BinaryWriter )(_caba int ,_gag error ){const _cec ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
|
|
|
|
_caba ,_gag =_ebad .Write (_gg );if _gag !=nil {return _caba ,_gaf .Wrap (_gag ,_cec ,"\u0069\u0064");};if _gag =_ebad .WriteByte (0x01);_gag !=nil {return _caba ,_gaf .Wrap (_gag ,_cec ,"\u0066\u006c\u0061g\u0073");};_caba ++;_afb :=make ([]byte ,4);_c .BigEndian .PutUint32 (_afb ,_fdc .NumberOfPages );
|
|
|
|
_fbe ,_gag :=_ebad .Write (_afb );if _gag !=nil {return _fbe ,_gaf .Wrap (_gag ,_cec ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_caba +=_fbe ;return _caba ,nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;
|
|
|
|
NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _cba .StreamReader ;GlobalSegments *Globals ;OrganizationType _ad .OrganizationType ;Classer *_ab .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_ga .Bitmaps ;
|
|
|
|
BaseIndexes []int ;Refinement bool ;RefineLevel int ;_ggd uint8 ;_d *_cba .BufferedWriter ;EncodeGlobals bool ;_cd int ;_aa map[int ][]int ;_cg map[int ][]int ;_fa []int ;_ae map[int ]int ;};func (_bge *Page )nextSegmentNumber ()uint32 {return _bge .Document .nextSegmentNumber ()};
|
|
|
|
func (_gdg *Globals )GetSegmentByIndex (index int )(*_ad .Header ,error ){const _abdd ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _gdg ==nil {return nil ,_gaf .Error (_abdd ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
|
|
};if len (_gdg .Segments )==0{return nil ,_gaf .Error (_abdd ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_gdg .Segments )-1{return nil ,_gaf .Error (_abdd ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
|
|
|
|
};return _gdg .Segments [index ],nil ;};func (_bff *Document )parseFileHeader ()error {const _ebbe ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_cecd :=_bff .InputStream .Seek (8,_f .SeekStart );if _cecd !=nil {return _gaf .Wrap (_cecd ,_ebbe ,"\u0069\u0064");
|
|
|
|
};_ ,_cecd =_bff .InputStream .ReadBits (5);if _cecd !=nil {return _gaf .Wrap (_cecd ,_ebbe ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_dbb ,_cecd :=_bff .InputStream .ReadBit ();if _cecd !=nil {return _gaf .Wrap (_cecd ,_ebbe ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");
|
|
|
|
};if _dbb ==1{_bff .GBUseExtTemplate =true ;};_dbb ,_cecd =_bff .InputStream .ReadBit ();if _cecd !=nil {return _gaf .Wrap (_cecd ,_ebbe ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _dbb !=1{_bff .NumberOfPagesUnknown =false ;
|
|
|
|
};_dbb ,_cecd =_bff .InputStream .ReadBit ();if _cecd !=nil {return _gaf .Wrap (_cecd ,_ebbe ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_bff .OrganizationType =_ad .OrganizationType (_dbb );if !_bff .NumberOfPagesUnknown {_bff .NumberOfPages ,_cecd =_bff .InputStream .ReadUint32 ();
|
|
|
|
if _cecd !=nil {return _gaf .Wrap (_cecd ,_ebbe ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_bff ._ggd =13;};return nil ;};func (_agef *Page )addTextRegionSegment (_gdfg []*_ad .Header ,_aefa ,_gbc map[int ]int ,_dde []int ,_gcae *_ga .Points ,_afg *_ga .Bitmaps ,_ffd *_ac .IntSlice ,_eceg *_ga .Boxes ,_gfb ,_dcga int ){_cegf :=&_ad .TextRegion {NumberOfSymbols :uint32 (_dcga )};
|
|
|
|
_cegf .InitEncode (_aefa ,_gbc ,_dde ,_gcae ,_afg ,_ffd ,_eceg ,_agef .FinalWidth ,_agef .FinalHeight ,_gfb );_bbad :=&_ad .Header {RTSegments :_gdfg ,SegmentData :_cegf ,PageAssociation :_agef .PageNumber ,Type :_ad .TImmediateTextRegion };_fcg :=_ad .TPageInformation ;
|
|
|
|
if _gbc !=nil {_fcg =_ad .TSymbolDictionary ;};var _bfa int ;for ;_bfa < len (_agef .Segments );_bfa ++{if _agef .Segments [_bfa ].Type ==_fcg {_bfa ++;break ;};};_agef .Segments =append (_agef .Segments ,nil );copy (_agef .Segments [_bfa +1:],_agef .Segments [_bfa :]);
|
|
|
|
_agef .Segments [_bfa ]=_bbad ;};func (_dae *Document )encodeEOFHeader (_fgda _cba .BinaryWriter )(_fad int ,_ece error ){_gdf :=&_ad .Header {SegmentNumber :_dae .nextSegmentNumber (),Type :_ad .TEndOfFile };if _fad ,_ece =_gdf .Encode (_fgda );_ece !=nil {return 0,_gaf .Wrap (_ece ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");
|
|
|
|
};return _fad ,nil ;};func (_gccf *Document )GetGlobalSegment (i int )(*_ad .Header ,error ){_acd ,_gcd :=_gccf .GlobalSegments .GetSegment (i );if _gcd !=nil {return nil ,_gaf .Wrap (_gcd ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
|
|
|
|
};return _acd ,nil ;};func (_fgg *Document )produceClassifiedPage (_ddd *Page ,_gd *_ad .Header )(_ded error ){const _af ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _bde map[int ]int ;_dc :=_fgg ._cd ;
|
|
|
|
_da :=[]*_ad .Header {_gd };if len (_fgg ._aa [_ddd .PageNumber ])> 0{_bde =map[int ]int {};_ed ,_bfg :=_fgg .addSymbolDictionary (_ddd .PageNumber ,_fgg .Classer .UndilatedTemplates ,_fgg ._aa [_ddd .PageNumber ],_bde ,false );if _bfg !=nil {return _gaf .Wrap (_bfg ,_af ,"");
|
|
|
|
};_da =append (_da ,_ed );_dc +=len (_fgg ._aa [_ddd .PageNumber ]);};_agf :=_fgg ._cg [_ddd .PageNumber ];_fb .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_ddd .PageNumber ,_agf );_ddd .addTextRegionSegment (_da ,_fgg ._ae ,_bde ,_fgg ._cg [_ddd .PageNumber ],_fgg .Classer .PtaLL ,_fgg .Classer .UndilatedTemplates ,_fgg .Classer .ClassIDs ,nil ,_decb (_dc ),len (_fgg ._cg [_ddd .PageNumber ]));
|
|
|
|
return nil ;};func (_bcb *Page )countRegions ()int {var _fbd int ;for _ ,_caa :=range _bcb .Segments {switch _caa .Type {case 6,7,22,23,38,39,42,43:_fbd ++;};};return _fbd ;};func (_cdd *Page )GetWidth ()(int ,error ){return _cdd .getWidth ()};func (_bfe *Page )fitsPage (_ffa *_ad .PageInformationSegment ,_gbaa *_ga .Bitmap )bool {return _bfe .countRegions ()==1&&_ffa .DefaultPixelValue ==0&&_ffa .PageBMWidth ==_gbaa .Width &&_ffa .PageBMHeight ==_gbaa .Height ;
|
|
|
|
};func (_fff *Page )AddEndOfPageSegment (){_gab :=&_ad .Header {Type :_ad .TEndOfPage ,PageAssociation :_fff .PageNumber };_fff .Segments =append (_fff .Segments ,_gab );};func (_gb *Document )AddGenericPage (bm *_ga .Bitmap ,duplicateLineRemoval bool )(_eg error ){const _b ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
|
|
|
|
if !_gb .FullHeaders &&_gb .NumberOfPages !=0{return _gaf .Error (_b ,"\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");
|
|
|
|
};_cgb :=&Page {Segments :[]*_ad .Header {},Bitmap :bm ,Document :_gb ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_ga .Chocolate };_cgb .PageNumber =int (_gb .nextPageNumber ());_gb .Pages [_cgb .PageNumber ]=_cgb ;
|
|
|
|
bm .InverseData ();_cgb .AddPageInformationSegment ();if _eg =_cgb .AddGenericRegion (bm ,0,0,0,_ad .TImmediateGenericRegion ,duplicateLineRemoval );_eg !=nil {return _gaf .Wrap (_eg ,_b ,"");};if _gb .FullHeaders {_cgb .AddEndOfPageSegment ();};return nil ;
|
|
|
|
};type EncodingMethod int ;func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_d :_cba .BufferedMSB (),Pages :map[int ]*Page {},_aa :map[int ][]int {},_ae :map[int ]int {},_cg :map[int ][]int {}};};func (_gge *Page )clearSegmentData (){for _agee :=range _gge .Segments {_gge .Segments [_agee ].CleanSegmentData ();
|
|
|
|
};};func (_age *Globals )GetSegment (segmentNumber int )(*_ad .Header ,error ){const _gae ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _age ==nil {return nil ,_gaf .Error (_gae ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
|
|
};if len (_age .Segments )==0{return nil ,_gaf .Error (_gae ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _ddg *_ad .Header ;for _ ,_ddg =range _age .Segments {if _ddg .SegmentNumber ==uint32 (segmentNumber ){break ;
|
|
|
|
};};if _ddg ==nil {return nil ,_gaf .Error (_gae ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _ddg ,nil ;};func (_bcf *Document )determineRandomDataOffsets (_ebac []*_ad .Header ,_beaf uint64 ){if _bcf .OrganizationType !=_ad .ORandom {return ;
|
|
|
|
};for _ ,_fe :=range _ebac {_fe .SegmentDataStartOffset =_beaf ;_beaf +=_fe .SegmentDataLength ;};};func (_ade *Page )GetHeight ()(int ,error ){return _ade .getHeight ()};func (_gcb *Document )completeSymbols ()(_fbc error ){const _abd ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";
|
|
|
|
if _gcb .Classer ==nil {return nil ;};if _gcb .Classer .UndilatedTemplates ==nil {return _gaf .Error (_abd ,"\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");
|
|
|
|
};_ecc :=len (_gcb .Pages )==1;_gbb :=make ([]int ,_gcb .Classer .UndilatedTemplates .Size ());var _fgd int ;for _cac :=0;_cac < _gcb .Classer .ClassIDs .Size ();_cac ++{_fgd ,_fbc =_gcb .Classer .ClassIDs .Get (_cac );if _fbc !=nil {return _gaf .Wrap (_fbc ,_abd ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
|
|
|
|
};_gbb [_fgd ]++;};var _dcg []int ;for _bg :=0;_bg < _gcb .Classer .UndilatedTemplates .Size ();_bg ++{if _gbb [_bg ]==0{return _gaf .Error (_abd ,"\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 _gbb [_bg ]> 1||_ecc {_dcg =append (_dcg ,_bg );};};_gcb ._cd =len (_dcg );var _abdb ,_cad int ;for _fgge :=0;_fgge < _gcb .Classer .ComponentPageNumbers .Size ();_fgge ++{_abdb ,_fbc =_gcb .Classer .ComponentPageNumbers .Get (_fgge );if _fbc !=nil {return _gaf .Wrapf (_fbc ,_abd ,"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",_fgge );
|
|
|
|
};_cad ,_fbc =_gcb .Classer .ClassIDs .Get (_fgge );if _fbc !=nil {return _gaf .Wrapf (_fbc ,_abd ,"\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",_abdb );
|
|
|
|
};if _gbb [_cad ]==1&&!_ecc {_gcb ._aa [_abdb ]=append (_gcb ._aa [_abdb ],_cad );};};if _fbc =_gcb .Classer .ComputeLLCorners ();_fbc !=nil {return _gaf .Wrap (_fbc ,_abd ,"");};return nil ;};func (_gcf *Page )getResolutionX ()(int ,error ){const _cbf ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";
|
|
|
|
if _gcf .ResolutionX !=0{return _gcf .ResolutionX ,nil ;};_aefb :=_gcf .getPageInformationSegment ();if _aefb ==nil {return 0,_gaf .Error (_cbf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_ggc ,_bdf :=_aefb .GetSegmentData ();
|
|
|
|
if _bdf !=nil {return 0,_gaf .Wrap (_bdf ,_cbf ,"");};_gcdc ,_ddb :=_ggc .(*_ad .PageInformationSegment );if !_ddb {return 0,_gaf .Errorf (_cbf ,"\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",_ggc );
|
|
|
|
};_gcf .ResolutionX =_gcdc .ResolutionX ;return _gcf .ResolutionX ,nil ;};func (_cc *Document )produceClassifiedPages ()(_df error ){const _ag ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
|
|
|
|
if _cc .Classer ==nil {return nil ;};var (_aef *Page ;_bb bool ;_gc *_ad .Header ;);for _bd :=1;_bd <=int (_cc .NumberOfPages );_bd ++{if _aef ,_bb =_cc .Pages [_bd ];!_bb {return _gaf .Errorf (_ag ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_bd );
|
|
|
|
};if _aef .EncodingMethod ==GenericEM {continue ;};if _gc ==nil {if _gc ,_df =_cc .GlobalSegments .GetSymbolDictionary ();_df !=nil {return _gaf .Wrap (_df ,_ag ,"");};};if _df =_cc .produceClassifiedPage (_aef ,_gc );_df !=nil {return _gaf .Wrapf (_df ,_ag ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_bd );
|
|
|
|
};};return nil ;};func _ead (_dbe _cba .StreamReader ,_gda *Globals )(*Document ,error ){_ecea :=&Document {Pages :make (map[int ]*Page ),InputStream :_dbe ,OrganizationType :_ad .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_gda ,_ggd :9};
|
|
|
|
if _ecea .GlobalSegments ==nil {_ecea .GlobalSegments =&Globals {};};if _dbd :=_ecea .mapData ();_dbd !=nil {return nil ,_dbd ;};return _ecea ,nil ;};func (_eba *Document )GetNumberOfPages ()(uint32 ,error ){if _eba .NumberOfPagesUnknown ||_eba .NumberOfPages ==0{if len (_eba .Pages )==0{if _bca :=_eba .mapData ();
|
|
|
|
_bca !=nil {return 0,_gaf .Wrap (_bca ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_eba .Pages )),nil ;};return _eba .NumberOfPages ,nil ;};func (_gdfb *Page )GetBitmap ()(_cadb *_ga .Bitmap ,_bccd error ){_fb .Log .Trace (_e .Sprintf ("\u005b\u0050\u0041G\u0045\u005d\u005b\u0023%\u0064\u005d\u0020\u0047\u0065\u0074\u0042i\u0074\u006d\u0061\u0070\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e",_gdfb .PageNumber ));
|
|
|
|
defer func (){if _bccd !=nil {_fb .Log .Trace (_e .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064\u005d\u0020\u0047\u0065\u0074B\u0069t\u006d\u0061\u0070\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_gdfb .PageNumber ,_bccd ));
|
|
|
|
}else {_fb .Log .Trace (_e .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064]\u0020\u0047\u0065\u0074\u0042\u0069\u0074m\u0061\u0070\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064",_gdfb .PageNumber ));};}();if _gdfb .Bitmap !=nil {return _gdfb .Bitmap ,nil ;
|
|
|
|
};_bccd =_gdfb .composePageBitmap ();if _bccd !=nil {return nil ,_bccd ;};return _gdfb .Bitmap ,nil ;};func (_gcaa *Document )mapData ()error {const _edf ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_ebb []*_ad .Header ;_bee int64 ;_abg _ad .Type ;);_aab ,_gfc :=_gcaa .isFileHeaderPresent ();
|
|
|
|
if _gfc !=nil {return _gaf .Wrap (_gfc ,_edf ,"");};if _aab {if _gfc =_gcaa .parseFileHeader ();_gfc !=nil {return _gaf .Wrap (_gfc ,_edf ,"");};_bee +=int64 (_gcaa ._ggd );_gcaa .FullHeaders =true ;};var (_cgdb *Page ;_ebc bool ;);for _abg !=51&&!_ebc {_cf ,_eaab :=_ad .NewHeader (_gcaa ,_gcaa .InputStream ,_bee ,_gcaa .OrganizationType );
|
|
|
|
if _eaab !=nil {return _gaf .Wrap (_eaab ,_edf ,"");};_fb .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",_cf .SegmentNumber ,_cf .Type );
|
|
|
|
_abg =_cf .Type ;if _abg !=_ad .TEndOfFile {if _cf .PageAssociation !=0{_cgdb =_gcaa .Pages [_cf .PageAssociation ];if _cgdb ==nil {_cgdb =_adea (_gcaa ,_cf .PageAssociation );_gcaa .Pages [_cf .PageAssociation ]=_cgdb ;if _gcaa .NumberOfPagesUnknown {_gcaa .NumberOfPages ++;
|
|
|
|
};};_cgdb .Segments =append (_cgdb .Segments ,_cf );}else {_gcaa .GlobalSegments .AddSegment (_cf );};};_ebb =append (_ebb ,_cf );_bee =_gcaa .InputStream .StreamPosition ();if _gcaa .OrganizationType ==_ad .OSequential {_bee +=int64 (_cf .SegmentDataLength );
|
|
|
|
};_ebc ,_eaab =_gcaa .reachedEOF (_bee );if _eaab !=nil {_fb .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",_eaab );
|
|
|
|
return _gaf .Wrap (_eaab ,_edf ,"");};};_gcaa .determineRandomDataOffsets (_ebb ,uint64 (_bee ));return nil ;};func (_ecdd *Page )String ()string {return _e .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_ecdd .PageNumber );};func (_ccc *Page )GetSegment (number int )(*_ad .Header ,error ){const _daf ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
|
|
|
|
for _ ,_fgdc :=range _ccc .Segments {if _fgdc .SegmentNumber ==uint32 (number ){return _fgdc ,nil ;};};_bfdg :=make ([]uint32 ,len (_ccc .Segments ));for _ffcb ,_fgc :=range _ccc .Segments {_bfdg [_ffcb ]=_fgc .SegmentNumber ;};return nil ,_gaf .Errorf (_daf ,"\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 ,_ccc .PageNumber ,_bfdg );
|
|
|
|
};func (_fade *Document )nextSegmentNumber ()uint32 {_bbb :=_fade .CurrentSegmentNumber ;_fade .CurrentSegmentNumber ++;return _bbb ;};func (_bfd *Document )Encode ()(_afa []byte ,_egc error ){const _ecg ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
|
|
var _afd ,_cbc int ;if _bfd .FullHeaders {if _afd ,_egc =_bfd .encodeFileHeader (_bfd ._d );_egc !=nil {return nil ,_gaf .Wrap (_egc ,_ecg ,"");};};var (_dcgb bool ;_bfb *_ad .Header ;_fc *Page ;);if _egc =_bfd .completeClassifiedPages ();_egc !=nil {return nil ,_gaf .Wrap (_egc ,_ecg ,"");
|
|
|
|
};if _egc =_bfd .produceClassifiedPages ();_egc !=nil {return nil ,_gaf .Wrap (_egc ,_ecg ,"");};if _bfd .GlobalSegments !=nil {for _ ,_bfb =range _bfd .GlobalSegments .Segments {if _egc =_bfd .encodeSegment (_bfb ,&_afd );_egc !=nil {return nil ,_gaf .Wrap (_egc ,_ecg ,"");
|
|
|
|
};};};for _dad :=1;_dad <=int (_bfd .NumberOfPages );_dad ++{if _fc ,_dcgb =_bfd .Pages [_dad ];!_dcgb {return nil ,_gaf .Errorf (_ecg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_dad );};for _ ,_bfb =range _fc .Segments {if _egc =_bfd .encodeSegment (_bfb ,&_afd );
|
|
|
|
_egc !=nil {return nil ,_gaf .Wrap (_egc ,_ecg ,"");};};};if _bfd .FullHeaders {if _cbc ,_egc =_bfd .encodeEOFHeader (_bfd ._d );_egc !=nil {return nil ,_gaf .Wrap (_egc ,_ecg ,"");};_afd +=_cbc ;};_afa =_bfd ._d .Data ();if len (_afa )!=_afd {_fb .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",_afd ,len (_afa ));
|
|
|
|
};return _afa ,nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func _decb (_gff int )int {_dcb :=0;_dff :=(_gff &(_gff -1))==0;_gff >>=1;for ;_gff !=0;_gff >>=1{_dcb ++;};if _dff {return _dcb ;};return _dcb +1;};func (_fgcf *Page )getCombinationOperator (_edfb *_ad .PageInformationSegment ,_cfg _ga .CombinationOperator )_ga .CombinationOperator {if _edfb .CombinationOperatorOverrideAllowed (){return _cfg ;
|
|
|
|
};return _edfb .CombinationOperator ();};func (_bbbd *Page )GetResolutionX ()(int ,error ){return _bbbd .getResolutionX ()};type Page struct{Segments []*_ad .Header ;PageNumber int ;Bitmap *_ga .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;
|
|
|
|
ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;};type Globals struct{Segments []*_ad .Header ;};func (_dda *Page )composePageBitmap ()error {const _gbcc ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";
|
|
|
|
if _dda .PageNumber ==0{return nil ;};_dbg :=_dda .getPageInformationSegment ();if _dbg ==nil {return _gaf .Error (_gbcc ,"\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");
|
|
|
|
};_ddc ,_egf :=_dbg .GetSegmentData ();if _egf !=nil {return _egf ;};_dgd ,_fbcd :=_ddc .(*_ad .PageInformationSegment );if !_fbcd {return _gaf .Error (_gbcc ,"\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 _egf =_dda .createPage (_dgd );_egf !=nil {return _gaf .Wrap (_egf ,_gbcc ,"");};_dda .clearSegmentData ();return nil ;};func (_fag *Page )Encode (w _cba .BinaryWriter )(_bda int ,_gccd error ){const _agc ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
|
|
var _adc int ;for _ ,_gbg :=range _fag .Segments {if _adc ,_gccd =_gbg .Encode (w );_gccd !=nil {return _bda ,_gaf .Wrap (_gccd ,_agc ,"");};_bda +=_adc ;};return _bda ,nil ;};func (_dba *Globals )AddSegment (segment *_ad .Header ){_dba .Segments =append (_dba .Segments ,segment )};
|
|
|
|
func (_agb *Page )AddGenericRegion (bm *_ga .Bitmap ,xloc ,yloc ,template int ,tp _ad .Type ,duplicateLineRemoval bool )error {const _dac ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_deff :=&_ad .GenericRegion {};
|
|
|
|
if _dacg :=_deff .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_dacg !=nil {return _gaf .Wrap (_dacg ,_dac ,"");};_egg :=&_ad .Header {Type :_ad .TImmediateGenericRegion ,PageAssociation :_agb .PageNumber ,SegmentData :_deff };_agb .Segments =append (_agb .Segments ,_egg );
|
|
|
|
return nil ;};func (_ggb *Page )collectPageStripes ()(_eae []_ad .Segmenter ,_aea error ){const _dag ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _efd _ad .Segmenter ;for _ ,_edfg :=range _ggb .Segments {switch _edfg .Type {case 6,7,22,23,38,39,42,43:_efd ,_aea =_edfg .GetSegmentData ();
|
|
|
|
if _aea !=nil {return nil ,_gaf .Wrap (_aea ,_dag ,"");};_eae =append (_eae ,_efd );case 50:_efd ,_aea =_edfg .GetSegmentData ();if _aea !=nil {return nil ,_aea ;};_dca ,_feg :=_efd .(*_ad .EndOfStripe );if !_feg {return nil ,_gaf .Errorf (_dag ,"\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",_efd );
|
|
|
|
};_eae =append (_eae ,_dca );_ggb .FinalHeight =_dca .LineNumber ();};};return _eae ,nil ;};func (_dadb *Page )AddPageInformationSegment (){_deb :=&_ad .PageInformationSegment {PageBMWidth :_dadb .FinalWidth ,PageBMHeight :_dadb .FinalHeight ,ResolutionX :_dadb .ResolutionX ,ResolutionY :_dadb .ResolutionY ,IsLossless :_dadb .IsLossless };
|
|
|
|
if _dadb .BlackIsOne {_deb .DefaultPixelValue =uint8 (0x1);};_dgc :=&_ad .Header {PageAssociation :_dadb .PageNumber ,SegmentDataLength :uint64 (_deb .Size ()),SegmentData :_deb ,Type :_ad .TPageInformation };_dadb .Segments =append (_dadb .Segments ,_dgc );
|
|
|
|
};func (_beb *Page )createStripedPage (_ffgb *_ad .PageInformationSegment )error {const _fbef ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_gbcce ,_ggf :=_beb .collectPageStripes ();if _ggf !=nil {return _gaf .Wrap (_ggf ,_fbef ,"");
|
|
|
|
};var _decf int ;for _ ,_bbada :=range _gbcce {if _gbeg ,_decfb :=_bbada .(*_ad .EndOfStripe );_decfb {_decf =_gbeg .LineNumber ()+1;}else {_aadf :=_bbada .(_ad .Regioner );_faf :=_aadf .GetRegionInfo ();_ace :=_beb .getCombinationOperator (_ffgb ,_faf .CombinaionOperator );
|
|
|
|
_gfac ,_cga :=_aadf .GetRegionBitmap ();if _cga !=nil {return _gaf .Wrap (_cga ,_fbef ,"");};_cga =_ga .Blit (_gfac ,_beb .Bitmap ,int (_faf .XLocation ),_decf ,_ace );if _cga !=nil {return _gaf .Wrap (_cga ,_fbef ,"");};};};return nil ;};func DecodeDocument (input _cba .StreamReader ,globals *Globals )(*Document ,error ){return _ead (input ,globals );
|
|
|
|
};func (_cda *Page )getPageInformationSegment ()*_ad .Header {for _ ,_cdg :=range _cda .Segments {if _cdg .Type ==_ad .TPageInformation {return _cdg ;};};_fb .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",_cda );
|
|
|
|
return nil ;};func (_cgdg *Page )createNormalPage (_egd *_ad .PageInformationSegment )error {const _dbgg ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_cgdg .Bitmap =_ga .New (_egd .PageBMWidth ,_egd .PageBMHeight );
|
|
|
|
if _egd .DefaultPixelValue !=0{_cgdg .Bitmap .SetDefaultPixel ();};for _ ,_eef :=range _cgdg .Segments {switch _eef .Type {case 6,7,22,23,38,39,42,43:_fb .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_eef .SegmentNumber );
|
|
|
|
_bega ,_aad :=_eef .GetSegmentData ();if _aad !=nil {return _aad ;};_gcdf ,_fbce :=_bega .(_ad .Regioner );if !_fbce {_fb .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",_bega );
|
|
|
|
return _gaf .Errorf (_dbgg ,"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",_bega );
|
|
|
|
};_gfab ,_aad :=_gcdf .GetRegionBitmap ();if _aad !=nil {return _gaf .Wrap (_aad ,_dbgg ,"");};if _cgdg .fitsPage (_egd ,_gfab ){_cgdg .Bitmap =_gfab ;}else {_bcg :=_gcdf .GetRegionInfo ();_abdc :=_cgdg .getCombinationOperator (_egd ,_bcg .CombinaionOperator );
|
|
|
|
_aad =_ga .Blit (_gfab ,_cgdg .Bitmap ,int (_bcg .XLocation ),int (_bcg .YLocation ),_abdc );if _aad !=nil {return _gaf .Wrap (_aad ,_dbgg ,"");};};};};return nil ;};func (_gfg *Document )isFileHeaderPresent ()(bool ,error ){_gfg .InputStream .Mark ();
|
|
|
|
for _ ,_fgf :=range _gg {_gca ,_ecd :=_gfg .InputStream .ReadByte ();if _ecd !=nil {return false ,_ecd ;};if _fgf !=_gca {_gfg .InputStream .Reset ();return false ,nil ;};};_gfg .InputStream .Reset ();return true ,nil ;};func (_ffc *Document )GetPage (pageNumber int )(_ad .Pager ,error ){const _eaa ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";
|
|
|
|
if pageNumber < 0{_fb .Log .Debug ("\u004a\u0042\u0049\u00472\u0020\u0050\u0061\u0067\u0065\u0020\u002d\u0020\u0047e\u0074\u0050\u0061\u0067\u0065\u003a\u0020\u0025\u0064\u002e\u0020\u0050\u0061\u0067\u0065\u0020\u0063\u0061n\u006e\u006f\u0074\u0020\u0062e\u0020\u006c\u006f\u0077\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0030\u002e\u0020\u0025\u0073",pageNumber ,_g .Stack ());
|
|
|
|
return nil ,_gaf .Errorf (_eaa ,"\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 (_ffc .Pages ){_fb .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_g .Stack ());return nil ,_gaf .Error (_eaa ,"\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");
|
|
|
|
};_def ,_bdg :=_ffc .Pages [pageNumber ];if !_bdg {_fb .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_g .Stack ());return nil ,_gaf .Errorf (_eaa ,"\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 _def ,nil ;};func (_acc *Document )AddClassifiedPage (bm *_ga .Bitmap ,method _ab .Method )(_gf error ){const _bf ="\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0041\u0064d\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064P\u0061\u0067\u0065";
|
|
|
|
if !_acc .FullHeaders &&_acc .NumberOfPages !=0{return _gaf .Error (_bf ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");
|
|
|
|
};if _acc .Classer ==nil {if _acc .Classer ,_gf =_ab .Init (_ab .DefaultSettings ());_gf !=nil {return _gaf .Wrap (_gf ,_bf ,"");};};_fd :=int (_acc .nextPageNumber ());_fbb :=&Page {Segments :[]*_ad .Header {},Bitmap :bm ,Document :_acc ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_fd };
|
|
|
|
_acc .Pages [_fd ]=_fbb ;switch method {case _ab .RankHaus :_fbb .EncodingMethod =RankHausEM ;case _ab .Correlation :_fbb .EncodingMethod =CorrelationEM ;};_fbb .AddPageInformationSegment ();if _gf =_acc .Classer .AddPage (bm ,_fd ,method );_gf !=nil {return _gaf .Wrap (_gf ,_bf ,"");
|
|
|
|
};if _acc .FullHeaders {_fbb .AddEndOfPageSegment ();};return nil ;};func (_bgc *Document )reachedEOF (_cfc int64 )(bool ,error ){const _fcf ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_fdg :=_bgc .InputStream .Seek (_cfc ,_f .SeekStart );
|
|
|
|
if _fdg !=nil {_fb .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",_fdg );
|
|
|
|
return false ,_gaf .Wrap (_fdg ,_fcf ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_fdg =_bgc .InputStream .ReadBits (32);if _fdg ==_f .EOF {return true ,nil ;
|
|
|
|
}else if _fdg !=nil {return false ,_gaf .Wrap (_fdg ,_fcf ,"");};return false ,nil ;};func (_caed *Page )lastSegmentNumber ()(_afgg uint32 ,_fdcg error ){const _agfg ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";
|
|
|
|
if len (_caed .Segments )==0{return _afgg ,_gaf .Errorf (_agfg ,"\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",_caed .PageNumber );
|
|
|
|
};return _caed .Segments [len (_caed .Segments )-1].SegmentNumber ,nil ;};func (_fab *Globals )GetSymbolDictionary ()(*_ad .Header ,error ){const _gac ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
|
|
|
|
if _fab ==nil {return nil ,_gaf .Error (_gac ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_fab .Segments )==0{return nil ,_gaf .Error (_gac ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
|
|
};for _ ,_dedgb :=range _fab .Segments {if _dedgb .Type ==_ad .TSymbolDictionary {return _dedgb ,nil ;};};return nil ,_gaf .Error (_gac ,"\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 (_bbd *Page )GetResolutionY ()(int ,error ){return _bbd .getResolutionY ()};func (_adee *Page )createPage (_gabe *_ad .PageInformationSegment )error {var _dfb error ;if !_gabe .IsStripe ||_gabe .PageBMHeight !=-1{_dfb =_adee .createNormalPage (_gabe );
|
|
|
|
}else {_dfb =_adee .createStripedPage (_gabe );};return _dfb ;};func (_gbe *Document )completeClassifiedPages ()(_gba error ){const _bc ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
|
|
|
|
if _gbe .Classer ==nil {return nil ;};_gbe ._fa =make ([]int ,_gbe .Classer .UndilatedTemplates .Size ());for _adb :=0;_adb < _gbe .Classer .ClassIDs .Size ();_adb ++{_ce ,_bcd :=_gbe .Classer .ClassIDs .Get (_adb );if _bcd !=nil {return _gaf .Wrapf (_bcd ,_bc ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_adb );
|
|
|
|
};_gbe ._fa [_ce ]++;};var _db []int ;for _ff :=0;_ff < _gbe .Classer .UndilatedTemplates .Size ();_ff ++{if _gbe .NumberOfPages ==1||_gbe ._fa [_ff ]> 1{_db =append (_db ,_ff );};};var (_dd *Page ;_de bool ;);for _ea ,_dec :=range *_gbe .Classer .ComponentPageNumbers {if _dd ,_de =_gbe .Pages [_dec ];
|
|
|
|
!_de {return _gaf .Errorf (_bc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ea );};if _dd .EncodingMethod ==GenericEM {_fb .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",_ea );
|
|
|
|
continue ;};_gbe ._cg [_dec ]=append (_gbe ._cg [_dec ],_ea );_ef ,_ba :=_gbe .Classer .ClassIDs .Get (_ea );if _ba !=nil {return _gaf .Wrapf (_ba ,_bc ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_ea );
|
|
|
|
};if _gbe ._fa [_ef ]==1&&_gbe .NumberOfPages !=1{_cgd :=append (_gbe ._aa [_dec ],_ef );_gbe ._aa [_dec ]=_cgd ;};};if _gba =_gbe .Classer .ComputeLLCorners ();_gba !=nil {return _gaf .Wrap (_gba ,_bc ,"");};if _ ,_gba =_gbe .addSymbolDictionary (0,_gbe .Classer .UndilatedTemplates ,_db ,_gbe ._ae ,false );
|
|
|
|
_gba !=nil {return _gaf .Wrap (_gba ,_bc ,"");};return nil ;};var _gg =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_ddcb *Page )getResolutionY ()(int ,error ){const _bgf ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";
|
|
|
|
if _ddcb .ResolutionY !=0{return _ddcb .ResolutionY ,nil ;};_ccf :=_ddcb .getPageInformationSegment ();if _ccf ==nil {return 0,_gaf .Error (_bgf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_egdd ,_aag :=_ccf .GetSegmentData ();
|
|
|
|
if _aag !=nil {return 0,_gaf .Wrap (_aag ,_bgf ,"");};_bdba ,_eefc :=_egdd .(*_ad .PageInformationSegment );if !_eefc {return 0,_gaf .Errorf (_bgf ,"\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",_egdd );
|
|
|
|
};_ddcb .ResolutionY =_bdba .ResolutionY ;return _ddcb .ResolutionY ,nil ;};
|