mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-29 13:48:54 +08:00
12 lines
39 KiB
Go
12 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 (_ae "encoding/binary";_b "fmt";_gc "github.com/unidoc/unipdf/v3/common";_e "github.com/unidoc/unipdf/v3/internal/bitwise";_d "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_agf "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_gcb "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_db "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_ed "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_g "io";_ag "math";_ba "runtime/debug";);func (_acee *Page )getResolutionY ()(int ,error ){const _dce ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _acee .ResolutionY !=0{return _acee .ResolutionY ,nil ;};_gbba :=_acee .getPageInformationSegment ();if _gbba ==nil {return 0,_ed .Error (_dce ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_fgg ,_agff :=_gbba .GetSegmentData ();if _agff !=nil {return 0,_ed .Wrap (_agff ,_dce ,"");};_gad ,_bfee :=_fgg .(*_gcb .PageInformationSegment );if !_bfee {return 0,_ed .Errorf (_dce ,"\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",_fgg );};_acee .ResolutionY =_gad .ResolutionY ;return _acee .ResolutionY ,nil ;};func (_gef *Document )completeSymbols ()(_cgb error ){const _ebb ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _gef .Classer ==nil {return nil ;};if _gef .Classer .UndilatedTemplates ==nil {return _ed .Error (_ebb ,"\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");};_add :=len (_gef .Pages )==1;_efg :=make ([]int ,_gef .Classer .UndilatedTemplates .Size ());var _caa int ;for _abd :=0;_abd < _gef .Classer .ClassIDs .Size ();_abd ++{_caa ,_cgb =_gef .Classer .ClassIDs .Get (_abd );if _cgb !=nil {return _ed .Wrap (_cgb ,_ebb ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");};_efg [_caa ]++;};var _daf []int ;for _abae :=0;_abae < _gef .Classer .UndilatedTemplates .Size ();_abae ++{if _efg [_abae ]==0{return _ed .Error (_ebb ,"\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 _efg [_abae ]> 1||_add {_daf =append (_daf ,_abae );};};_gef ._aa =len (_daf );var _cae ,_dfg int ;for _ecb :=0;_ecb < _gef .Classer .ComponentPageNumbers .Size ();_ecb ++{_cae ,_cgb =_gef .Classer .ComponentPageNumbers .Get (_ecb );if _cgb !=nil {return _ed .Wrapf (_cgb ,_ebb ,"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",_ecb );};_dfg ,_cgb =_gef .Classer .ClassIDs .Get (_ecb );if _cgb !=nil {return _ed .Wrapf (_cgb ,_ebb ,"\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",_cae );};if _efg [_dfg ]==1&&!_add {_gef ._ab [_cae ]=append (_gef ._ab [_cae ],_dfg );};};if _cgb =_gef .Classer .ComputeLLCorners ();_cgb !=nil {return _ed .Wrap (_cgb ,_ebb ,"");};return nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_aea *Document )isFileHeaderPresent ()(bool ,error ){_aea .InputStream .Mark ();for _ ,_dfa :=range _gf {_egf ,_cgbg :=_aea .InputStream .ReadByte ();if _cgbg !=nil {return false ,_cgbg ;};if _dfa !=_egf {_aea .InputStream .Reset ();return false ,nil ;};};_aea .InputStream .Reset ();return true ,nil ;};func (_ced *Page )fitsPage (_dff *_gcb .PageInformationSegment ,_cbbbf *_agf .Bitmap )bool {return _ced .countRegions ()==1&&_dff .DefaultPixelValue ()==0&&_dff .PageBMWidth ==_cbbbf .Width &&_dff .PageBMHeight ==_cbbbf .Height ;};func (_dcf *Page )GetBitmap ()(_gde *_agf .Bitmap ,_fcc error ){_gc .Log .Trace (_b .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",_dcf .PageNumber ));defer func (){if _fcc !=nil {_gc .Log .Trace (_b .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",_dcf .PageNumber ,_fcc ));}else {_gc .Log .Trace (_b .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",_dcf .PageNumber ));};}();if _dcf .Bitmap !=nil {return _dcf .Bitmap ,nil ;};_fcc =_dcf .composePageBitmap ();if _fcc !=nil {return nil ,_fcc ;};return _dcf .Bitmap ,nil ;};func (_edebe *Page )clearSegmentData (){for _gdg :=range _edebe .Segments {_edebe .Segments [_gdg ].CleanSegmentData ();};};func (_ded *Globals )GetSegmentByIndex (index int )(*_gcb .Header ,error ){const _bcg ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _ded ==nil {return nil ,_ed .Error (_bcg ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_ded .Segments )==0{return nil ,_ed .Error (_bcg ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_ded .Segments )-1{return nil ,_ed .Error (_bcg ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _ded .Segments [index ],nil ;};func (_gcf *Page )AddPageInformationSegment (){_deb :=&_gcb .PageInformationSegment {PageBMWidth :_gcf .FinalWidth ,PageBMHeight :_gcf .FinalHeight ,ResolutionX :_gcf .ResolutionX ,ResolutionY :_gcf .ResolutionY ,IsLossless :_gcf .IsLossless };_acc :=&_gcb .Header {PageAssociation :_gcf .PageNumber ,SegmentDataLength :uint64 (_deb .Size ()),SegmentData :_deb ,Type :_gcb .TPageInformation };_gcf .Segments =append (_gcf .Segments ,_acc );};func (_eeb *Page )lastSegmentNumber ()(_edee uint32 ,_cff error ){const _aad ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_eeb .Segments )==0{return _edee ,_ed .Errorf (_aad ,"\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",_eeb .PageNumber );};return _eeb .Segments [len (_eeb .Segments )-1].SegmentNumber ,nil ;};func (_cbc *Page )GetWidth ()(int ,error ){return _cbc .getWidth ()};func (_gcea *Globals )AddSegment (segment *_gcb .Header ){_gcea .Segments =append (_gcea .Segments ,segment );};func (_cd *Document )nextSegmentNumber ()uint32 {_acb :=_cd .CurrentSegmentNumber ;_cd .CurrentSegmentNumber ++;return _acb ;};func (_cdd *Page )getPageInformationSegment ()*_gcb .Header {for _ ,_bea :=range _cdd .Segments {if _bea .Type ==_gcb .TPageInformation {return _bea ;};};_gc .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",_cdd );return nil ;};func (_cgf *Document )GetNumberOfPages ()(uint32 ,error ){if _cgf .NumberOfPagesUnknown ||_cgf .NumberOfPages ==0{if len (_cgf .Pages )==0{if _bg :=_cgf .mapData ();_bg !=nil {return 0,_ed .Wrap (_bg ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_cgf .Pages )),nil ;};return _cgf .NumberOfPages ,nil ;};func (_gag *Document )produceClassifiedPage (_bff *Page ,_dad *_gcb .Header )(_gd error ){const _ecg ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _agc map[int ]int ;_cf :=_gag ._aa ;_ca :=[]*_gcb .Header {_dad };if len (_gag ._ab [_bff .PageNumber ])> 0{_agc =map[int ]int {};_bc ,_fg :=_gag .addSymbolDictionary (_bff .PageNumber ,_gag .Classer .UndilatedTemplates ,_gag ._ab [_bff .PageNumber ],_agc ,false );if _fg !=nil {return _ed .Wrap (_fg ,_ecg ,"");};_ca =append (_ca ,_bc );_cf +=len (_gag ._ab [_bff .PageNumber ]);};_cc :=_gag ._dbe [_bff .PageNumber ];_gc .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_bff .PageNumber ,_cc );_bff .addTextRegionSegment (_ca ,_gag ._edb ,_agc ,_gag ._dbe [_bff .PageNumber ],_gag .Classer .PtaLL ,_gag .Classer .UndilatedTemplates ,_gag .Classer .ClassIDs ,nil ,_ccg (_cf ),len (_gag ._dbe [_bff .PageNumber ]));return nil ;};func (_bcc *Document )mapData ()error {const _bag ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_cec []*_gcb .Header ;_fbd int64 ;_aebd _gcb .Type ;);_ebe ,_ega :=_bcc .isFileHeaderPresent ();if _ega !=nil {return _ed .Wrap (_ega ,_bag ,"");};if _ebe {if _ega =_bcc .parseFileHeader ();_ega !=nil {return _ed .Wrap (_ega ,_bag ,"");};_fbd +=int64 (_bcc ._gb );_bcc .FullHeaders =true ;};var (_fef *Page ;_gca bool ;);for _aebd !=51&&!_gca {_bcb ,_dfge :=_gcb .NewHeader (_bcc ,_bcc .InputStream ,_fbd ,_bcc .OrganizationType );if _dfge !=nil {return _ed .Wrap (_dfge ,_bag ,"");};_gc .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",_bcb .SegmentNumber ,_bcb .Type );_aebd =_bcb .Type ;if _aebd !=_gcb .TEndOfFile {if _bcb .PageAssociation !=0{_fef =_bcc .Pages [_bcb .PageAssociation ];if _fef ==nil {_fef =_efc (_bcc ,_bcb .PageAssociation );_bcc .Pages [_bcb .PageAssociation ]=_fef ;if _bcc .NumberOfPagesUnknown {_bcc .NumberOfPages ++;};};_fef .Segments =append (_fef .Segments ,_bcb );}else {_bcc .GlobalSegments .AddSegment (_bcb );};};_cec =append (_cec ,_bcb );_fbd =_bcc .InputStream .StreamPosition ();if _bcc .OrganizationType ==_gcb .OSequential {_fbd +=int64 (_bcb .SegmentDataLength );};_gca ,_dfge =_bcc .reachedEOF (_fbd );if _dfge !=nil {_gc .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",_dfge );return _ed .Wrap (_dfge ,_bag ,"");};};_bcc .determineRandomDataOffsets (_cec ,uint64 (_fbd ));return nil ;};func (_bffec *Page )getCombinationOperator (_cfbbc *_gcb .PageInformationSegment ,_bedg _agf .CombinationOperator )_agf .CombinationOperator {if _cfbbc .CombinationOperatorOverrideAllowed (){return _bedg ;};return _cfbbc .CombinationOperator ();};type EncodingMethod int ;type Globals struct{Segments []*_gcb .Header ;};func (_egg *Document )Encode ()(_fdb []byte ,_bd error ){const _dgf ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _gce ,_bde int ;if _egg .FullHeaders {if _gce ,_bd =_egg .encodeFileHeader (_egg ._ec );_bd !=nil {return nil ,_ed .Wrap (_bd ,_dgf ,"");};};var (_aec bool ;_ecba *_gcb .Header ;_gcg *Page ;);if _bd =_egg .completeClassifiedPages ();_bd !=nil {return nil ,_ed .Wrap (_bd ,_dgf ,"");};if _bd =_egg .produceClassifiedPages ();_bd !=nil {return nil ,_ed .Wrap (_bd ,_dgf ,"");};if _egg .GlobalSegments !=nil {for _ ,_ecba =range _egg .GlobalSegments .Segments {if _bd =_egg .encodeSegment (_ecba ,&_gce );_bd !=nil {return nil ,_ed .Wrap (_bd ,_dgf ,"");};};};for _feg :=1;_feg <=int (_egg .NumberOfPages );_feg ++{if _gcg ,_aec =_egg .Pages [_feg ];!_aec {return nil ,_ed .Errorf (_dgf ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_feg );};for _ ,_ecba =range _gcg .Segments {if _bd =_egg .encodeSegment (_ecba ,&_gce );_bd !=nil {return nil ,_ed .Wrap (_bd ,_dgf ,"");};};};if _egg .FullHeaders {if _bde ,_bd =_egg .encodeEOFHeader (_egg ._ec );_bd !=nil {return nil ,_ed .Wrap (_bd ,_dgf ,"");};_gce +=_bde ;};_fdb =_egg ._ec .Data ();if len (_fdb )!=_gce {_gc .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",_gce ,len (_fdb ));};return _fdb ,nil ;};func (_ccc *Document )reachedEOF (_gfc int64 )(bool ,error ){const _bbf ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_ffe :=_ccc .InputStream .Seek (_gfc ,_g .SeekStart );if _ffe !=nil {_gc .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",_ffe );return false ,_ed .Wrap (_ffe ,_bbf ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_ffe =_ccc .InputStream .ReadBits (32);if _ffe ==_g .EOF {return true ,nil ;}else if _ffe !=nil {return false ,_ed .Wrap (_ffe ,_bbf ,"");};return false ,nil ;};func (_caff *Document )parseFileHeader ()error {const _ccdc ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_efbb :=_caff .InputStream .Seek (8,_g .SeekStart );if _efbb !=nil {return _ed .Wrap (_efbb ,_ccdc ,"\u0069\u0064");};_ ,_efbb =_caff .InputStream .ReadBits (5);if _efbb !=nil {return _ed .Wrap (_efbb ,_ccdc ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_dagf ,_efbb :=_caff .InputStream .ReadBit ();if _efbb !=nil {return _ed .Wrap (_efbb ,_ccdc ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _dagf ==1{_caff .GBUseExtTemplate =true ;};_dagf ,_efbb =_caff .InputStream .ReadBit ();if _efbb !=nil {return _ed .Wrap (_efbb ,_ccdc ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _dagf !=1{_caff .NumberOfPagesUnknown =false ;};_dagf ,_efbb =_caff .InputStream .ReadBit ();if _efbb !=nil {return _ed .Wrap (_efbb ,_ccdc ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_caff .OrganizationType =_gcb .OrganizationType (_dagf );if !_caff .NumberOfPagesUnknown {_caff .NumberOfPages ,_efbb =_caff .InputStream .ReadUint32 ();if _efbb !=nil {return _ed .Wrap (_efbb ,_ccdc ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_caff ._gb =13;};return nil ;};func _efc (_fee *Document ,_acdb int )*Page {return &Page {Document :_fee ,PageNumber :_acdb ,Segments :[]*_gcb .Header {}};};func (_dbgb *Page )AddGenericRegion (bm *_agf .Bitmap ,xloc ,yloc ,template int ,tp _gcb .Type ,duplicateLineRemoval bool )error {const _fbe ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_fgc :=&_gcb .GenericRegion {};if _caab :=_fgc .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_caab !=nil {return _ed .Wrap (_caab ,_fbe ,"");};_cgc :=&_gcb .Header {Type :_gcb .TImmediateGenericRegion ,PageAssociation :_dbgb .PageNumber ,SegmentData :_fgc };_dbgb .Segments =append (_dbgb .Segments ,_cgc );return nil ;};func (_f *Document )AddGenericPage (bm *_agf .Bitmap ,duplicateLineRemoval bool )(_dc error ){const _ea ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";if !_f .FullHeaders &&_f .NumberOfPages !=0{return _ed .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");};_fd :=&Page {Segments :[]*_gcb .Header {},Bitmap :bm ,Document :_f ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true };_fd .PageNumber =int (_f .nextPageNumber ());_f .Pages [_fd .PageNumber ]=_fd ;_fd .AddPageInformationSegment ();if _dc =_fd .AddGenericRegion (bm ,0,0,0,_gcb .TImmediateGenericRegion ,duplicateLineRemoval );_dc !=nil {return _ed .Wrap (_dc ,_ea ,"");};if _f .FullHeaders {_fd .AddEndOfPageSegment ();};return nil ;};func (_bbc *Page )countRegions ()int {var _daeg int ;for _ ,_cgbc :=range _bbc .Segments {switch _cgbc .Type {case 6,7,22,23,38,39,42,43:_daeg ++;};};return _daeg ;};func DecodeDocument (input _e .StreamReader ,globals *Globals )(*Document ,error ){return _cgd (input ,globals );};func (_feb *Page )getHeight ()(int ,error ){const _edd ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _feb .FinalHeight !=0{return _feb .FinalHeight ,nil ;};_bcf :=_feb .getPageInformationSegment ();if _bcf ==nil {return 0,_ed .Error (_edd ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_beae ,_ffb :=_bcf .GetSegmentData ();if _ffb !=nil {return 0,_ed .Wrap (_ffb ,_edd ,"");};_cee ,_cde :=_beae .(*_gcb .PageInformationSegment );if !_cde {return 0,_ed .Errorf (_edd ,"\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",_beae );};if _cee .PageBMHeight ==_ag .MaxInt32 {_ ,_ffb =_feb .GetBitmap ();if _ffb !=nil {return 0,_ed .Wrap (_ffb ,_edd ,"");};}else {_feb .FinalHeight =_cee .PageBMHeight ;};return _feb .FinalHeight ,nil ;};func (_dbd *Document )completeClassifiedPages ()(_dd error ){const _fe ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";if _dbd .Classer ==nil {return nil ;};_dbd ._baa =make ([]int ,_dbd .Classer .UndilatedTemplates .Size ());for _de :=0;_de < _dbd .Classer .ClassIDs .Size ();_de ++{_efb ,_cg :=_dbd .Classer .ClassIDs .Get (_de );if _cg !=nil {return _ed .Wrapf (_cg ,_fe ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_de );};_dbd ._baa [_efb ]++;};var _dcb []int ;for _bf :=0;_bf < _dbd .Classer .UndilatedTemplates .Size ();_bf ++{if _dbd .NumberOfPages ==1||_dbd ._baa [_bf ]> 1{_dcb =append (_dcb ,_bf );};};var (_eg *Page ;_ge bool ;);for _gea ,_ad :=range *_dbd .Classer .ComponentPageNumbers {if _eg ,_ge =_dbd .Pages [_ad ];!_ge {return _ed .Errorf (_fe ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_gea );};if _eg .EncodingMethod ==GenericEM {_gc .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",_gea );continue ;};_dbd ._dbe [_ad ]=append (_dbd ._dbe [_ad ],_gea );_ga ,_dea :=_dbd .Classer .ClassIDs .Get (_gea );if _dea !=nil {return _ed .Wrapf (_dea ,_fe ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_gea );};if _dbd ._baa [_ga ]==1&&_dbd .NumberOfPages !=1{_ff :=append (_dbd ._ab [_ad ],_ga );_dbd ._ab [_ad ]=_ff ;};};if _dd =_dbd .Classer .ComputeLLCorners ();_dd !=nil {return _ed .Wrap (_dd ,_fe ,"");};if _ ,_dd =_dbd .addSymbolDictionary (0,_dbd .Classer .UndilatedTemplates ,_dcb ,_dbd ._edb ,false );_dd !=nil {return _ed .Wrap (_dd ,_fe ,"");};return nil ;};func (_dedc *Page )createStripedPage (_ggb *_gcb .PageInformationSegment )error {const _cfbb ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_adc ,_eaga :=_dedc .collectPageStripes ();if _eaga !=nil {return _ed .Wrap (_eaga ,_cfbb ,"");};var _gaee int ;for _ ,_gfeb :=range _adc {if _cecc ,_caeb :=_gfeb .(*_gcb .EndOfStripe );_caeb {_gaee =_cecc .LineNumber ()+1;}else {_gga :=_gfeb .(_gcb .Regioner );_gbd :=_gga .GetRegionInfo ();_abe :=_dedc .getCombinationOperator (_ggb ,_gbd .CombinaionOperator );_cbbc ,_addb :=_gga .GetRegionBitmap ();if _addb !=nil {return _ed .Wrap (_addb ,_cfbb ,"");};_addb =_agf .Blit (_cbbc ,_dedc .Bitmap ,int (_gbd .XLocation ),_gaee ,_abe );if _addb !=nil {return _ed .Wrap (_addb ,_cfbb ,"");};};};return nil ;};func (_dfc *Document )encodeFileHeader (_aeb _e .BinaryWriter )(_gaed int ,_bgg error ){const _addf ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_gaed ,_bgg =_aeb .Write (_gf );if _bgg !=nil {return _gaed ,_ed .Wrap (_bgg ,_addf ,"\u0069\u0064");};if _bgg =_aeb .WriteByte (0x01);_bgg !=nil {return _gaed ,_ed .Wrap (_bgg ,_addf ,"\u0066\u006c\u0061g\u0073");};_gaed ++;_efd :=make ([]byte ,4);_ae .BigEndian .PutUint32 (_efd ,_dfc .NumberOfPages );_gg ,_bgg :=_aeb .Write (_efd );if _bgg !=nil {return _gg ,_ed .Wrap (_bgg ,_addf ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_gaed +=_gg ;return _gaed ,nil ;};func (_cdc *Page )composePageBitmap ()error {const _fcd ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _cdc .PageNumber ==0{return nil ;};_beg :=_cdc .getPageInformationSegment ();if _beg ==nil {return _ed .Error (_fcd ,"\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");};_bdee ,_egb :=_beg .GetSegmentData ();if _egb !=nil {return _egb ;};_dde ,_ebab :=_bdee .(*_gcb .PageInformationSegment );if !_ebab {return _ed .Error (_fcd ,"\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 _egb =_cdc .createPage (_dde );_egb !=nil {return _ed .Wrap (_egb ,_fcd ,"");};_cdc .clearSegmentData ();return nil ;};func (_agg *Page )Encode (w _e .BinaryWriter )(_dgge int ,_dfcf error ){const _dede ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _cccb int ;for _ ,_fff :=range _agg .Segments {if _cccb ,_dfcf =_fff .Encode (w );_dfcf !=nil {return _dgge ,_ed .Wrap (_dfcf ,_dede ,"");};_dgge +=_cccb ;};return _dgge ,nil ;};func (_caf *Document )addSymbolDictionary (_abb int ,_cfd *_agf .Bitmaps ,_aef []int ,_dbc map[int ]int ,_dbee bool )(*_gcb .Header ,error ){const _dec ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";_dae :=&_gcb .SymbolDictionary {};if _ac :=_dae .InitEncode (_cfd ,_aef ,_dbc ,_dbee );_ac !=nil {return nil ,_ac ;};_bcd :=&_gcb .Header {Type :_gcb .TSymbolDictionary ,PageAssociation :_abb ,SegmentData :_dae };if _abb ==0{if _caf .GlobalSegments ==nil {_caf .GlobalSegments =&Globals {};};_caf .GlobalSegments .AddSegment (_bcd );return _bcd ,nil ;};_aca ,_gff :=_caf .Pages [_abb ];if !_gff {return nil ,_ed .Errorf (_dec ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_abb );};var (_dbg int ;_gab *_gcb .Header ;);for _dbg ,_gab =range _aca .Segments {if _gab .Type ==_gcb .TPageInformation {break ;};};_dbg ++;_aca .Segments =append (_aca .Segments ,nil );copy (_aca .Segments [_dbg +1:],_aca .Segments [_dbg :]);_aca .Segments [_dbg ]=_bcd ;return _bcd ,nil ;};func (_fdca *Document )encodeSegment (_dfe *_gcb .Header ,_fec *int )error {const _bab ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_dfe .SegmentNumber =_fdca .nextSegmentNumber ();_gaf ,_fa :=_dfe .Encode (_fdca ._ec );if _fa !=nil {return _ed .Wrapf (_fa ,_bab ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_dfe .SegmentNumber );};*_fec +=_gaf ;return nil ;};func (_bdf *Page )nextSegmentNumber ()uint32 {return _bdf .Document .nextSegmentNumber ()};func (_bec *Page )createPage (_gbb *_gcb .PageInformationSegment )error {var _ecc error ;if !_gbb .IsStripe ||_gbb .PageBMHeight !=-1{_ecc =_bec .createNormalPage (_gbb );}else {_ecc =_bec .createStripedPage (_gbb );};return _ecc ;};func (_af *Document )produceClassifiedPages ()(_fdc error ){const _fc ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _af .Classer ==nil {return nil ;};var (_eb *Page ;_edfg bool ;_dg *_gcb .Header ;);for _aba :=1;_aba <=int (_af .NumberOfPages );_aba ++{if _eb ,_edfg =_af .Pages [_aba ];!_edfg {return _ed .Errorf (_fc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_aba );};if _eb .EncodingMethod ==GenericEM {continue ;};if _dg ==nil {if _dg ,_fdc =_af .GlobalSegments .GetSymbolDictionary ();_fdc !=nil {return _ed .Wrap (_fdc ,_fc ,"");};};if _fdc =_af .produceClassifiedPage (_eb ,_dg );_fdc !=nil {return _ed .Wrapf (_fdc ,_fc ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_aba );};};return nil ;};func (_cdb *Page )createNormalPage (_deg *_gcb .PageInformationSegment )error {const _bed ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_cdb .Bitmap =_agf .New (_deg .PageBMWidth ,_deg .PageBMHeight );if _deg .DefaultPixelValue ()!=0{_cdb .Bitmap .SetDefaultPixel ();};for _ ,_gcgd :=range _cdb .Segments {switch _gcgd .Type {case 6,7,22,23,38,39,42,43:_gc .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_gcgd .SegmentNumber );_fcf ,_acdf :=_gcgd .GetSegmentData ();if _acdf !=nil {return _acdf ;};_efe ,_abad :=_fcf .(_gcb .Regioner );if !_abad {_gc .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",_fcf );return _ed .Errorf (_bed ,"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",_fcf );};_ebf ,_acdf :=_efe .GetRegionBitmap ();if _acdf !=nil {return _ed .Wrap (_acdf ,_bed ,"");};if _cdb .fitsPage (_deg ,_ebf ){_cdb .Bitmap =_ebf ;}else {_gabg :=_efe .GetRegionInfo ();_adbf :=_cdb .getCombinationOperator (_deg ,_gabg .CombinaionOperator );_acdf =_agf .Blit (_ebf ,_cdb .Bitmap ,int (_gabg .XLocation ),int (_gabg .YLocation ),_adbf );if _acdf !=nil {return _ed .Wrap (_acdf ,_bed ,"");};};};};return nil ;};func (_eba *Document )GetGlobalSegment (i int )(*_gcb .Header ,error ){_gae ,_ace :=_eba .GlobalSegments .GetSegment (i );if _ace !=nil {return nil ,_ed .Wrap (_ace ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");};return _gae ,nil ;};func _ccg (_cb int )int {_eab :=0;_aac :=(_cb &(_cb -1))==0;_cb >>=1;for ;_cb !=0;_cb >>=1{_eab ++;};if _aac {return _eab ;};return _eab +1;};func (_efba *Document )nextPageNumber ()uint32 {_efba .NumberOfPages ++;return _efba .NumberOfPages };func (_cfg *Globals )GetSegment (segmentNumber int )(*_gcb .Header ,error ){const _faa ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _cfg ==nil {return nil ,_ed .Error (_faa ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_cfg .Segments )==0{return nil ,_ed .Error (_faa ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _fca *_gcb .Header ;for _ ,_fca =range _cfg .Segments {if _fca .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _fca ==nil {return nil ,_ed .Error (_faa ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _fca ,nil ;};func (_caae *Document )encodeEOFHeader (_edfa _e .BinaryWriter )(_aag int ,_ecbc error ){_gdf :=&_gcb .Header {SegmentNumber :_caae .nextSegmentNumber (),Type :_gcb .TEndOfFile };if _aag ,_ecbc =_gdf .Encode (_edfa );_ecbc !=nil {return 0,_ed .Wrap (_ecbc ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _aag ,nil ;};func (_eag *Page )String ()string {return _b .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_eag .PageNumber );};func (_dfd *Document )determineRandomDataOffsets (_dga []*_gcb .Header ,_fb uint64 ){if _dfd .OrganizationType !=_gcb .ORandom {return ;};for _ ,_ege :=range _dga {_ege .SegmentDataStartOffset =_fb ;_fb +=_ege .SegmentDataLength ;};};func (_cecb *Page )collectPageStripes ()(_gdff []_gcb .Segmenter ,_gcfb error ){const _aff ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _edeb _gcb .Segmenter ;for _ ,_bffe :=range _cecb .Segments {switch _bffe .Type {case 6,7,22,23,38,39,42,43:_edeb ,_gcfb =_bffe .GetSegmentData ();if _gcfb !=nil {return nil ,_ed .Wrap (_gcfb ,_aff ,"");};_gdff =append (_gdff ,_edeb );case 50:_edeb ,_gcfb =_bffe .GetSegmentData ();if _gcfb !=nil {return nil ,_gcfb ;};_bce ,_cfc :=_edeb .(*_gcb .EndOfStripe );if !_cfc {return nil ,_ed .Errorf (_aff ,"\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",_edeb );};_gdff =append (_gdff ,_bce );_cecb .FinalHeight =_bce .LineNumber ();};};return _gdff ,nil ;};func _cgd (_bfff _e .StreamReader ,_acba *Globals )(*Document ,error ){_acd :=&Document {Pages :make (map[int ]*Page ),InputStream :_bfff ,OrganizationType :_gcb .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_acba ,_gb :9};if _acd .GlobalSegments ==nil {_acd .GlobalSegments =&Globals {};};if _fefc :=_acd .mapData ();_fefc !=nil {return nil ,_fefc ;};return _acd ,nil ;};func (_dag *Document )GetPage (pageNumber int )(_gcb .Pager ,error ){const _be ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_gc .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 ,_ba .Stack ());return nil ,_ed .Errorf (_be ,"\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 (_dag .Pages ){_gc .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_ba .Stack ());return nil ,_ed .Error (_be ,"\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");};_ccd ,_bbd :=_dag .Pages [pageNumber ];if !_bbd {_gc .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_ba .Stack ());return nil ,_ed .Errorf (_be ,"\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 _ccd ,nil ;};func (_efdf *Page )addTextRegionSegment (_cbb []*_gcb .Header ,_efbbe ,_gfg map[int ]int ,_agfa []int ,_fea *_agf .Points ,_fgd *_agf .Bitmaps ,_egd *_d .IntSlice ,_eee *_agf .Boxes ,_cfb ,_gfe int ){_cfda :=&_gcb .TextRegion {NumberOfSymbols :uint32 (_gfe )};_cfda .InitEncode (_efbbe ,_gfg ,_agfa ,_fea ,_fgd ,_egd ,_eee ,_efdf .FinalWidth ,_efdf .FinalHeight ,_cfb );_bfa :=&_gcb .Header {RTSegments :_cbb ,SegmentData :_cfda ,PageAssociation :_efdf .PageNumber ,Type :_gcb .TImmediateTextRegion };_agb :=_gcb .TPageInformation ;if _gfg !=nil {_agb =_gcb .TSymbolDictionary ;};var _bgd int ;for ;_bgd < len (_efdf .Segments );_bgd ++{if _efdf .Segments [_bgd ].Type ==_agb {_bgd ++;break ;};};_efdf .Segments =append (_efdf .Segments ,nil );copy (_efdf .Segments [_bgd +1:],_efdf .Segments [_bgd :]);_efdf .Segments [_bgd ]=_bfa ;};func (_fccg *Page )GetHeight ()(int ,error ){return _fccg .getHeight ()};func (_dedf *Globals )GetSymbolDictionary ()(*_gcb .Header ,error ){const _bba ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";if _dedf ==nil {return nil ,_ed .Error (_bba ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_dedf .Segments )==0{return nil ,_ed .Error (_bba ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};for _ ,_efa :=range _dedf .Segments {if _efa .Type ==_gcb .TSymbolDictionary {return _efa ,nil ;};};return nil ,_ed .Error (_bba ,"\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 (_efda *Page )GetSegment (number int )(*_gcb .Header ,error ){const _fcg ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_adb :=range _efda .Segments {if _adb .SegmentNumber ==uint32 (number ){return _adb ,nil ;};};_fad :=make ([]uint32 ,len (_efda .Segments ));for _decf ,_cbbb :=range _efda .Segments {_fad [_decf ]=_cbbb .SegmentNumber ;};return nil ,_ed .Errorf (_fcg ,"\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 ,_efda .PageNumber ,_fad );};var _gf =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_dagc *Page )AddEndOfPageSegment (){_fdg :=&_gcb .Header {Type :_gcb .TEndOfPage ,PageAssociation :_dagc .PageNumber };_dagc .Segments =append (_dagc .Segments ,_fdg );};func (_bagg *Page )GetResolutionY ()(int ,error ){return _bagg .getResolutionY ()};func (_ebbb *Page )getResolutionX ()(int ,error ){const _bgf ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _ebbb .ResolutionX !=0{return _ebbb .ResolutionX ,nil ;};_bfc :=_ebbb .getPageInformationSegment ();if _bfc ==nil {return 0,_ed .Error (_bgf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_dgd ,_dgdd :=_bfc .GetSegmentData ();if _dgdd !=nil {return 0,_ed .Wrap (_dgdd ,_bgf ,"");};_cdg ,_cddg :=_dgd .(*_gcb .PageInformationSegment );if !_cddg {return 0,_ed .Errorf (_bgf ,"\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",_dgd );};_ebbb .ResolutionX =_cdg .ResolutionX ;return _ebbb .ResolutionX ,nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _e .StreamReader ;GlobalSegments *Globals ;OrganizationType _gcb .OrganizationType ;Classer *_db .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_agf .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_gb uint8 ;_ec *_e .BufferedWriter ;EncodeGlobals bool ;_aa int ;_ab map[int ][]int ;_dbe map[int ][]int ;_baa []int ;_edb map[int ]int ;};func (_gfgf *Page )getWidth ()(int ,error ){const _fbed ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _gfgf .FinalWidth !=0{return _gfgf .FinalWidth ,nil ;};_bdc :=_gfgf .getPageInformationSegment ();if _bdc ==nil {return 0,_ed .Error (_fbed ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_dfad ,_bffa :=_bdc .GetSegmentData ();if _bffa !=nil {return 0,_ed .Wrap (_bffa ,_fbed ,"");};_abaa ,_gcba :=_dfad .(*_gcb .PageInformationSegment );if !_gcba {return 0,_ed .Errorf (_fbed ,"\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",_dfad );};_gfgf .FinalWidth =_abaa .PageBMWidth ;return _gfgf .FinalWidth ,nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_ec :_e .BufferedMSB (),Pages :map[int ]*Page {},_ab :map[int ][]int {},_edb :map[int ]int {},_dbe :map[int ][]int {}};};func (_df *Document )AddClassifiedPage (bm *_agf .Bitmap ,method _db .Method )(_c error ){const _da ="\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 !_df .FullHeaders &&_df .NumberOfPages !=0{return _ed .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");};if _df .Classer ==nil {if _df .Classer ,_c =_db .Init (_db .DefaultSettings ());_c !=nil {return _ed .Wrap (_c ,_da ,"");};};_ef :=int (_df .nextPageNumber ());_edf :=&Page {Segments :[]*_gcb .Header {},Bitmap :bm ,Document :_df ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_ef };_df .Pages [_ef ]=_edf ;switch method {case _db .RankHaus :_edf .EncodingMethod =RankHausEM ;case _db .Correlation :_edf .EncodingMethod =CorrelationEM ;};_edf .AddPageInformationSegment ();if _c =_df .Classer .AddPage (bm ,_ef ,method );_c !=nil {return _ed .Wrap (_c ,_da ,"");};if _df .FullHeaders {_edf .AddEndOfPageSegment ();};return nil ;};func (_dgad *Page )GetResolutionX ()(int ,error ){return _dgad .getResolutionX ()};type Page struct{Segments []*_gcb .Header ;PageNumber int ;Bitmap *_agf .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;}; |