mirror of
https://github.com/unidoc/unipdf.git
synced 2025-05-02 22:17:06 +08:00
135 lines
40 KiB
Go
135 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 (_e "encoding/binary";_d "fmt";_gf "github.com/unidoc/unipdf/v3/common";_cb "github.com/unidoc/unipdf/v3/internal/bitwise";_cf "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_ca "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
|
|
_ce "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_dea "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_de "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_b "io";_g "math";_df "runtime/debug";);func (_cdf *Document )GetNumberOfPages ()(uint32 ,error ){if _cdf .NumberOfPagesUnknown ||_cdf .NumberOfPages ==0{if len (_cdf .Pages )==0{if _gad :=_cdf .mapData ();
|
|
_gad !=nil {return 0,_de .Wrap (_gad ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_cdf .Pages )),nil ;};return _cdf .NumberOfPages ,nil ;};func (_gba *Document )encodeFileHeader (_ebd _cb .BinaryWriter )(_cfc int ,_cbf error ){const _abc ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
|
|
_cfc ,_cbf =_ebd .Write (_bf );if _cbf !=nil {return _cfc ,_de .Wrap (_cbf ,_abc ,"\u0069\u0064");};if _cbf =_ebd .WriteByte (0x01);_cbf !=nil {return _cfc ,_de .Wrap (_cbf ,_abc ,"\u0066\u006c\u0061g\u0073");};_cfc ++;_gff :=make ([]byte ,4);_e .BigEndian .PutUint32 (_gff ,_gba .NumberOfPages );
|
|
_eggf ,_cbf :=_ebd .Write (_gff );if _cbf !=nil {return _eggf ,_de .Wrap (_cbf ,_abc ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_cfc +=_eggf ;return _cfc ,nil ;};func (_bcf *Page )GetResolutionX ()(int ,error ){return _bcf .getResolutionX ()};
|
|
func (_dcd *Page )GetWidth ()(int ,error ){return _dcd .getWidth ()};func (_fbf *Document )Encode ()(_ebc []byte ,_fbfb error ){const _ebg ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _efc ,_fed int ;if _fbf .FullHeaders {if _efc ,_fbfb =_fbf .encodeFileHeader (_fbf ._ed );
|
|
_fbfb !=nil {return nil ,_de .Wrap (_fbfb ,_ebg ,"");};};var (_fbda bool ;_cd *_ce .Header ;_gcg *Page ;);if _fbfb =_fbf .completeClassifiedPages ();_fbfb !=nil {return nil ,_de .Wrap (_fbfb ,_ebg ,"");};if _fbfb =_fbf .produceClassifiedPages ();_fbfb !=nil {return nil ,_de .Wrap (_fbfb ,_ebg ,"");
|
|
};if _fbf .GlobalSegments !=nil {for _ ,_cd =range _fbf .GlobalSegments .Segments {if _fbfb =_fbf .encodeSegment (_cd ,&_efc );_fbfb !=nil {return nil ,_de .Wrap (_fbfb ,_ebg ,"");};};};for _dcf :=1;_dcf <=int (_fbf .NumberOfPages );_dcf ++{if _gcg ,_fbda =_fbf .Pages [_dcf ];
|
|
!_fbda {return nil ,_de .Errorf (_ebg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_dcf );};for _ ,_cd =range _gcg .Segments {if _fbfb =_fbf .encodeSegment (_cd ,&_efc );_fbfb !=nil {return nil ,_de .Wrap (_fbfb ,_ebg ,"");
|
|
};};};if _fbf .FullHeaders {if _fed ,_fbfb =_fbf .encodeEOFHeader (_fbf ._ed );_fbfb !=nil {return nil ,_de .Wrap (_fbfb ,_ebg ,"");};_efc +=_fed ;};_ebc =_fbf ._ed .Data ();if len (_ebc )!=_efc {_gf .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",_efc ,len (_ebc ));
|
|
};return _ebc ,nil ;};func (_gcfc *Page )countRegions ()int {var _egff int ;for _ ,_eaf :=range _gcfc .Segments {switch _eaf .Type {case 6,7,22,23,38,39,42,43:_egff ++;};};return _egff ;};func (_cda *Page )composePageBitmap ()error {const _ggcd ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";
|
|
if _cda .PageNumber ==0{return nil ;};_bede :=_cda .getPageInformationSegment ();if _bede ==nil {return _de .Error (_ggcd ,"\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");
|
|
};_ead ,_fab :=_bede .GetSegmentData ();if _fab !=nil {return _fab ;};_aaee ,_cfdg :=_ead .(*_ce .PageInformationSegment );if !_cfdg {return _de .Error (_ggcd ,"\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 _fab =_cda .createPage (_aaee );_fab !=nil {return _de .Wrap (_fab ,_ggcd ,"");};_cda .clearSegmentData ();return nil ;};func (_gfd *Document )AddClassifiedPage (bm *_ca .Bitmap ,method _dea .Method )(_cad error ){const _be ="\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 !_gfd .FullHeaders &&_gfd .NumberOfPages !=0{return _de .Error (_be ,"\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 _gfd .Classer ==nil {if _gfd .Classer ,_cad =_dea .Init (_dea .DefaultSettings ());_cad !=nil {return _de .Wrap (_cad ,_be ,"");};};_fb :=int (_gfd .nextPageNumber ());_cg :=&Page {Segments :[]*_ce .Header {},Bitmap :bm ,Document :_gfd ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_fb };
|
|
_gfd .Pages [_fb ]=_cg ;switch method {case _dea .RankHaus :_cg .EncodingMethod =RankHausEM ;case _dea .Correlation :_cg .EncodingMethod =CorrelationEM ;};_cg .AddPageInformationSegment ();if _cad =_gfd .Classer .AddPage (bm ,_fb ,method );_cad !=nil {return _de .Wrap (_cad ,_be ,"");
|
|
};if _gfd .FullHeaders {_cg .AddEndOfPageSegment ();};return nil ;};func (_bbb *Globals )GetSegment (segmentNumber int )(*_ce .Header ,error ){const _bgf ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _bbb ==nil {return nil ,_de .Error (_bgf ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_bbb .Segments )==0{return nil ,_de .Error (_bgf ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _ffb *_ce .Header ;for _ ,_ffb =range _bbb .Segments {if _ffb .SegmentNumber ==uint32 (segmentNumber ){break ;
|
|
};};if _ffb ==nil {return nil ,_de .Error (_bgf ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _ffb ,nil ;};func (_gbg *Document )completeSymbols ()(_deb error ){const _gc ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";
|
|
if _gbg .Classer ==nil {return nil ;};if _gbg .Classer .UndilatedTemplates ==nil {return _de .Error (_gc ,"\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");
|
|
};_fa :=len (_gbg .Pages )==1;_cea :=make ([]int ,_gbg .Classer .UndilatedTemplates .Size ());var _ace int ;for _bcd :=0;_bcd < _gbg .Classer .ClassIDs .Size ();_bcd ++{_ace ,_deb =_gbg .Classer .ClassIDs .Get (_bcd );if _deb !=nil {return _de .Wrap (_deb ,_gc ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
|
|
};_cea [_ace ]++;};var _egfa []int ;for _ge :=0;_ge < _gbg .Classer .UndilatedTemplates .Size ();_ge ++{if _cea [_ge ]==0{return _de .Error (_gc ,"\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 _cea [_ge ]> 1||_fa {_egfa =append (_egfa ,_ge );};};_gbg ._a =len (_egfa );var _ff ,_gfc int ;for _egac :=0;_egac < _gbg .Classer .ComponentPageNumbers .Size ();_egac ++{_ff ,_deb =_gbg .Classer .ComponentPageNumbers .Get (_egac );if _deb !=nil {return _de .Wrapf (_deb ,_gc ,"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",_egac );
|
|
};_gfc ,_deb =_gbg .Classer .ClassIDs .Get (_egac );if _deb !=nil {return _de .Wrapf (_deb ,_gc ,"\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",_ff );
|
|
};if _cea [_gfc ]==1&&!_fa {_gbg ._eg [_ff ]=append (_gbg ._eg [_ff ],_gfc );};};if _deb =_gbg .Classer .ComputeLLCorners ();_deb !=nil {return _de .Wrap (_deb ,_gc ,"");};return nil ;};func (_baf *Page )fitsPage (_agc *_ce .PageInformationSegment ,_ggeg *_ca .Bitmap )bool {return _baf .countRegions ()==1&&_agc .DefaultPixelValue ==0&&_agc .PageBMWidth ==_ggeg .Width &&_agc .PageBMHeight ==_ggeg .Height ;
|
|
};func (_ade *Document )nextSegmentNumber ()uint32 {_fde :=_ade .CurrentSegmentNumber ;_ade .CurrentSegmentNumber ++;return _fde ;};func (_aef *Page )AddGenericRegion (bm *_ca .Bitmap ,xloc ,yloc ,template int ,tp _ce .Type ,duplicateLineRemoval bool )error {const _bgg ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
|
|
_fbfbc :=&_ce .GenericRegion {};if _daga :=_fbfbc .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_daga !=nil {return _de .Wrap (_daga ,_bgg ,"");};_aca :=&_ce .Header {Type :_ce .TImmediateGenericRegion ,PageAssociation :_aef .PageNumber ,SegmentData :_fbfbc };
|
|
_aef .Segments =append (_aef .Segments ,_aca );return nil ;};func (_bbe *Page )GetSegment (number int )(*_ce .Header ,error ){const _cdg ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_addd :=range _bbe .Segments {if _addd .SegmentNumber ==uint32 (number ){return _addd ,nil ;
|
|
};};_fcb :=make ([]uint32 ,len (_bbe .Segments ));for _eef ,_daf :=range _bbe .Segments {_fcb [_eef ]=_daf .SegmentNumber ;};return nil ,_de .Errorf (_cdg ,"\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 ,_bbe .PageNumber ,_fcb );
|
|
};func (_bfc *Page )createPage (_adc *_ce .PageInformationSegment )error {var _abd error ;if !_adc .IsStripe ||_adc .PageBMHeight !=-1{_abd =_bfc .createNormalPage (_adc );}else {_abd =_bfc .createStripedPage (_adc );};return _abd ;};func (_geg *Document )reachedEOF (_ccd int64 )(bool ,error ){const _dbg ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";
|
|
_ ,_dca :=_geg .InputStream .Seek (_ccd ,_b .SeekStart );if _dca !=nil {_gf .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",_dca );
|
|
return false ,_de .Wrap (_dca ,_dbg ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_dca =_geg .InputStream .ReadBits (32);if _dca ==_b .EOF {return true ,nil ;
|
|
}else if _dca !=nil {return false ,_de .Wrap (_dca ,_dbg ,"");};return false ,nil ;};type EncodingMethod int ;func (_aba *Document )determineRandomDataOffsets (_edef []*_ce .Header ,_dd uint64 ){if _aba .OrganizationType !=_ce .ORandom {return ;};for _ ,_ced :=range _edef {_ced .SegmentDataStartOffset =_dd ;
|
|
_dd +=_ced .SegmentDataLength ;};};func (_gbea *Globals )GetSegmentByIndex (index int )(*_ce .Header ,error ){const _dcg ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _gbea ==nil {return nil ,_de .Error (_dcg ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_gbea .Segments )==0{return nil ,_de .Error (_dcg ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_gbea .Segments )-1{return nil ,_de .Error (_dcg ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
|
|
};return _gbea .Segments [index ],nil ;};func (_dadd *Page )clearSegmentData (){for _dfe :=range _dadd .Segments {_dadd .Segments [_dfe ].CleanSegmentData ();};};func (_eeaa *Document )mapData ()error {const _fgc ="\u006da\u0070\u0044\u0061\u0074\u0061";
|
|
var (_ddf []*_ce .Header ;_caa int64 ;_caff _ce .Type ;);_ceg ,_gbd :=_eeaa .isFileHeaderPresent ();if _gbd !=nil {return _de .Wrap (_gbd ,_fgc ,"");};if _ceg {if _gbd =_eeaa .parseFileHeader ();_gbd !=nil {return _de .Wrap (_gbd ,_fgc ,"");};_caa +=int64 (_eeaa ._f );
|
|
_eeaa .FullHeaders =true ;};var (_fd *Page ;_gfbg bool ;);for _caff !=51&&!_gfbg {_bfd ,_bd :=_ce .NewHeader (_eeaa ,_eeaa .InputStream ,_caa ,_eeaa .OrganizationType );if _bd !=nil {return _de .Wrap (_bd ,_fgc ,"");};_gf .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",_bfd .SegmentNumber ,_bfd .Type );
|
|
_caff =_bfd .Type ;if _caff !=_ce .TEndOfFile {if _bfd .PageAssociation !=0{_fd =_eeaa .Pages [_bfd .PageAssociation ];if _fd ==nil {_fd =_aea (_eeaa ,_bfd .PageAssociation );_eeaa .Pages [_bfd .PageAssociation ]=_fd ;if _eeaa .NumberOfPagesUnknown {_eeaa .NumberOfPages ++;
|
|
};};_fd .Segments =append (_fd .Segments ,_bfd );}else {_eeaa .GlobalSegments .AddSegment (_bfd );};};_ddf =append (_ddf ,_bfd );_caa =_eeaa .InputStream .StreamPosition ();if _eeaa .OrganizationType ==_ce .OSequential {_caa +=int64 (_bfd .SegmentDataLength );
|
|
};_gfbg ,_bd =_eeaa .reachedEOF (_caa );if _bd !=nil {_gf .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",_bd );
|
|
return _de .Wrap (_bd ,_fgc ,"");};};_eeaa .determineRandomDataOffsets (_ddf ,uint64 (_caa ));return nil ;};func (_cbfd *Page )AddEndOfPageSegment (){_aeb :=&_ce .Header {Type :_ce .TEndOfPage ,PageAssociation :_cbfd .PageNumber };_cbfd .Segments =append (_cbfd .Segments ,_aeb );
|
|
};func (_gaac *Document )nextPageNumber ()uint32 {_gaac .NumberOfPages ++;return _gaac .NumberOfPages };func (_gcgb *Globals )GetSymbolDictionary ()(*_ce .Header ,error ){const _beeb ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
|
|
if _gcgb ==nil {return nil ,_de .Error (_beeb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_gcgb .Segments )==0{return nil ,_de .Error (_beeb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};for _ ,_bdf :=range _gcgb .Segments {if _bdf .Type ==_ce .TSymbolDictionary {return _bdf ,nil ;};};return nil ,_de .Error (_beeb ,"\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 (_dab *Document )completeClassifiedPages ()(_ga error ){const _fg ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";if _dab .Classer ==nil {return nil ;};_dab ._gb =make ([]int ,_dab .Classer .UndilatedTemplates .Size ());
|
|
for _edec :=0;_edec < _dab .Classer .ClassIDs .Size ();_edec ++{_dad ,_ac :=_dab .Classer .ClassIDs .Get (_edec );if _ac !=nil {return _de .Wrapf (_ac ,_fg ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_edec );
|
|
};_dab ._gb [_dad ]++;};var _gac []int ;for _ee :=0;_ee < _dab .Classer .UndilatedTemplates .Size ();_ee ++{if _dab .NumberOfPages ==1||_dab ._gb [_ee ]> 1{_gac =append (_gac ,_ee );};};var (_dff *Page ;_cbe bool ;);for _dag ,_cbc :=range *_dab .Classer .ComponentPageNumbers {if _dff ,_cbe =_dab .Pages [_cbc ];
|
|
!_cbe {return _de .Errorf (_fg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_dag );};if _dff .EncodingMethod ==GenericEM {_gf .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",_dag );
|
|
continue ;};_dab ._ae [_cbc ]=append (_dab ._ae [_cbc ],_dag );_dffb ,_cfd :=_dab .Classer .ClassIDs .Get (_dag );if _cfd !=nil {return _de .Wrapf (_cfd ,_fg ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_dag );
|
|
};if _dab ._gb [_dffb ]==1&&_dab .NumberOfPages !=1{_fc :=append (_dab ._eg [_cbc ],_dffb );_dab ._eg [_cbc ]=_fc ;};};if _ga =_dab .Classer .ComputeLLCorners ();_ga !=nil {return _de .Wrap (_ga ,_fg ,"");};if _ ,_ga =_dab .addSymbolDictionary (0,_dab .Classer .UndilatedTemplates ,_gac ,_dab ._bc ,false );
|
|
_ga !=nil {return _de .Wrap (_ga ,_fg ,"");};return nil ;};func (_bee *Document )produceClassifiedPage (_cgf *Page ,_cc *_ce .Header )(_acf error ){const _ceb ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
|
|
var _ag map[int ]int ;_bg :=_bee ._a ;_fec :=[]*_ce .Header {_cc };if len (_bee ._eg [_cgf .PageNumber ])> 0{_ag =map[int ]int {};_dfdg ,_ggc :=_bee .addSymbolDictionary (_cgf .PageNumber ,_bee .Classer .UndilatedTemplates ,_bee ._eg [_cgf .PageNumber ],_ag ,false );
|
|
if _ggc !=nil {return _de .Wrap (_ggc ,_ceb ,"");};_fec =append (_fec ,_dfdg );_bg +=len (_bee ._eg [_cgf .PageNumber ]);};_af :=_bee ._ae [_cgf .PageNumber ];_gf .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_cgf .PageNumber ,_af );
|
|
_cgf .addTextRegionSegment (_fec ,_bee ._bc ,_ag ,_bee ._ae [_cgf .PageNumber ],_bee .Classer .PtaLL ,_bee .Classer .UndilatedTemplates ,_bee .Classer .ClassIDs ,nil ,_ggf (_bg ),len (_bee ._ae [_cgf .PageNumber ]));return nil ;};func (_eed *Page )String ()string {return _d .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_eed .PageNumber );
|
|
};type Page struct{Segments []*_ce .Header ;PageNumber int ;Bitmap *_ca .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;
|
|
};func (_cgbb *Document )encodeEOFHeader (_gbf _cb .BinaryWriter )(_gae int ,_efe error ){_dfg :=&_ce .Header {SegmentNumber :_cgbb .nextSegmentNumber (),Type :_ce .TEndOfFile };if _gae ,_efe =_dfg .Encode (_gbf );_efe !=nil {return 0,_de .Wrap (_efe ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");
|
|
};return _gae ,nil ;};func (_dbbd *Page )addTextRegionSegment (_fdcb []*_ce .Header ,_dge ,_gbc map[int ]int ,_fbc []int ,_fbb *_ca .Points ,_gca *_ca .Bitmaps ,_afg *_cf .IntSlice ,_beb *_ca .Boxes ,_gbcd ,_aae int ){_edca :=&_ce .TextRegion {NumberOfSymbols :uint32 (_aae )};
|
|
_edca .InitEncode (_dge ,_gbc ,_fbc ,_fbb ,_gca ,_afg ,_beb ,_dbbd .FinalWidth ,_dbbd .FinalHeight ,_gbcd );_ea :=&_ce .Header {RTSegments :_fdcb ,SegmentData :_edca ,PageAssociation :_dbbd .PageNumber ,Type :_ce .TImmediateTextRegion };_gcf :=_ce .TPageInformation ;
|
|
if _gbc !=nil {_gcf =_ce .TSymbolDictionary ;};var _abee int ;for ;_abee < len (_dbbd .Segments );_abee ++{if _dbbd .Segments [_abee ].Type ==_gcf {_abee ++;break ;};};_dbbd .Segments =append (_dbbd .Segments ,nil );copy (_dbbd .Segments [_abee +1:],_dbbd .Segments [_abee :]);
|
|
_dbbd .Segments [_abee ]=_ea ;};func (_dbdf *Page )createStripedPage (_gbfc *_ce .PageInformationSegment )error {const _fgdf ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_fae ,_begf :=_dbdf .collectPageStripes ();
|
|
if _begf !=nil {return _de .Wrap (_begf ,_fgdf ,"");};var _acad int ;for _ ,_dbbf :=range _fae {if _cgce ,_beee :=_dbbf .(*_ce .EndOfStripe );_beee {_acad =_cgce .LineNumber ()+1;}else {_dgb :=_dbbf .(_ce .Regioner );_aec :=_dgb .GetRegionInfo ();_cgfe :=_dbdf .getCombinationOperator (_gbfc ,_aec .CombinaionOperator );
|
|
_eggdg ,_bfe :=_dgb .GetRegionBitmap ();if _bfe !=nil {return _de .Wrap (_bfe ,_fgdf ,"");};_bfe =_ca .Blit (_eggdg ,_dbdf .Bitmap ,int (_aec .XLocation ),_acad ,_cgfe );if _bfe !=nil {return _de .Wrap (_bfe ,_fgdf ,"");};};};return nil ;};func (_fdgc *Page )GetHeight ()(int ,error ){return _fdgc .getHeight ()};
|
|
func DecodeDocument (input _cb .StreamReader ,globals *Globals )(*Document ,error ){return _gbag (input ,globals );};func (_deaa *Page )GetResolutionY ()(int ,error ){return _deaa .getResolutionY ()};func (_dg *Globals )AddSegment (segment *_ce .Header ){_dg .Segments =append (_dg .Segments ,segment )};
|
|
func (_gfef *Page )GetBitmap ()(_fdgb *_ca .Bitmap ,_gagd error ){_gf .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",_gfef .PageNumber ));
|
|
defer func (){if _gagd !=nil {_gf .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",_gfef .PageNumber ,_gagd ));
|
|
}else {_gf .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",_gfef .PageNumber ));};}();if _gfef .Bitmap !=nil {return _gfef .Bitmap ,nil ;
|
|
};_gagd =_gfef .composePageBitmap ();if _gagd !=nil {return nil ,_gagd ;};return _gfef .Bitmap ,nil ;};func (_fee *Page )AddPageInformationSegment (){_acag :=&_ce .PageInformationSegment {PageBMWidth :_fee .FinalWidth ,PageBMHeight :_fee .FinalHeight ,ResolutionX :_fee .ResolutionX ,ResolutionY :_fee .ResolutionY ,IsLossless :_fee .IsLossless };
|
|
if _fee .BlackIsOne {_acag .DefaultPixelValue =uint8 (0x1);};_gacf :=&_ce .Header {PageAssociation :_fee .PageNumber ,SegmentDataLength :uint64 (_acag .Size ()),SegmentData :_acag ,Type :_ce .TPageInformation };_fee .Segments =append (_fee .Segments ,_gacf );
|
|
};func (_eeaaf *Page )createNormalPage (_bbf *_ce .PageInformationSegment )error {const _fgd ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_eeaaf .Bitmap =_ca .New (_bbf .PageBMWidth ,_bbf .PageBMHeight );if _bbf .DefaultPixelValue !=0{_eeaaf .Bitmap .SetDefaultPixel ();
|
|
};for _ ,_egfd :=range _eeaaf .Segments {switch _egfd .Type {case 6,7,22,23,38,39,42,43:_gf .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_egfd .SegmentNumber );_fff ,_ddd :=_egfd .GetSegmentData ();
|
|
if _ddd !=nil {return _ddd ;};_cedd ,_adee :=_fff .(_ce .Regioner );if !_adee {_gf .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",_fff );
|
|
return _de .Errorf (_fgd ,"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",_fff );
|
|
};_cgbg ,_ddd :=_cedd .GetRegionBitmap ();if _ddd !=nil {return _de .Wrap (_ddd ,_fgd ,"");};if _eeaaf .fitsPage (_bbf ,_cgbg ){_eeaaf .Bitmap =_cgbg ;}else {_bbd :=_cedd .GetRegionInfo ();_gef :=_eeaaf .getCombinationOperator (_bbf ,_bbd .CombinaionOperator );
|
|
_ddd =_ca .Blit (_cgbg ,_eeaaf .Bitmap ,int (_bbd .XLocation ),int (_bbd .YLocation ),_gef );if _ddd !=nil {return _de .Wrap (_ddd ,_fgd ,"");};};};};return nil ;};func _ggf (_cbb int )int {_edf :=0;_gge :=(_cbb &(_cbb -1))==0;_cbb >>=1;for ;_cbb !=0;_cbb >>=1{_edf ++;
|
|
};if _gge {return _edf ;};return _edf +1;};func _aea (_gfcc *Document ,_efaf int )*Page {return &Page {Document :_gfcc ,PageNumber :_efaf ,Segments :[]*_ce .Header {}};};func (_aa *Document )encodeSegment (_fge *_ce .Header ,_bea *int )error {const _fbg ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
|
|
_fge .SegmentNumber =_aa .nextSegmentNumber ();_ab ,_cee :=_fge .Encode (_aa ._ed );if _cee !=nil {return _de .Wrapf (_cee ,_fbg ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_fge .SegmentNumber );};*_bea +=_ab ;return nil ;
|
|
};var _bf =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_eb *Document )AddGenericPage (bm *_ca .Bitmap ,duplicateLineRemoval bool )(_ede error ){const _da ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
|
|
if !_eb .FullHeaders &&_eb .NumberOfPages !=0{return _de .Error (_da ,"\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");
|
|
};_gg :=&Page {Segments :[]*_ce .Header {},Bitmap :bm ,Document :_eb ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_ca .Chocolate };_gg .PageNumber =int (_eb .nextPageNumber ());_eb .Pages [_gg .PageNumber ]=_gg ;
|
|
bm .InverseData ();_gg .AddPageInformationSegment ();if _ede =_gg .AddGenericRegion (bm ,0,0,0,_ce .TImmediateGenericRegion ,duplicateLineRemoval );_ede !=nil {return _de .Wrap (_ede ,_da ,"");};if _eb .FullHeaders {_gg .AddEndOfPageSegment ();};return nil ;
|
|
};func (_ad *Document )isFileHeaderPresent ()(bool ,error ){_ad .InputStream .Mark ();for _ ,_eggd :=range _bf {_dde ,_edc :=_ad .InputStream .ReadByte ();if _edc !=nil {return false ,_edc ;};if _eggd !=_dde {_ad .InputStream .Reset ();return false ,nil ;
|
|
};};_ad .InputStream .Reset ();return true ,nil ;};func (_aeg *Page )getWidth ()(int ,error ){const _bge ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _aeg .FinalWidth !=0{return _aeg .FinalWidth ,nil ;};_fgdc :=_aeg .getPageInformationSegment ();
|
|
if _fgdc ==nil {return 0,_de .Error (_bge ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_cef ,_eafe :=_fgdc .GetSegmentData ();if _eafe !=nil {return 0,_de .Wrap (_eafe ,_bge ,"");};_gefd ,_gcd :=_cef .(*_ce .PageInformationSegment );
|
|
if !_gcd {return 0,_de .Errorf (_bge ,"\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",_cef );
|
|
};_aeg .FinalWidth =_gefd .PageBMWidth ;return _aeg .FinalWidth ,nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func _gbag (_add _cb .StreamReader ,_fdg *Globals )(*Document ,error ){_bgc :=&Document {Pages :make (map[int ]*Page ),InputStream :_add ,OrganizationType :_ce .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_fdg ,_f :9};
|
|
if _bgc .GlobalSegments ==nil {_bgc .GlobalSegments =&Globals {};};if _gfe :=_bgc .mapData ();_gfe !=nil {return nil ,_gfe ;};return _bgc ,nil ;};func (_aade *Page )getPageInformationSegment ()*_ce .Header {for _ ,_afa :=range _aade .Segments {if _afa .Type ==_ce .TPageInformation {return _afa ;
|
|
};};_gf .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",_aade );
|
|
return nil ;};func (_fdc *Document )parseFileHeader ()error {const _bed ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_gag :=_fdc .InputStream .Seek (8,_b .SeekStart );if _gag !=nil {return _de .Wrap (_gag ,_bed ,"\u0069\u0064");
|
|
};_ ,_gag =_fdc .InputStream .ReadBits (5);if _gag !=nil {return _de .Wrap (_gag ,_bed ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_fgg ,_gag :=_fdc .InputStream .ReadBit ();if _gag !=nil {return _de .Wrap (_gag ,_bed ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");
|
|
};if _fgg ==1{_fdc .GBUseExtTemplate =true ;};_fgg ,_gag =_fdc .InputStream .ReadBit ();if _gag !=nil {return _de .Wrap (_gag ,_bed ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _fgg !=1{_fdc .NumberOfPagesUnknown =false ;
|
|
};_fgg ,_gag =_fdc .InputStream .ReadBit ();if _gag !=nil {return _de .Wrap (_gag ,_bed ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_fdc .OrganizationType =_ce .OrganizationType (_fgg );if !_fdc .NumberOfPagesUnknown {_fdc .NumberOfPages ,_gag =_fdc .InputStream .ReadUint32 ();
|
|
if _gag !=nil {return _de .Wrap (_gag ,_bed ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_fdc ._f =13;};return nil ;};type Globals struct{Segments []*_ce .Header ;};func (_caab *Page )collectPageStripes ()(_gadf []_ce .Segmenter ,_fbeb error ){const _cdc ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";
|
|
var _fbec _ce .Segmenter ;for _ ,_debg :=range _caab .Segments {switch _debg .Type {case 6,7,22,23,38,39,42,43:_fbec ,_fbeb =_debg .GetSegmentData ();if _fbeb !=nil {return nil ,_de .Wrap (_fbeb ,_cdc ,"");};_gadf =append (_gadf ,_fbec );case 50:_fbec ,_fbeb =_debg .GetSegmentData ();
|
|
if _fbeb !=nil {return nil ,_fbeb ;};_bba ,_gaf :=_fbec .(*_ce .EndOfStripe );if !_gaf {return nil ,_de .Errorf (_cdc ,"\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",_fbec );
|
|
};_gadf =append (_gadf ,_bba );_caab .FinalHeight =_bba .LineNumber ();};};return _gadf ,nil ;};func (_abe *Document )GetGlobalSegment (i int )(*_ce .Header ,error ){_caf ,_dbdg :=_abe .GlobalSegments .GetSegment (i );if _dbdg !=nil {return nil ,_de .Wrap (_dbdg ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
|
|
};return _caf ,nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _cb .StreamReader ;GlobalSegments *Globals ;OrganizationType _ce .OrganizationType ;Classer *_dea .Classer ;
|
|
XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_ca .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_f uint8 ;_ed *_cb .BufferedWriter ;EncodeGlobals bool ;_a int ;_eg map[int ][]int ;_ae map[int ][]int ;
|
|
_gb []int ;_bc map[int ]int ;};func (_cgcd *Page )getResolutionX ()(int ,error ){const _caag ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _cgcd .ResolutionX !=0{return _cgcd .ResolutionX ,nil ;};_gcca :=_cgcd .getPageInformationSegment ();
|
|
if _gcca ==nil {return 0,_de .Error (_caag ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_abb ,_dbe :=_gcca .GetSegmentData ();if _dbe !=nil {return 0,_de .Wrap (_dbe ,_caag ,"");};_dbbc ,_dbc :=_abb .(*_ce .PageInformationSegment );
|
|
if !_dbc {return 0,_de .Errorf (_caag ,"\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",_abb );
|
|
};_cgcd .ResolutionX =_dbbc .ResolutionX ;return _cgcd .ResolutionX ,nil ;};func (_faea *Page )nextSegmentNumber ()uint32 {return _faea .Document .nextSegmentNumber ()};func (_ggd *Page )Encode (w _cb .BinaryWriter )(_dgg int ,_gacc error ){const _bgd ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
var _efg int ;for _ ,_dcbc :=range _ggd .Segments {if _efg ,_gacc =_dcbc .Encode (w );_gacc !=nil {return _dgg ,_de .Wrap (_gacc ,_bgd ,"");};_dgg +=_efg ;};return _dgg ,nil ;};func (_eab *Page )getCombinationOperator (_bcfe *_ce .PageInformationSegment ,_afgf _ca .CombinationOperator )_ca .CombinationOperator {if _bcfe .CombinationOperatorOverrideAllowed (){return _afgf ;
|
|
};return _bcfe .CombinationOperator ();};func (_cgc *Document )GetPage (pageNumber int )(_ce .Pager ,error ){const _abg ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_gf .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 ,_df .Stack ());
|
|
return nil ,_de .Errorf (_abg ,"\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 (_cgc .Pages ){_gf .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_df .Stack ());return nil ,_de .Error (_abg ,"\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");
|
|
};_beg ,_fad :=_cgc .Pages [pageNumber ];if !_fad {_gf .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_df .Stack ());return nil ,_de .Errorf (_abg ,"\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 _beg ,nil ;};func (_gfb *Document )produceClassifiedPages ()(_ega error ){const _dfc ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _gfb .Classer ==nil {return nil ;};
|
|
var (_eea *Page ;_dfd bool ;_egg *_ce .Header ;);for _fe :=1;_fe <=int (_gfb .NumberOfPages );_fe ++{if _eea ,_dfd =_gfb .Pages [_fe ];!_dfd {return _de .Errorf (_dfc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_fe );
|
|
};if _eea .EncodingMethod ==GenericEM {continue ;};if _egg ==nil {if _egg ,_ega =_gfb .GlobalSegments .GetSymbolDictionary ();_ega !=nil {return _de .Wrap (_ega ,_dfc ,"");};};if _ega =_gfb .produceClassifiedPage (_eea ,_egg );_ega !=nil {return _de .Wrapf (_ega ,_dfc ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_fe );
|
|
};};return nil ;};func (_egf *Document )addSymbolDictionary (_db int ,_gbe *_ca .Bitmaps ,_fbd []int ,_ba map[int ]int ,_gaa bool )(*_ce .Header ,error ){const _cge ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
|
|
_fba :=&_ce .SymbolDictionary {};if _ccb :=_fba .InitEncode (_gbe ,_fbd ,_ba ,_gaa );_ccb !=nil {return nil ,_ccb ;};_dc :=&_ce .Header {Type :_ce .TSymbolDictionary ,PageAssociation :_db ,SegmentData :_fba };if _db ==0{if _egf .GlobalSegments ==nil {_egf .GlobalSegments =&Globals {};
|
|
};_egf .GlobalSegments .AddSegment (_dc );return _dc ,nil ;};_egaf ,_ef :=_egf .Pages [_db ];if !_ef {return nil ,_de .Errorf (_cge ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_db );};var (_dbd int ;
|
|
_dcb *_ce .Header ;);for _dbd ,_dcb =range _egaf .Segments {if _dcb .Type ==_ce .TPageInformation {break ;};};_dbd ++;_egaf .Segments =append (_egaf .Segments ,nil );copy (_egaf .Segments [_dbd +1:],_egaf .Segments [_dbd :]);_egaf .Segments [_dbd ]=_dc ;
|
|
return _dc ,nil ;};func (_egc *Page )getResolutionY ()(int ,error ){const _edfb ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _egc .ResolutionY !=0{return _egc .ResolutionY ,nil ;};_dac :=_egc .getPageInformationSegment ();
|
|
if _dac ==nil {return 0,_de .Error (_edfb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bdc ,_ec :=_dac .GetSegmentData ();if _ec !=nil {return 0,_de .Wrap (_ec ,_edfb ,"");};_dagd ,_edce :=_bdc .(*_ce .PageInformationSegment );
|
|
if !_edce {return 0,_de .Errorf (_edfb ,"\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",_bdc );
|
|
};_egc .ResolutionY =_dagd .ResolutionY ;return _egc .ResolutionY ,nil ;};func (_def *Page )lastSegmentNumber ()(_agd uint32 ,_fbebc error ){const _cca ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";
|
|
if len (_def .Segments )==0{return _agd ,_de .Errorf (_cca ,"\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",_def .PageNumber );
|
|
};return _def .Segments [len (_def .Segments )-1].SegmentNumber ,nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_ed :_cb .BufferedMSB (),Pages :map[int ]*Page {},_eg :map[int ][]int {},_bc :map[int ]int {},_ae :map[int ][]int {}};
|
|
};func (_gbaf *Page )getHeight ()(int ,error ){const _eba ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _gbaf .FinalHeight !=0{return _gbaf .FinalHeight ,nil ;};_ggfg :=_gbaf .getPageInformationSegment ();if _ggfg ==nil {return 0,_de .Error (_eba ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
|
|
};_deea ,_fdd :=_ggfg .GetSegmentData ();if _fdd !=nil {return 0,_de .Wrap (_fdd ,_eba ,"");};_ebcb ,_ceaf :=_deea .(*_ce .PageInformationSegment );if !_ceaf {return 0,_de .Errorf (_eba ,"\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",_deea );
|
|
};if _ebcb .PageBMHeight ==_g .MaxInt32 {_ ,_fdd =_gbaf .GetBitmap ();if _fdd !=nil {return 0,_de .Wrap (_fdd ,_eba ,"");};}else {_gbaf .FinalHeight =_ebcb .PageBMHeight ;};return _gbaf .FinalHeight ,nil ;}; |