mirror of
https://github.com/unidoc/unipdf.git
synced 2025-05-02 22:17:06 +08:00
133 lines
39 KiB
Go
133 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 (_c "encoding/binary";_b "fmt";_eg "github.com/unidoc/unipdf/v3/common";_bg "github.com/unidoc/unipdf/v3/internal/bitwise";_af "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_ed "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
|
|
_d "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_gg "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_bb "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_g "io";_cg "math";_a "runtime/debug";);func (_gf *Document )completeClassifiedPages ()(_afa error ){const _be ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
|
|
if _gf .Classer ==nil {return nil ;};_gf ._eb =make ([]int ,_gf .Classer .UndilatedTemplates .Size ());for _fe :=0;_fe < _gf .Classer .ClassIDs .Size ();_fe ++{_gcg ,_aa :=_gf .Classer .ClassIDs .Get (_fe );if _aa !=nil {return _bb .Wrapf (_aa ,_be ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_fe );
|
|
};_gf ._eb [_gcg ]++;};var _def []int ;for _gdb :=0;_gdb < _gf .Classer .UndilatedTemplates .Size ();_gdb ++{if _gf .NumberOfPages ==1||_gf ._eb [_gdb ]> 1{_def =append (_def ,_gdb );};};var (_bba *Page ;_ad bool ;);for _ca ,_ee :=range *_gf .Classer .ComponentPageNumbers {if _bba ,_ad =_gf .Pages [_ee ];
|
|
!_ad {return _bb .Errorf (_be ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ca );};if _bba .EncodingMethod ==GenericEM {_eg .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",_ca );
|
|
continue ;};_gf ._afb [_ee ]=append (_gf ._afb [_ee ],_ca );_dee ,_dc :=_gf .Classer .ClassIDs .Get (_ca );if _dc !=nil {return _bb .Wrapf (_dc ,_be ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_ca );
|
|
};if _gf ._eb [_dee ]==1&&_gf .NumberOfPages !=1{_ae :=append (_gf ._f [_ee ],_dee );_gf ._f [_ee ]=_ae ;};};if _afa =_gf .Classer .ComputeLLCorners ();_afa !=nil {return _bb .Wrap (_afa ,_be ,"");};if _ ,_afa =_gf .addSymbolDictionary (0,_gf .Classer .UndilatedTemplates ,_def ,_gf ._ef ,false );
|
|
_afa !=nil {return _bb .Wrap (_afa ,_be ,"");};return nil ;};func _dedc (_cac *_bg .Reader ,_efe *Globals )(*Document ,error ){_gfg :=&Document {Pages :make (map[int ]*Page ),InputStream :_cac ,OrganizationType :_d .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_efe ,_dg :9};
|
|
if _gfg .GlobalSegments ==nil {_gfg .GlobalSegments =&Globals {};};if _bfgg :=_gfg .mapData ();_bfgg !=nil {return nil ,_bfgg ;};return _gfg ,nil ;};func (_ecc *Document )nextPageNumber ()uint32 {_ecc .NumberOfPages ++;return _ecc .NumberOfPages };func (_gega *Document )GetPage (pageNumber int )(_d .Pager ,error ){const _bfg ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";
|
|
if pageNumber < 0{_eg .Log .Debug ("\u004a\u0042\u0049\u00472\u0020\u0050\u0061\u0067\u0065\u0020\u002d\u0020\u0047e\u0074\u0050\u0061\u0067\u0065\u003a\u0020\u0025\u0064\u002e\u0020\u0050\u0061\u0067\u0065\u0020\u0063\u0061n\u006e\u006f\u0074\u0020\u0062e\u0020\u006c\u006f\u0077\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0030\u002e\u0020\u0025\u0073",pageNumber ,_a .Stack ());
|
|
return nil ,_bb .Errorf (_bfg ,"\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 (_gega .Pages ){_eg .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_a .Stack ());return nil ,_bb .Error (_bfg ,"\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");
|
|
};_ba ,_aeg :=_gega .Pages [pageNumber ];if !_aeg {_eg .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_a .Stack ());return nil ,_bb .Errorf (_bfg ,"\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 _ba ,nil ;};func (_fabd *Page )getResolutionX ()(int ,error ){const _cce ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _fabd .ResolutionX !=0{return _fabd .ResolutionX ,nil ;};_ecfb :=_fabd .getPageInformationSegment ();
|
|
if _ecfb ==nil {return 0,_bb .Error (_cce ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_cgfd ,_ffg :=_ecfb .GetSegmentData ();if _ffg !=nil {return 0,_bb .Wrap (_ffg ,_cce ,"");};_efgb ,_cbc :=_cgfd .(*_d .PageInformationSegment );
|
|
if !_cbc {return 0,_bb .Errorf (_cce ,"\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",_cgfd );
|
|
};_fabd .ResolutionX =_efgb .ResolutionX ;return _fabd .ResolutionX ,nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream *_bg .Reader ;GlobalSegments *Globals ;OrganizationType _d .OrganizationType ;
|
|
Classer *_gg .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_ed .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_dg uint8 ;_df *_bg .BufferedWriter ;EncodeGlobals bool ;_da int ;_f map[int ][]int ;
|
|
_afb map[int ][]int ;_eb []int ;_ef map[int ]int ;};func (_edc *Document )AddGenericPage (bm *_ed .Bitmap ,duplicateLineRemoval bool )(_ga error ){const _cgd ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
|
|
if !_edc .FullHeaders &&_edc .NumberOfPages !=0{return _bb .Error (_cgd ,"\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");
|
|
};_de :=&Page {Segments :[]*_d .Header {},Bitmap :bm ,Document :_edc ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_ed .Chocolate };_de .PageNumber =int (_edc .nextPageNumber ());_edc .Pages [_de .PageNumber ]=_de ;
|
|
bm .InverseData ();_de .AddPageInformationSegment ();if _ga =_de .AddGenericRegion (bm ,0,0,0,_d .TImmediateGenericRegion ,duplicateLineRemoval );_ga !=nil {return _bb .Wrap (_ga ,_cgd ,"");};if _edc .FullHeaders {_de .AddEndOfPageSegment ();};return nil ;
|
|
};func (_dcce *Document )mapData ()error {const _eee ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_ggdc []*_d .Header ;_fd int64 ;_cdb _d .Type ;);_ecb ,_edbe :=_dcce .isFileHeaderPresent ();if _edbe !=nil {return _bb .Wrap (_edbe ,_eee ,"");};if _ecb {if _edbe =_dcce .parseFileHeader ();
|
|
_edbe !=nil {return _bb .Wrap (_edbe ,_eee ,"");};_fd +=int64 (_dcce ._dg );_dcce .FullHeaders =true ;};var (_gfc *Page ;_aab bool ;);for _cdb !=51&&!_aab {_cdg ,_gfb :=_d .NewHeader (_dcce ,_dcce .InputStream ,_fd ,_dcce .OrganizationType );if _gfb !=nil {return _bb .Wrap (_gfb ,_eee ,"");
|
|
};_eg .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",_cdg .SegmentNumber ,_cdg .Type );
|
|
_cdb =_cdg .Type ;if _cdb !=_d .TEndOfFile {if _cdg .PageAssociation !=0{_gfc =_dcce .Pages [_cdg .PageAssociation ];if _gfc ==nil {_gfc =_ebf (_dcce ,_cdg .PageAssociation );_dcce .Pages [_cdg .PageAssociation ]=_gfc ;if _dcce .NumberOfPagesUnknown {_dcce .NumberOfPages ++;
|
|
};};_gfc .Segments =append (_gfc .Segments ,_cdg );}else {_dcce .GlobalSegments .AddSegment (_cdg );};};_ggdc =append (_ggdc ,_cdg );_fd =_dcce .InputStream .AbsolutePosition ();if _dcce .OrganizationType ==_d .OSequential {_fd +=int64 (_cdg .SegmentDataLength );
|
|
};_aab ,_gfb =_dcce .reachedEOF (_fd );if _gfb !=nil {_eg .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",_gfb );
|
|
return _bb .Wrap (_gfb ,_eee ,"");};};_dcce .determineRandomDataOffsets (_ggdc ,uint64 (_fd ));return nil ;};type Globals struct{Segments []*_d .Header ;};func (_ccg *Document )encodeEOFHeader (_eaab _bg .BinaryWriter )(_bdfb int ,_cbf error ){_bdfd :=&_d .Header {SegmentNumber :_ccg .nextSegmentNumber (),Type :_d .TEndOfFile };
|
|
if _bdfb ,_cbf =_bdfd .Encode (_eaab );_cbf !=nil {return 0,_bb .Wrap (_cbf ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _bdfb ,nil ;};func (_edgc *Page )getHeight ()(int ,error ){const _eaae ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";
|
|
if _edgc .FinalHeight !=0{return _edgc .FinalHeight ,nil ;};_bbde :=_edgc .getPageInformationSegment ();if _bbde ==nil {return 0,_bb .Error (_eaae ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_cda ,_ggda :=_bbde .GetSegmentData ();
|
|
if _ggda !=nil {return 0,_bb .Wrap (_ggda ,_eaae ,"");};_cfdd ,_caea :=_cda .(*_d .PageInformationSegment );if !_caea {return 0,_bb .Errorf (_eaae ,"\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",_cda );
|
|
};if _cfdd .PageBMHeight ==_cg .MaxInt32 {_ ,_ggda =_edgc .GetBitmap ();if _ggda !=nil {return 0,_bb .Wrap (_ggda ,_eaae ,"");};}else {_edgc .FinalHeight =_cfdd .PageBMHeight ;};return _edgc .FinalHeight ,nil ;};func _ggd (_egc int )int {_caf :=0;_fec :=(_egc &(_egc -1))==0;
|
|
_egc >>=1;for ;_egc !=0;_egc >>=1{_caf ++;};if _fec {return _caf ;};return _caf +1;};func DecodeDocument (input *_bg .Reader ,globals *Globals )(*Document ,error ){return _dedc (input ,globals );};func (_cba *Page )GetResolutionX ()(int ,error ){return _cba .getResolutionX ()};
|
|
func (_acd *Page )composePageBitmap ()error {const _eage ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _acd .PageNumber ==0{return nil ;};_faa :=_acd .getPageInformationSegment ();if _faa ==nil {return _bb .Error (_eage ,"\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");
|
|
};_aed ,_feef :=_faa .GetSegmentData ();if _feef !=nil {return _feef ;};_gab ,_ebea :=_aed .(*_d .PageInformationSegment );if !_ebea {return _bb .Error (_eage ,"\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 _feef =_acd .createPage (_gab );_feef !=nil {return _bb .Wrap (_feef ,_eage ,"");};_acd .clearSegmentData ();return nil ;};func (_cfg *Globals )AddSegment (segment *_d .Header ){_cfg .Segments =append (_cfg .Segments ,segment )};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_df :_bg .BufferedMSB (),Pages :map[int ]*Page {},_f :map[int ][]int {},_ef :map[int ]int {},_afb :map[int ][]int {}};
|
|
};func (_efag *Page )AddEndOfPageSegment (){_eec :=&_d .Header {Type :_d .TEndOfPage ,PageAssociation :_efag .PageNumber };_efag .Segments =append (_efag .Segments ,_eec );};func (_fgc *Document )Encode ()(_cea []byte ,_dfd error ){const _gcb ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
var _cgf ,_aag int ;if _fgc .FullHeaders {if _cgf ,_dfd =_fgc .encodeFileHeader (_fgc ._df );_dfd !=nil {return nil ,_bb .Wrap (_dfd ,_gcb ,"");};};var (_cae bool ;_geg *_d .Header ;_beg *Page ;);if _dfd =_fgc .completeClassifiedPages ();_dfd !=nil {return nil ,_bb .Wrap (_dfd ,_gcb ,"");
|
|
};if _dfd =_fgc .produceClassifiedPages ();_dfd !=nil {return nil ,_bb .Wrap (_dfd ,_gcb ,"");};if _fgc .GlobalSegments !=nil {for _ ,_geg =range _fgc .GlobalSegments .Segments {if _dfd =_fgc .encodeSegment (_geg ,&_cgf );_dfd !=nil {return nil ,_bb .Wrap (_dfd ,_gcb ,"");
|
|
};};};for _gde :=1;_gde <=int (_fgc .NumberOfPages );_gde ++{if _beg ,_cae =_fgc .Pages [_gde ];!_cae {return nil ,_bb .Errorf (_gcb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_gde );};for _ ,_geg =range _beg .Segments {if _dfd =_fgc .encodeSegment (_geg ,&_cgf );
|
|
_dfd !=nil {return nil ,_bb .Wrap (_dfd ,_gcb ,"");};};};if _fgc .FullHeaders {if _aag ,_dfd =_fgc .encodeEOFHeader (_fgc ._df );_dfd !=nil {return nil ,_bb .Wrap (_dfd ,_gcb ,"");};_cgf +=_aag ;};_cea =_fgc ._df .Data ();if len (_cea )!=_cgf {_eg .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",_cgf ,len (_cea ));
|
|
};return _cea ,nil ;};func (_gfe *Page )addTextRegionSegment (_cgc []*_d .Header ,_dae ,_ccgg map[int ]int ,_efab []int ,_afad *_ed .Points ,_fcee *_ed .Bitmaps ,_gaga *_af .IntSlice ,_agg *_ed .Boxes ,_eaca ,_agf int ){_cacd :=&_d .TextRegion {NumberOfSymbols :uint32 (_agf )};
|
|
_cacd .InitEncode (_dae ,_ccgg ,_efab ,_afad ,_fcee ,_gaga ,_agg ,_gfe .FinalWidth ,_gfe .FinalHeight ,_eaca );_dcee :=&_d .Header {RTSegments :_cgc ,SegmentData :_cacd ,PageAssociation :_gfe .PageNumber ,Type :_d .TImmediateTextRegion };_ebb :=_d .TPageInformation ;
|
|
if _ccgg !=nil {_ebb =_d .TSymbolDictionary ;};var _ccd int ;for ;_ccd < len (_gfe .Segments );_ccd ++{if _gfe .Segments [_ccd ].Type ==_ebb {_ccd ++;break ;};};_gfe .Segments =append (_gfe .Segments ,nil );copy (_gfe .Segments [_ccd +1:],_gfe .Segments [_ccd :]);
|
|
_gfe .Segments [_ccd ]=_dcee ;};type Page struct{Segments []*_d .Header ;PageNumber int ;Bitmap *_ed .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;
|
|
BlackIsOne bool ;};func (_bc *Document )completeSymbols ()(_cf error ){const _bf ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _bc .Classer ==nil {return nil ;};if _bc .Classer .UndilatedTemplates ==nil {return _bb .Error (_bf ,"\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");
|
|
};_ge :=len (_bc .Pages )==1;_ac :=make ([]int ,_bc .Classer .UndilatedTemplates .Size ());var _bgg int ;for _daa :=0;_daa < _bc .Classer .ClassIDs .Size ();_daa ++{_bgg ,_cf =_bc .Classer .ClassIDs .Get (_daa );if _cf !=nil {return _bb .Wrap (_cf ,_bf ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
|
|
};_ac [_bgg ]++;};var _edbf []int ;for _gae :=0;_gae < _bc .Classer .UndilatedTemplates .Size ();_gae ++{if _ac [_gae ]==0{return _bb .Error (_bf ,"\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 _ac [_gae ]> 1||_ge {_edbf =append (_edbf ,_gae );};};_bc ._da =len (_edbf );var _gdd ,_ce int ;for _cfe :=0;_cfe < _bc .Classer .ComponentPageNumbers .Size ();_cfe ++{_gdd ,_cf =_bc .Classer .ComponentPageNumbers .Get (_cfe );if _cf !=nil {return _bb .Wrapf (_cf ,_bf ,"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",_cfe );
|
|
};_ce ,_cf =_bc .Classer .ClassIDs .Get (_cfe );if _cf !=nil {return _bb .Wrapf (_cf ,_bf ,"\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",_gdd );
|
|
};if _ac [_ce ]==1&&!_ge {_bc ._f [_gdd ]=append (_bc ._f [_gdd ],_ce );};};if _cf =_bc .Classer .ComputeLLCorners ();_cf !=nil {return _bb .Wrap (_cf ,_bf ,"");};return nil ;};func (_fdg *Page )createStripedPage (_cag *_d .PageInformationSegment )error {const _gdf ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";
|
|
_addc ,_eebd :=_fdg .collectPageStripes ();if _eebd !=nil {return _bb .Wrap (_eebd ,_gdf ,"");};var _bbd int ;for _ ,_bdge :=range _addc {if _bdbe ,_gedf :=_bdge .(*_d .EndOfStripe );_gedf {_bbd =_bdbe .LineNumber ()+1;}else {_ecf :=_bdge .(_d .Regioner );
|
|
_ceeb :=_ecf .GetRegionInfo ();_bdeg :=_fdg .getCombinationOperator (_cag ,_ceeb .CombinaionOperator );_cfd ,_fgb :=_ecf .GetRegionBitmap ();if _fgb !=nil {return _bb .Wrap (_fgb ,_gdf ,"");};_fgb =_ed .Blit (_cfd ,_fdg .Bitmap ,int (_ceeb .XLocation ),_bbd ,_bdeg );
|
|
if _fgb !=nil {return _bb .Wrap (_fgb ,_gdf ,"");};};};return nil ;};func (_dag *Page )getWidth ()(int ,error ){const _efeb ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _dag .FinalWidth !=0{return _dag .FinalWidth ,nil ;};_efec :=_dag .getPageInformationSegment ();
|
|
if _efec ==nil {return 0,_bb .Error (_efeb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_gbb ,_abb :=_efec .GetSegmentData ();if _abb !=nil {return 0,_bb .Wrap (_abb ,_efeb ,"");};_abcd ,_fcc :=_gbb .(*_d .PageInformationSegment );
|
|
if !_fcc {return 0,_bb .Errorf (_efeb ,"\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",_gbb );
|
|
};_dag .FinalWidth =_abcd .PageBMWidth ;return _dag .FinalWidth ,nil ;};func (_cb *Document )addSymbolDictionary (_dd int ,_ec *_ed .Bitmaps ,_dga []int ,_eda map[int ]int ,_ab bool )(*_d .Header ,error ){const _fb ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
|
|
_eac :=&_d .SymbolDictionary {};if _bdf :=_eac .InitEncode (_ec ,_dga ,_eda ,_ab );_bdf !=nil {return nil ,_bdf ;};_eab :=&_d .Header {Type :_d .TSymbolDictionary ,PageAssociation :_dd ,SegmentData :_eac };if _dd ==0{if _cb .GlobalSegments ==nil {_cb .GlobalSegments =&Globals {};
|
|
};_cb .GlobalSegments .AddSegment (_eab );return _eab ,nil ;};_dfg ,_aff :=_cb .Pages [_dd ];if !_aff {return nil ,_bb .Errorf (_fb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_dd );};var (_fg int ;
|
|
_dcde *_d .Header ;);for _fg ,_dcde =range _dfg .Segments {if _dcde .Type ==_d .TPageInformation {break ;};};_fg ++;_dfg .Segments =append (_dfg .Segments ,nil );copy (_dfg .Segments [_fg +1:],_dfg .Segments [_fg :]);_dfg .Segments [_fg ]=_eab ;return _eab ,nil ;
|
|
};var _edb =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_egcc *Document )nextSegmentNumber ()uint32 {_fde :=_egcc .CurrentSegmentNumber ;_egcc .CurrentSegmentNumber ++;return _fde ;};func (_eag *Document )determineRandomDataOffsets (_agd []*_d .Header ,_eaa uint64 ){if _eag .OrganizationType !=_d .ORandom {return ;
|
|
};for _ ,_bfc :=range _agd {_bfc .SegmentDataStartOffset =_eaa ;_eaa +=_bfc .SegmentDataLength ;};};func (_eeg *Page )nextSegmentNumber ()uint32 {return _eeg .Document .nextSegmentNumber ()};func (_eebf *Globals )GetSegment (segmentNumber int )(*_d .Header ,error ){const _bfd ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";
|
|
if _eebf ==nil {return nil ,_bb .Error (_bfd ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_eebf .Segments )==0{return nil ,_bb .Error (_bfd ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};var _dcf *_d .Header ;for _ ,_dcf =range _eebf .Segments {if _dcf .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _dcf ==nil {return nil ,_bb .Error (_bfd ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
|
|
};return _dcf ,nil ;};func (_fdc *Page )String ()string {return _b .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_fdc .PageNumber );};func (_bfdd *Page )GetWidth ()(int ,error ){return _bfdd .getWidth ()};func (_cdfg *Page )AddGenericRegion (bm *_ed .Bitmap ,xloc ,yloc ,template int ,tp _d .Type ,duplicateLineRemoval bool )error {const _aabe ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
|
|
_begb :=&_d .GenericRegion {};if _fff :=_begb .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_fff !=nil {return _bb .Wrap (_fff ,_aabe ,"");};_gddc :=&_d .Header {Type :_d .TImmediateGenericRegion ,PageAssociation :_cdfg .PageNumber ,SegmentData :_begb };
|
|
_cdfg .Segments =append (_cdfg .Segments ,_gddc );return nil ;};func (_fgf *Document )isFileHeaderPresent ()(bool ,error ){_fgf .InputStream .Mark ();for _ ,_dfag :=range _edb {_cee ,_dgc :=_fgf .InputStream .ReadByte ();if _dgc !=nil {return false ,_dgc ;
|
|
};if _dfag !=_cee {_fgf .InputStream .Reset ();return false ,nil ;};};_fgf .InputStream .Reset ();return true ,nil ;};func (_dfda *Page )createPage (_feba *_d .PageInformationSegment )error {var _dda error ;if !_feba .IsStripe ||_feba .PageBMHeight !=-1{_dda =_dfda .createNormalPage (_feba );
|
|
}else {_dda =_dfda .createStripedPage (_feba );};return _dda ;};func (_db *Document )GetGlobalSegment (i int )(*_d .Header ,error ){_afd ,_dbf :=_db .GlobalSegments .GetSegment (i );if _dbf !=nil {return nil ,_bb .Wrap (_dbf ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
|
|
};return _afd ,nil ;};func (_dgeb *Page )getResolutionY ()(int ,error ){const _ecbe ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _dgeb .ResolutionY !=0{return _dgeb .ResolutionY ,nil ;};_cde :=_dgeb .getPageInformationSegment ();
|
|
if _cde ==nil {return 0,_bb .Error (_ecbe ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_eeeg ,_age :=_cde .GetSegmentData ();if _age !=nil {return 0,_bb .Wrap (_age ,_ecbe ,"");};_baf ,_cgb :=_eeeg .(*_d .PageInformationSegment );
|
|
if !_cgb {return 0,_bb .Errorf (_ecbe ,"\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",_eeeg );
|
|
};_dgeb .ResolutionY =_baf .ResolutionY ;return _dgeb .ResolutionY ,nil ;};func (_agc *Globals )GetSegmentByIndex (index int )(*_d .Header ,error ){const _gag ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";
|
|
if _agc ==nil {return nil ,_bb .Error (_gag ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_agc .Segments )==0{return nil ,_bb .Error (_gag ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
|
|
};if index > len (_agc .Segments )-1{return nil ,_bb .Error (_gag ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _agc .Segments [index ],nil ;};func (_aef *Page )clearSegmentData (){for _fag :=range _aef .Segments {_aef .Segments [_fag ].CleanSegmentData ();
|
|
};};func _ebf (_begc *Document ,_bfa int )*Page {return &Page {Document :_begc ,PageNumber :_bfa ,Segments :[]*_d .Header {}};};func (_edgd *Page )createNormalPage (_bde *_d .PageInformationSegment )error {const _cdc ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";
|
|
_edgd .Bitmap =_ed .New (_bde .PageBMWidth ,_bde .PageBMHeight );if _bde .DefaultPixelValue !=0{_edgd .Bitmap .SetDefaultPixel ();};for _ ,_bad :=range _edgd .Segments {switch _bad .Type {case 6,7,22,23,38,39,42,43:_eg .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_bad .SegmentNumber );
|
|
_degg ,_ead :=_bad .GetSegmentData ();if _ead !=nil {return _ead ;};_ege ,_ebbe :=_degg .(_d .Regioner );if !_ebbe {_eg .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",_degg );
|
|
return _bb .Errorf (_cdc ,"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",_degg );
|
|
};_cdfgb ,_ead :=_ege .GetRegionBitmap ();if _ead !=nil {return _bb .Wrap (_ead ,_cdc ,"");};if _edgd .fitsPage (_bde ,_cdfgb ){_edgd .Bitmap =_cdfgb ;}else {_ddb :=_ege .GetRegionInfo ();_dedg :=_edgd .getCombinationOperator (_bde ,_ddb .CombinaionOperator );
|
|
_ead =_ed .Blit (_cdfgb ,_edgd .Bitmap ,int (_ddb .XLocation ),int (_ddb .YLocation ),_dedg );if _ead !=nil {return _bb .Wrap (_ead ,_cdc ,"");};};};};return nil ;};func (_bdg *Document )GetNumberOfPages ()(uint32 ,error ){if _bdg .NumberOfPagesUnknown ||_bdg .NumberOfPages ==0{if len (_bdg .Pages )==0{if _adc :=_bdg .mapData ();
|
|
_adc !=nil {return 0,_bb .Wrap (_adc ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_bdg .Pages )),nil ;};return _bdg .NumberOfPages ,nil ;};func (_feea *Document )encodeFileHeader (_abe _bg .BinaryWriter )(_eeb int ,_gdbg error ){const _egf ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
|
|
_eeb ,_gdbg =_abe .Write (_edb );if _gdbg !=nil {return _eeb ,_bb .Wrap (_gdbg ,_egf ,"\u0069\u0064");};if _gdbg =_abe .WriteByte (0x01);_gdbg !=nil {return _eeb ,_bb .Wrap (_gdbg ,_egf ,"\u0066\u006c\u0061g\u0073");};_eeb ++;_acg :=make ([]byte ,4);_c .BigEndian .PutUint32 (_acg ,_feea .NumberOfPages );
|
|
_ffb ,_gdbg :=_abe .Write (_acg );if _gdbg !=nil {return _ffb ,_bb .Wrap (_gdbg ,_egf ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_eeb +=_ffb ;return _eeb ,nil ;};func (_gfgg *Page )lastSegmentNumber ()(_dfec uint32 ,_ffc error ){const _cdbf ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";
|
|
if len (_gfgg .Segments )==0{return _dfec ,_bb .Errorf (_cdbf ,"\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",_gfgg .PageNumber );
|
|
};return _gfgg .Segments [len (_gfgg .Segments )-1].SegmentNumber ,nil ;};func (_gaf *Page )fitsPage (_ebc *_d .PageInformationSegment ,_bdd *_ed .Bitmap )bool {return _gaf .countRegions ()==1&&_ebc .DefaultPixelValue ==0&&_ebc .PageBMWidth ==_bdd .Width &&_ebc .PageBMHeight ==_bdd .Height ;
|
|
};func (_gbc *Page )collectPageStripes ()(_bada []_d .Segmenter ,_abeg error ){const _befd ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _gge _d .Segmenter ;for _ ,_dcdf :=range _gbc .Segments {switch _dcdf .Type {case 6,7,22,23,38,39,42,43:_gge ,_abeg =_dcdf .GetSegmentData ();
|
|
if _abeg !=nil {return nil ,_bb .Wrap (_abeg ,_befd ,"");};_bada =append (_bada ,_gge );case 50:_gge ,_abeg =_dcdf .GetSegmentData ();if _abeg !=nil {return nil ,_abeg ;};_gef ,_efg :=_gge .(*_d .EndOfStripe );if !_efg {return nil ,_bb .Errorf (_befd ,"\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",_gge );
|
|
};_bada =append (_bada ,_gef );_gbc .FinalHeight =_gef .LineNumber ();};};return _bada ,nil ;};func (_aac *Page )getCombinationOperator (_fef *_d .PageInformationSegment ,_bgb _ed .CombinationOperator )_ed .CombinationOperator {if _fef .CombinationOperatorOverrideAllowed (){return _bgb ;
|
|
};return _fef .CombinationOperator ();};func (_cacb *Page )GetBitmap ()(_cca *_ed .Bitmap ,_gegad error ){_eg .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",_cacb .PageNumber ));
|
|
defer func (){if _gegad !=nil {_eg .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",_cacb .PageNumber ,_gegad ));
|
|
}else {_eg .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",_cacb .PageNumber ));};}();if _cacb .Bitmap !=nil {return _cacb .Bitmap ,nil ;
|
|
};_gegad =_cacb .composePageBitmap ();if _gegad !=nil {return nil ,_gegad ;};return _cacb .Bitmap ,nil ;};func (_abc *Document )encodeSegment (_deg *_d .Header ,_egg *int )error {const _dcc ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
|
|
_deg .SegmentNumber =_abc .nextSegmentNumber ();_agb ,_gcd :=_deg .Encode (_abc ._df );if _gcd !=nil {return _bb .Wrapf (_gcd ,_dcc ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_deg .SegmentNumber );};*_egg +=_agb ;
|
|
return nil ;};func (_gee *Globals )GetSymbolDictionary ()(*_d .Header ,error ){const _bdb ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";if _gee ==nil {return nil ,_bb .Error (_bdb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
|
|
};if len (_gee .Segments )==0{return nil ,_bb .Error (_bdb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};for _ ,_bcc :=range _gee .Segments {if _bcc .Type ==_d .TSymbolDictionary {return _bcc ,nil ;
|
|
};};return nil ,_bb .Error (_bdb ,"\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 (_cdd *Page )getPageInformationSegment ()*_d .Header {for _ ,_gea :=range _cdd .Segments {if _gea .Type ==_d .TPageInformation {return _gea ;
|
|
};};_eg .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 (_gaee *Page )countRegions ()int {var _eea int ;for _ ,_fca :=range _gaee .Segments {switch _fca .Type {case 6,7,22,23,38,39,42,43:_eea ++;};};return _eea ;};func (_ff *Document )AddClassifiedPage (bm *_ed .Bitmap ,method _gg .Method )(_gd error ){const _cd ="\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 !_ff .FullHeaders &&_ff .NumberOfPages !=0{return _bb .Error (_cd ,"\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 _ff .Classer ==nil {if _ff .Classer ,_gd =_gg .Init (_gg .DefaultSettings ());_gd !=nil {return _bb .Wrap (_gd ,_cd ,"");};};_gc :=int (_ff .nextPageNumber ());_cdf :=&Page {Segments :[]*_d .Header {},Bitmap :bm ,Document :_ff ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_gc };
|
|
_ff .Pages [_gc ]=_cdf ;switch method {case _gg .RankHaus :_cdf .EncodingMethod =RankHausEM ;case _gg .Correlation :_cdf .EncodingMethod =CorrelationEM ;};_cdf .AddPageInformationSegment ();if _gd =_ff .Classer .AddPage (bm ,_gc ,method );_gd !=nil {return _bb .Wrap (_gd ,_cd ,"");
|
|
};if _ff .FullHeaders {_cdf .AddEndOfPageSegment ();};return nil ;};func (_agcc *Page )GetResolutionY ()(int ,error ){return _agcc .getResolutionY ()};func (_gec *Document )reachedEOF (_dfe int64 )(bool ,error ){const _ced ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";
|
|
_ ,_aad :=_gec .InputStream .Seek (_dfe ,_g .SeekStart );if _aad !=nil {_eg .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",_aad );
|
|
return false ,_bb .Wrap (_aad ,_ced ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_aad =_gec .InputStream .ReadBits (32);if _aad ==_g .EOF {return true ,nil ;
|
|
}else if _aad !=nil {return false ,_bb .Wrap (_aad ,_ced ,"");};return false ,nil ;};type EncodingMethod int ;func (_add *Page )Encode (w _bg .BinaryWriter )(_ebg int ,_dge error ){const _bfe ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
|
|
var _fab int ;for _ ,_bdc :=range _add .Segments {if _fab ,_dge =_bdc .Encode (w );_dge !=nil {return _ebg ,_bb .Wrap (_dge ,_bfe ,"");};_ebg +=_fab ;};return _ebg ,nil ;};func (_bcce *Page )GetHeight ()(int ,error ){return _bcce .getHeight ()};func (_bd *Document )produceClassifiedPages ()(_afac error ){const _dfa ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
|
|
if _bd .Classer ==nil {return nil ;};var (_fa *Page ;_ded bool ;_gb *_d .Header ;);for _gcc :=1;_gcc <=int (_bd .NumberOfPages );_gcc ++{if _fa ,_ded =_bd .Pages [_gcc ];!_ded {return _bb .Errorf (_dfa ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_gcc );
|
|
};if _fa .EncodingMethod ==GenericEM {continue ;};if _gb ==nil {if _gb ,_afac =_bd .GlobalSegments .GetSymbolDictionary ();_afac !=nil {return _bb .Wrap (_afac ,_dfa ,"");};};if _afac =_bd .produceClassifiedPage (_fa ,_gb );_afac !=nil {return _bb .Wrapf (_afac ,_dfa ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_gcc );
|
|
};};return nil ;};func (_adf *Document )parseFileHeader ()error {const _gda ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_fc :=_adf .InputStream .Seek (8,_g .SeekStart );if _fc !=nil {return _bb .Wrap (_fc ,_gda ,"\u0069\u0064");
|
|
};_ ,_fc =_adf .InputStream .ReadBits (5);if _fc !=nil {return _bb .Wrap (_fc ,_gda ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_ace ,_fc :=_adf .InputStream .ReadBit ();if _fc !=nil {return _bb .Wrap (_fc ,_gda ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");
|
|
};if _ace ==1{_adf .GBUseExtTemplate =true ;};_ace ,_fc =_adf .InputStream .ReadBit ();if _fc !=nil {return _bb .Wrap (_fc ,_gda ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _ace !=1{_adf .NumberOfPagesUnknown =false ;
|
|
};_ace ,_fc =_adf .InputStream .ReadBit ();if _fc !=nil {return _bb .Wrap (_fc ,_gda ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_adf .OrganizationType =_d .OrganizationType (_ace );if !_adf .NumberOfPagesUnknown {_adf .NumberOfPages ,_fc =_adf .InputStream .ReadUint32 ();
|
|
if _fc !=nil {return _bb .Wrap (_fc ,_gda ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_adf ._dg =13;};return nil ;};func (_bea *Document )produceClassifiedPage (_fee *Page ,_ea *_d .Header )(_eaf error ){const _bed ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
|
|
var _dce map[int ]int ;_feb :=_bea ._da ;_edg :=[]*_d .Header {_ea };if len (_bea ._f [_fee .PageNumber ])> 0{_dce =map[int ]int {};_ada ,_dcd :=_bea .addSymbolDictionary (_fee .PageNumber ,_bea .Classer .UndilatedTemplates ,_bea ._f [_fee .PageNumber ],_dce ,false );
|
|
if _dcd !=nil {return _bb .Wrap (_dcd ,_bed ,"");};_edg =append (_edg ,_ada );_feb +=len (_bea ._f [_fee .PageNumber ]);};_dfac :=_bea ._afb [_fee .PageNumber ];_eg .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_fee .PageNumber ,_dfac );
|
|
_fee .addTextRegionSegment (_edg ,_bea ._ef ,_dce ,_bea ._afb [_fee .PageNumber ],_bea .Classer .PtaLL ,_bea .Classer .UndilatedTemplates ,_bea .Classer .ClassIDs ,nil ,_ggd (_feb ),len (_bea ._afb [_fee .PageNumber ]));return nil ;};func (_dfdf *Page )GetSegment (number int )(*_d .Header ,error ){const _ggdd ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
|
|
for _ ,_ede :=range _dfdf .Segments {if _ede .SegmentNumber ==uint32 (number ){return _ede ,nil ;};};_cacg :=make ([]uint32 ,len (_dfdf .Segments ));for _bac ,_dgg :=range _dfdf .Segments {_cacg [_bac ]=_dgg .SegmentNumber ;};return nil ,_bb .Errorf (_ggdd ,"\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 ,_dfdf .PageNumber ,_cacg );
|
|
};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_deee *Page )AddPageInformationSegment (){_ebe :=&_d .PageInformationSegment {PageBMWidth :_deee .FinalWidth ,PageBMHeight :_deee .FinalHeight ,ResolutionX :_deee .ResolutionX ,ResolutionY :_deee .ResolutionY ,IsLossless :_deee .IsLossless };
|
|
if _deee .BlackIsOne {_ebe .DefaultPixelValue =uint8 (0x1);};_eae :=&_d .Header {PageAssociation :_deee .PageNumber ,SegmentDataLength :uint64 (_ebe .Size ()),SegmentData :_ebe ,Type :_d .TPageInformation };_deee .Segments =append (_deee .Segments ,_eae );
|
|
}; |