unipdf/fdf/fdf.go
2020-08-31 21:12:07 +00:00

32 lines
30 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 fdf provides support for loading form field data from Form Field Data (FDF) files.
package fdf ;import (_fa "bufio";_fe "bytes";_a "encoding/hex";_g "errors";_gg "fmt";_acg "github.com/unidoc/unipdf/v3/common";_cec "github.com/unidoc/unipdf/v3/core";_ce "io";_ac "os";_f "regexp";_be "sort";_b "strconv";_e "strings";);
// FieldValues implements interface model.FieldValueProvider.
// Returns a map of field names to values (PdfObjects).
func (fdf *Data )FieldValues ()(map[string ]_cec .PdfObject ,error ){_cg ,_ff :=fdf .FieldDictionaries ();if _ff !=nil {return nil ,_ff ;};var _eec []string ;for _bde :=range _cg {_eec =append (_eec ,_bde );};_be .Strings (_eec );_cd :=map[string ]_cec .PdfObject {};for _ ,_ga :=range _eec {_fd :=_cg [_ga ];_da :=_cec .TraceToDirectObject (_fd .Get ("\u0056"));_cd [_ga ]=_da ;};return _cd ,nil ;};type fdfParser struct{_dcd int ;_cda int ;_aea map[int64 ]_cec .PdfObject ;_cbd _ce .ReadSeeker ;_ddg *_fa .Reader ;_bfb int64 ;_fac *_cec .PdfObjectDictionary ;};func (_gab *fdfParser )readAtLeast (_fed []byte ,_ggf int )(int ,error ){_ecc :=_ggf ;_dd :=0;_ad :=0;for _ecc > 0{_bf ,_ed :=_gab ._ddg .Read (_fed [_dd :]);if _ed !=nil {_acg .Log .Debug ("\u0045\u0052\u0052O\u0052\u0020\u0046\u0061i\u006c\u0065\u0064\u0020\u0072\u0065\u0061d\u0069\u006e\u0067\u0020\u0028\u0025\u0064\u003b\u0025\u0064\u0029\u0020\u0025\u0073",_bf ,_ad ,_ed .Error ());return _dd ,_g .New ("\u0066\u0061\u0069\u006c\u0065\u0064\u0020\u0072\u0065a\u0064\u0069\u006e\u0067");};_ad ++;_dd +=_bf ;_ecc -=_bf ;};return _dd ,nil ;};
// FieldDictionaries returns a map of field names to field dictionaries.
func (fdf *Data )FieldDictionaries ()(map[string ]*_cec .PdfObjectDictionary ,error ){_ee :=map[string ]*_cec .PdfObjectDictionary {};for _ae :=0;_ae < fdf ._ea .Len ();_ae ++{_dc ,_bd :=_cec .GetDict (fdf ._ea .Get (_ae ));if _bd {_bb ,_ :=_cec .GetString (_dc .Get ("\u0054"));if _bb !=nil {_ee [_bb .Str ()]=_dc ;};};};return _ee ,nil ;};var _daa =_f .MustCompile ("\u0025\u0025\u0045O\u0046");func (_gcc *fdfParser )getFileOffset ()int64 {_ba ,_ :=_gcc ._cbd .Seek (0,_ce .SeekCurrent );_ba -=int64 (_gcc ._ddg .Buffered ());return _ba ;};func (_abd *fdfParser )parseFdfVersion ()(int ,int ,error ){_abd ._cbd .Seek (0,_ce .SeekStart );_ggd :=20;_beb :=make ([]byte ,_ggd );_abd ._cbd .Read (_beb );_bba :=_fff .FindStringSubmatch (string (_beb ));if len (_bba )< 3{_bdd ,_cca ,_edf :=_abd .seekFdfVersionTopDown ();if _edf !=nil {_acg .Log .Debug ("F\u0061\u0069\u006c\u0065\u0064\u0020\u0072\u0065\u0063\u006f\u0076\u0065\u0072\u0079\u0020\u002d\u0020\u0075n\u0061\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066\u0069nd\u0020\u0076\u0065r\u0073i\u006f\u006e");return 0,0,_edf ;};return _bdd ,_cca ,nil ;};_acb ,_aef :=_b .Atoi (_bba [1]);if _aef !=nil {return 0,0,_aef ;};_eg ,_aef :=_b .Atoi (_bba [2]);if _aef !=nil {return 0,0,_aef ;};_acg .Log .Debug ("\u0046\u0064\u0066\u0020\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020%\u0064\u002e\u0025\u0064",_acb ,_eg );return int (_acb ),int (_eg ),nil ;};var _cdd =_f .MustCompile ("\u0028\u005c\u0064\u002b)\\\u0073\u002b\u0028\u005c\u0064\u002b\u0029\u005c\u0073\u002b\u006f\u0062\u006a");func (_fcc *fdfParser )parse ()error {_fcc ._cbd .Seek (0,_ce .SeekStart );_fcc ._ddg =_fa .NewReader (_fcc ._cbd );for {_fcc .skipComments ();_bbe ,_bbec :=_fcc ._ddg .Peek (20);if _bbec !=nil {_acg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0046\u0061\u0069\u006c\u0020\u0074\u006f\u0020r\u0065a\u0064\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a");return _bbec ;};if _e .HasPrefix (string (_bbe ),"\u0074r\u0061\u0069\u006c\u0065\u0072"){_fcc ._ddg .Discard (7);_fcc .skipSpaces ();_fcc .skipComments ();_fffb ,_ :=_fcc .parseDict ();_fcc ._fac =_fffb ;break ;};_gcfe :=_cdd .FindStringSubmatchIndex (string (_bbe ));if len (_gcfe )< 6{_acg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0061\u0062l\u0065\u0020\u0074\u006f \u0066\u0069\u006e\u0064\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0073\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065\u0020\u0028\u0025\u0073\u0029",string (_bbe ));return _g .New ("\u0075\u006e\u0061b\u006c\u0065\u0020\u0074\u006f\u0020\u0064\u0065\u0074\u0065\u0063\u0074\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020s\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065");};_gbe ,_bbec :=_fcc .parseIndirectObject ();if _bbec !=nil {return _bbec ;};switch _ceb :=_gbe .(type ){case *_cec .PdfIndirectObject :_fcc ._aea [_ceb .ObjectNumber ]=_ceb ;case *_cec .PdfObjectStream :_fcc ._aea [_ceb .ObjectNumber ]=_ceb ;default:return _g .New ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};};return nil ;};func (_af *fdfParser )readTextLine ()(string ,error ){var _faca _fe .Buffer ;for {_cc ,_cgg :=_af ._ddg .Peek (1);if _cgg !=nil {_acg .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_cgg .Error ());return _faca .String (),_cgg ;};if (_cc [0]!='\r')&&(_cc [0]!='\n'){_efa ,_ :=_af ._ddg .ReadByte ();_faca .WriteByte (_efa );}else {break ;};};return _faca .String (),nil ;};func (_gb *fdfParser )parseName ()(_cec .PdfObjectName ,error ){var _cf _fe .Buffer ;_efe :=false ;for {_gce ,_cfd :=_gb ._ddg .Peek (1);if _cfd ==_ce .EOF {break ;};if _cfd !=nil {return _cec .PdfObjectName (_cf .String ()),_cfd ;};if !_efe {if _gce [0]=='/'{_efe =true ;_gb ._ddg .ReadByte ();}else if _gce [0]=='%'{_gb .readComment ();_gb .skipSpaces ();}else {_acg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u0020N\u0061\u006d\u0065\u0020\u0073\u0074\u0061\u0072\u0074\u0069\u006e\u0067\u0020w\u0069\u0074\u0068\u0020\u0025\u0073\u0020(\u0025\u0020\u0078\u0029",_gce ,_gce );return _cec .PdfObjectName (_cf .String ()),_gg .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_gce [0]);};}else {if _cec .IsWhiteSpace (_gce [0]){break ;}else if (_gce [0]=='/')||(_gce [0]=='[')||(_gce [0]=='(')||(_gce [0]==']')||(_gce [0]=='<')||(_gce [0]=='>'){break ;}else if _gce [0]=='#'{_cbc ,_bee :=_gb ._ddg .Peek (3);if _bee !=nil {return _cec .PdfObjectName (_cf .String ()),_bee ;};_gb ._ddg .Discard (3);_bfc ,_bee :=_a .DecodeString (string (_cbc [1:3]));if _bee !=nil {return _cec .PdfObjectName (_cf .String ()),_bee ;};_cf .Write (_bfc );}else {_bfbb ,_ :=_gb ._ddg .ReadByte ();_cf .WriteByte (_bfbb );};};};return _cec .PdfObjectName (_cf .String ()),nil ;};var _fff =_f .MustCompile ("\u0025F\u0044F\u002d\u0028\u005c\u0064\u0029\u005c\u002e\u0028\u005c\u0064\u0029");var _cbb =_f .MustCompile ("^\u005c\u0073\u002a\u0028\\d\u002b)\u005c\u0073\u002b\u0028\u005cd\u002b\u0029\u005c\u0073\u002b\u0052");func (_bbd *fdfParser )parseNumber ()(_cec .PdfObject ,error ){return _cec .ParseNumber (_bbd ._ddg )};func (_cb *fdfParser )setFileOffset (_fea int64 ){_cb ._cbd .Seek (_fea ,_ce .SeekStart );_cb ._ddg =_fa .NewReader (_cb ._cbd );};var _ade =_f .MustCompile ("\u005e\u005b\u005c+-\u002e\u005d\u002a\u0028\u005b\u0030\u002d\u0039\u002e]\u002b)\u0065[\u005c+\u002d\u002e\u005d\u002a\u0028\u005b\u0030\u002d\u0039\u002e\u005d\u002b\u0029");func _abcb (_afb _ce .ReadSeeker )(*fdfParser ,error ){_eca :=&fdfParser {};_eca ._cbd =_afb ;_eca ._aea =map[int64 ]_cec .PdfObject {};_cefg ,_dbg ,_ega :=_eca .parseFdfVersion ();if _ega !=nil {_acg .Log .Error ("U\u006e\u0061\u0062\u006c\u0065\u0020t\u006f\u0020\u0070\u0061\u0072\u0073\u0065\u0020\u0076e\u0072\u0073\u0069o\u006e:\u0020\u0025\u0076",_ega );return nil ,_ega ;};_eca ._dcd =_cefg ;_eca ._cda =_dbg ;_ega =_eca .parse ();return _eca ,_ega ;};func (_fbg *fdfParser )parseArray ()(*_cec .PdfObjectArray ,error ){_efec :=_cec .MakeArray ();_fbg ._ddg .ReadByte ();for {_fbg .skipSpaces ();_fcg ,_feb :=_fbg ._ddg .Peek (1);if _feb !=nil {return _efec ,_feb ;};if _fcg [0]==']'{_fbg ._ddg .ReadByte ();break ;};_dec ,_feb :=_fbg .parseObject ();if _feb !=nil {return _efec ,_feb ;};_efec .Append (_dec );};return _efec ,nil ;};
// Load loads FDF form data from `r`.
func Load (r _ce .ReadSeeker )(*Data ,error ){_bg ,_aa :=_abcb (r );if _aa !=nil {return nil ,_aa ;};_ec ,_aa :=_bg .Root ();if _aa !=nil {return nil ,_aa ;};_gf ,_ggb :=_cec .GetArray (_ec .Get ("\u0046\u0069\u0065\u006c\u0064\u0073"));if !_ggb {return nil ,_g .New ("\u0066\u0069\u0065\u006c\u0064\u0073\u0020\u006d\u0069s\u0073\u0069\u006e\u0067");};return &Data {_ea :_gf ,_fee :_ec },nil ;};
// LoadFromPath loads FDF form data from file path `fdfPath`.
func LoadFromPath (fdfPath string )(*Data ,error ){_d ,_fc :=_ac .Open (fdfPath );if _fc !=nil {return nil ,_fc ;};defer _d .Close ();return Load (_d );};func (_fbc *fdfParser )parseNull ()(_cec .PdfObjectNull ,error ){_ ,_efg :=_fbc ._ddg .Discard (4);return _cec .PdfObjectNull {},_efg ;};func (_cff *fdfParser )trace (_fcd _cec .PdfObject )_cec .PdfObject {switch _beg :=_fcd .(type ){case *_cec .PdfObjectReference :_efgd ,_cbba :=_cff ._aea [_beg .ObjectNumber ].(*_cec .PdfIndirectObject );if _cbba {return _efgd .PdfObject ;};_acg .Log .Debug ("\u0054\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");return nil ;case *_cec .PdfIndirectObject :return _beg .PdfObject ;};return _fcd ;};func (_fbd *fdfParser )parseBool ()(_cec .PdfObjectBool ,error ){_cfa ,_bded :=_fbd ._ddg .Peek (4);if _bded !=nil {return _cec .PdfObjectBool (false ),_bded ;};if (len (_cfa )>=4)&&(string (_cfa [:4])=="\u0074\u0072\u0075\u0065"){_fbd ._ddg .Discard (4);return _cec .PdfObjectBool (true ),nil ;};_cfa ,_bded =_fbd ._ddg .Peek (5);if _bded !=nil {return _cec .PdfObjectBool (false ),_bded ;};if (len (_cfa )>=5)&&(string (_cfa [:5])=="\u0066\u0061\u006cs\u0065"){_fbd ._ddg .Discard (5);return _cec .PdfObjectBool (false ),nil ;};return _cec .PdfObjectBool (false ),_g .New ("\u0075n\u0065\u0078\u0070\u0065c\u0074\u0065\u0064\u0020\u0062o\u006fl\u0065a\u006e\u0020\u0073\u0074\u0072\u0069\u006eg");};
// Root returns the Root of the FDF document.
func (_fdc *fdfParser )Root ()(*_cec .PdfObjectDictionary ,error ){if _fdc ._fac !=nil {if _bddd ,_bbg :=_fdc .trace (_fdc ._fac .Get ("\u0052\u006f\u006f\u0074")).(*_cec .PdfObjectDictionary );_bbg {if _gcb ,_bafcc :=_fdc .trace (_bddd .Get ("\u0046\u0044\u0046")).(*_cec .PdfObjectDictionary );_bafcc {return _gcb ,nil ;};};};var _ebgf []int64 ;for _bgd :=range _fdc ._aea {_ebgf =append (_ebgf ,_bgd );};_be .Slice (_ebgf ,func (_gagc ,_abce int )bool {return _ebgf [_gagc ]< _ebgf [_abce ]});for _ ,_cfg :=range _ebgf {_agd :=_fdc ._aea [_cfg ];if _fca ,_agbc :=_fdc .trace (_agd ).(*_cec .PdfObjectDictionary );_agbc {if _bbb ,_ccfg :=_fdc .trace (_fca .Get ("\u0046\u0044\u0046")).(*_cec .PdfObjectDictionary );_ccfg {return _bbb ,nil ;};};};return nil ,_g .New ("\u0046\u0044\u0046\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};func (_bac *fdfParser )parseObject ()(_cec .PdfObject ,error ){_acg .Log .Trace ("\u0052e\u0061d\u0020\u0064\u0069\u0072\u0065c\u0074\u0020o\u0062\u006a\u0065\u0063\u0074");_bac .skipSpaces ();for {_cfag ,_eda :=_bac ._ddg .Peek (2);if _eda !=nil {return nil ,_eda ;};_acg .Log .Trace ("\u0050e\u0065k\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_cfag ));if _cfag [0]=='/'{_aba ,_fdb :=_bac .parseName ();_acg .Log .Trace ("\u002d\u003e\u004ea\u006d\u0065\u003a\u0020\u0027\u0025\u0073\u0027",_aba );return &_aba ,_fdb ;}else if _cfag [0]=='('{_acg .Log .Trace ("\u002d>\u0053\u0074\u0072\u0069\u006e\u0067!");return _bac .parseString ();}else if _cfag [0]=='['{_acg .Log .Trace ("\u002d\u003e\u0041\u0072\u0072\u0061\u0079\u0021");return _bac .parseArray ();}else if (_cfag [0]=='<')&&(_cfag [1]=='<'){_acg .Log .Trace ("\u002d>\u0044\u0069\u0063\u0074\u0021");return _bac .parseDict ();}else if _cfag [0]=='<'{_acg .Log .Trace ("\u002d\u003e\u0048\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0021");return _bac .parseHexString ();}else if _cfag [0]=='%'{_bac .readComment ();_bac .skipSpaces ();}else {_acg .Log .Trace ("\u002d\u003eN\u0075\u006d\u0062e\u0072\u0020\u006f\u0072\u0020\u0072\u0065\u0066\u003f");_cfag ,_ =_bac ._ddg .Peek (15);_efea :=string (_cfag );_acg .Log .Trace ("\u0050\u0065\u0065k\u0020\u0073\u0074\u0072\u003a\u0020\u0025\u0073",_efea );if (len (_efea )> 3)&&(_efea [:4]=="\u006e\u0075\u006c\u006c"){_aff ,_ddga :=_bac .parseNull ();return &_aff ,_ddga ;}else if (len (_efea )> 4)&&(_efea [:5]=="\u0066\u0061\u006cs\u0065"){_dg ,_bgc :=_bac .parseBool ();return &_dg ,_bgc ;}else if (len (_efea )> 3)&&(_efea [:4]=="\u0074\u0072\u0075\u0065"){_fec ,_bbc :=_bac .parseBool ();return &_fec ,_bbc ;};_bge :=_cbb .FindStringSubmatch (string (_efea ));if len (_bge )> 1{_cfag ,_ =_bac ._ddg .ReadBytes ('R');_acg .Log .Trace ("\u002d\u003e\u0020\u0021\u0052\u0065\u0066\u003a\u0020\u0027\u0025\u0073\u0027",string (_cfag [:]));_bbcf ,_bc :=_cea (string (_cfag ));return &_bbcf ,_bc ;};_fbe :=_eecb .FindStringSubmatch (string (_efea ));if len (_fbe )> 1{_acg .Log .Trace ("\u002d\u003e\u0020\u004e\u0075\u006d\u0062\u0065\u0072\u0021");return _bac .parseNumber ();};_fbe =_ade .FindStringSubmatch (string (_efea ));if len (_fbe )> 1{_acg .Log .Trace ("\u002d\u003e\u0020\u0045xp\u006f\u006e\u0065\u006e\u0074\u0069\u0061\u006c\u0020\u004e\u0075\u006d\u0062\u0065r\u0021");_acg .Log .Trace ("\u0025\u0020\u0073",_fbe );return _bac .parseNumber ();};_acg .Log .Debug ("\u0045R\u0052\u004f\u0052\u0020U\u006e\u006b\u006e\u006f\u0077n\u0020(\u0070e\u0065\u006b\u0020\u0022\u0025\u0073\u0022)",_efea );return nil ,_g .New ("\u006f\u0062\u006a\u0065\u0063t\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0065\u0072\u0072\u006fr\u0020\u002d\u0020\u0075\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0070\u0061\u0074\u0074\u0065\u0072\u006e");};};};func _ceff (_aae string )(*fdfParser ,error ){_eecd :=fdfParser {};_ffb :=[]byte (_aae );_ebg :=_fe .NewReader (_ffb );_eecd ._cbd =_ebg ;_eecd ._aea =map[int64 ]_cec .PdfObject {};_abc :=_fa .NewReader (_ebg );_eecd ._ddg =_abc ;_eecd ._bfb =int64 (len (_aae ));return &_eecd ,_eecd .parse ();};func (_baca *fdfParser )seekToEOFMarker (_dad int64 )error {_acf :=int64 (0);_ggda :=int64 (1000);for _acf < _dad {if _dad <=(_ggda +_acf ){_ggda =_dad -_acf ;};_ ,_bdb :=_baca ._cbd .Seek (-_acf -_ggda ,_ce .SeekEnd );if _bdb !=nil {return _bdb ;};_addc :=make ([]byte ,_ggda );_baca ._cbd .Read (_addc );_acg .Log .Trace ("\u004c\u006f\u006f\u006bi\u006e\u0067\u0020\u0066\u006f\u0072\u0020\u0045\u004f\u0046 \u006da\u0072\u006b\u0065\u0072\u003a\u0020\u0022%\u0073\u0022",string (_addc ));_eff :=_daa .FindAllStringIndex (string (_addc ),-1);if _eff !=nil {_faac :=_eff [len (_eff )-1];_acg .Log .Trace ("\u0049\u006e\u0064\u003a\u0020\u0025\u0020\u0064",_eff );_baca ._cbd .Seek (-_acf -_ggda +int64 (_faac [0]),_ce .SeekEnd );return nil ;};_acg .Log .Debug ("\u0057\u0061\u0072\u006e\u0069\u006eg\u003a\u0020\u0045\u004f\u0046\u0020\u006d\u0061\u0072\u006b\u0065\u0072\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075n\u0064\u0021\u0020\u002d\u0020\u0063\u006f\u006e\u0074\u0069\u006e\u0075\u0065\u0020s\u0065e\u006b\u0069\u006e\u0067");_acf +=_ggda ;};_acg .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u003a\u0020\u0045\u004f\u0046\u0020\u006d\u0061\u0072\u006be\u0072 \u0077\u0061\u0073\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u002e");return _g .New ("\u0045\u004f\u0046\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};var _eecb =_f .MustCompile ("\u005e\u005b\u005c\u002b\u002d\u002e\u005d\u002a\u0028\u005b\u0030\u002d9\u002e\u005d\u002b\u0029");func (_daaa *fdfParser )skipComments ()error {if _ ,_ace :=_daaa .skipSpaces ();_ace !=nil {return _ace ;};_fdg :=true ;for {_gaa ,_fde :=_daaa ._ddg .Peek (1);if _fde !=nil {_acg .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_fde .Error ());return _fde ;};if _fdg &&_gaa [0]!='%'{return nil ;};_fdg =false ;if (_gaa [0]!='\r')&&(_gaa [0]!='\n'){_daaa ._ddg .ReadByte ();}else {break ;};};return _daaa .skipComments ();};func (_add *fdfParser )skipSpaces ()(int ,error ){_ef :=0;for {_gd ,_ab :=_add ._ddg .ReadByte ();if _ab !=nil {return 0,_ab ;};if _cec .IsWhiteSpace (_gd ){_ef ++;}else {_add ._ddg .UnreadByte ();break ;};};return _ef ,nil ;};func (_bafc *fdfParser )parseIndirectObject ()(_cec .PdfObject ,error ){_fecg :=_cec .PdfIndirectObject {};_acg .Log .Trace ("\u002dR\u0065a\u0064\u0020\u0069\u006e\u0064i\u0072\u0065c\u0074\u0020\u006f\u0062\u006a");_eeg ,_gag :=_bafc ._ddg .Peek (20);if _gag !=nil {_acg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0046\u0061\u0069\u006c\u0020\u0074\u006f\u0020r\u0065a\u0064\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a");return &_fecg ,_gag ;};_acg .Log .Trace ("\u0028\u0069\u006edi\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0020\u0070\u0065\u0065\u006b\u0020\u0022\u0025\u0073\u0022",string (_eeg ));_bbddc :=_cdd .FindStringSubmatchIndex (string (_eeg ));if len (_bbddc )< 6{_acg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0061\u0062l\u0065\u0020\u0074\u006f \u0066\u0069\u006e\u0064\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0073\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065\u0020\u0028\u0025\u0073\u0029",string (_eeg ));return &_fecg ,_g .New ("\u0075\u006e\u0061b\u006c\u0065\u0020\u0074\u006f\u0020\u0064\u0065\u0074\u0065\u0063\u0074\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020s\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065");};_bafc ._ddg .Discard (_bbddc [0]);_acg .Log .Trace ("O\u0066\u0066\u0073\u0065\u0074\u0073\u0020\u0025\u0020\u0064",_bbddc );_facg :=_bbddc [1]-_bbddc [0];_eed :=make ([]byte ,_facg );_ ,_gag =_bafc .readAtLeast (_eed ,_facg );if _gag !=nil {_acg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0075\u006e\u0061\u0062l\u0065\u0020\u0074\u006f\u0020\u0072\u0065\u0061\u0064\u0020-\u0020\u0025\u0073",_gag );return nil ,_gag ;};_acg .Log .Trace ("\u0074\u0065\u0078t\u006c\u0069\u006e\u0065\u003a\u0020\u0025\u0073",_eed );_abde :=_cdd .FindStringSubmatch (string (_eed ));if len (_abde )< 3{_acg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0061\u0062l\u0065\u0020\u0074\u006f \u0066\u0069\u006e\u0064\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0073\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065\u0020\u0028\u0025\u0073\u0029",string (_eed ));return &_fecg ,_g .New ("\u0075\u006e\u0061b\u006c\u0065\u0020\u0074\u006f\u0020\u0064\u0065\u0074\u0065\u0063\u0074\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020s\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065");};_gda ,_ :=_b .Atoi (_abde [1]);_gcf ,_ :=_b .Atoi (_abde [2]);_fecg .ObjectNumber =int64 (_gda );_fecg .GenerationNumber =int64 (_gcf );for {_egg ,_ada :=_bafc ._ddg .Peek (2);if _ada !=nil {return &_fecg ,_ada ;};_acg .Log .Trace ("I\u006ed\u002e\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_egg ),string (_egg ));if _cec .IsWhiteSpace (_egg [0]){_bafc .skipSpaces ();}else if _egg [0]=='%'{_bafc .skipComments ();}else if (_egg [0]=='<')&&(_egg [1]=='<'){_acg .Log .Trace ("\u0043\u0061\u006c\u006c\u0020\u0050\u0061\u0072\u0073e\u0044\u0069\u0063\u0074");_fecg .PdfObject ,_ada =_bafc .parseDict ();_acg .Log .Trace ("\u0045\u004f\u0046\u0020Ca\u006c\u006c\u0020\u0050\u0061\u0072\u0073\u0065\u0044\u0069\u0063\u0074\u003a\u0020%\u0076",_ada );if _ada !=nil {return &_fecg ,_ada ;};_acg .Log .Trace ("\u0050\u0061\u0072\u0073\u0065\u0064\u0020\u0064\u0069\u0063t\u0069\u006f\u006e\u0061\u0072\u0079\u002e.\u002e\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064\u002e");}else if (_egg [0]=='/')||(_egg [0]=='(')||(_egg [0]=='[')||(_egg [0]=='<'){_fecg .PdfObject ,_ada =_bafc .parseObject ();if _ada !=nil {return &_fecg ,_ada ;};_acg .Log .Trace ("P\u0061\u0072\u0073\u0065\u0064\u0020o\u0062\u006a\u0065\u0063\u0074\u0020\u002e\u002e\u002e \u0066\u0069\u006ei\u0073h\u0065\u0064\u002e");}else {if _egg [0]=='e'{_agb ,_dfc :=_bafc .readTextLine ();if _dfc !=nil {return nil ,_dfc ;};if len (_agb )>=6&&_agb [0:6]=="\u0065\u006e\u0064\u006f\u0062\u006a"{break ;};}else if _egg [0]=='s'{_egg ,_ =_bafc ._ddg .Peek (10);if string (_egg [:6])=="\u0073\u0074\u0072\u0065\u0061\u006d"{_aed :=6;if len (_egg )> 6{if _cec .IsWhiteSpace (_egg [_aed ])&&_egg [_aed ]!='\r'&&_egg [_aed ]!='\n'{_acg .Log .Debug ("\u004e\u006fn\u002d\u0063\u006f\u006e\u0066\u006f\u0072\u006d\u0061\u006e\u0074\u0020\u0046\u0044\u0046\u0020\u006e\u006f\u0074 \u0065\u006e\u0064\u0069\u006e\u0067 \u0073\u0074\u0072\u0065\u0061\u006d\u0020\u006c\u0069\u006e\u0065\u0020\u0070\u0072o\u0070\u0065r\u006c\u0079\u0020\u0077i\u0074\u0068\u0020\u0045\u004fL\u0020\u006d\u0061\u0072\u006b\u0065\u0072");_aed ++;};if _egg [_aed ]=='\r'{_aed ++;if _egg [_aed ]=='\n'{_aed ++;};}else if _egg [_aed ]=='\n'{_aed ++;};};_bafc ._ddg .Discard (_aed );_agg ,_dgd :=_fecg .PdfObject .(*_cec .PdfObjectDictionary );if !_dgd {return nil ,_g .New ("\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u006di\u0073s\u0069\u006e\u0067\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079");};_acg .Log .Trace ("\u0053\u0074\u0072\u0065\u0061\u006d\u0020\u0064\u0069c\u0074\u0020\u0025\u0073",_agg );_bdc ,_fcgd :=_agg .Get ("\u004c\u0065\u006e\u0067\u0074\u0068").(*_cec .PdfObjectInteger );if !_fcgd {return nil ,_g .New ("\u0073\u0074re\u0061\u006d\u0020l\u0065\u006e\u0067\u0074h n\u0065ed\u0073\u0020\u0074\u006f\u0020\u0062\u0065 a\u006e\u0020\u0069\u006e\u0074\u0065\u0067e\u0072");};_cdg :=*_bdc ;if _cdg < 0{return nil ,_g .New ("\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u006e\u0065\u0065\u0064\u0073\u0020\u0074\u006f \u0062e\u0020\u006c\u006f\u006e\u0067\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0030");};if int64 (_cdg )> _bafc ._bfb {_acg .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0053t\u0072\u0065\u0061\u006d\u0020l\u0065\u006e\u0067\u0074\u0068\u0020\u0063\u0061\u006e\u006e\u006f\u0074\u0020\u0062\u0065\u0020\u006c\u0061\u0072\u0067\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0066\u0069\u006c\u0065\u0020\u0073\u0069\u007a\u0065");return nil ,_g .New ("\u0069n\u0076\u0061l\u0069\u0064\u0020\u0073t\u0072\u0065\u0061m\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u002c\u0020la\u0072\u0067\u0065r\u0020\u0074h\u0061\u006e\u0020\u0066\u0069\u006ce\u0020\u0073i\u007a\u0065");};_ceaf :=make ([]byte ,_cdg );_ ,_ada =_bafc .readAtLeast (_ceaf ,int (_cdg ));if _ada !=nil {_acg .Log .Debug ("E\u0052\u0052\u004f\u0052 s\u0074r\u0065\u0061\u006d\u0020\u0028%\u0064\u0029\u003a\u0020\u0025\u0058",len (_ceaf ),_ceaf );_acg .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_ada );return nil ,_ada ;};_dfg :=_cec .PdfObjectStream {};_dfg .Stream =_ceaf ;_dfg .PdfObjectDictionary =_fecg .PdfObject .(*_cec .PdfObjectDictionary );_dfg .ObjectNumber =_fecg .ObjectNumber ;_dfg .GenerationNumber =_fecg .GenerationNumber ;_bafc .skipSpaces ();_bafc ._ddg .Discard (9);_bafc .skipSpaces ();return &_dfg ,nil ;};};_fecg .PdfObject ,_ada =_bafc .parseObject ();return &_fecg ,_ada ;};};_acg .Log .Trace ("\u0052\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0021");return &_fecg ,nil ;};func (_gec *fdfParser )parseHexString ()(*_cec .PdfObjectString ,error ){_gec ._ddg .ReadByte ();var _gdg _fe .Buffer ;for {_ag ,_db :=_gec ._ddg .Peek (1);if _db !=nil {return _cec .MakeHexString (""),_db ;};if _ag [0]=='>'{_gec ._ddg .ReadByte ();break ;};_bdee ,_ :=_gec ._ddg .ReadByte ();if !_cec .IsWhiteSpace (_bdee ){_gdg .WriteByte (_bdee );};};if _gdg .Len ()%2==1{_gdg .WriteRune ('0');};_dbb ,_bea :=_a .DecodeString (_gdg .String ());if _bea !=nil {_acg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u0020\u0050\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0068\u0065\u0078\u0020\u0073\u0074r\u0069\u006e\u0067\u003a\u0020\u0027\u0025\u0073\u0027 \u002d\u0020\u0072\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u0061n\u0020\u0065\u006d\u0070\u0074\u0079 \u0073\u0074\u0072i\u006e\u0067",_gdg .String ());return _cec .MakeHexString (""),nil ;};return _cec .MakeHexString (string (_dbb )),nil ;};func _cea (_cbbg string )(_cec .PdfObjectReference ,error ){_aaa :=_cec .PdfObjectReference {};_fdd :=_cbb .FindStringSubmatch (string (_cbbg ));if len (_fdd )< 3{_acg .Log .Debug ("\u0045\u0072\u0072or\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065");return _aaa ,_g .New ("\u0075n\u0061\u0062\u006c\u0065 \u0074\u006f\u0020\u0070\u0061r\u0073e\u0020r\u0065\u0066\u0065\u0072\u0065\u006e\u0063e");};_fbb ,_fgg :=_b .Atoi (_fdd [1]);if _fgg !=nil {_acg .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070a\u0072\u0073\u0069n\u0067\u0020\u006fb\u006a\u0065c\u0074\u0020\u006e\u0075\u006d\u0062e\u0072 '\u0025\u0073\u0027\u0020\u002d\u0020\u0055\u0073\u0069\u006e\u0067\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u006e\u0075\u006d\u0020\u003d\u0020\u0030",_fdd [1]);return _aaa ,nil ;};_aaa .ObjectNumber =int64 (_fbb );_beea ,_fgg :=_b .Atoi (_fdd [2]);if _fgg !=nil {_acg .Log .Debug ("\u0045\u0072r\u006f\u0072\u0020\u0070\u0061r\u0073\u0069\u006e\u0067\u0020g\u0065\u006e\u0065\u0072\u0061\u0074\u0069\u006f\u006e\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0027\u0025\u0073\u0027\u0020\u002d\u0020\u0055\u0073\u0069\u006e\u0067\u0020\u0067\u0065\u006e\u0020\u003d\u0020\u0030",_fdd [2]);return _aaa ,nil ;};_aaa .GenerationNumber =int64 (_beea );return _aaa ,nil ;};func (_dag *fdfParser )parseDict ()(*_cec .PdfObjectDictionary ,error ){_acg .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0046\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_eaf :=_cec .MakeDict ();_afa ,_ :=_dag ._ddg .ReadByte ();if _afa !='<'{return nil ,_g .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");};_afa ,_ =_dag ._ddg .ReadByte ();if _afa !='<'{return nil ,_g .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");};for {_dag .skipSpaces ();_dag .skipComments ();_cef ,_bbdd :=_dag ._ddg .Peek (2);if _bbdd !=nil {return nil ,_bbdd ;};_acg .Log .Trace ("D\u0069c\u0074\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_cef ),string (_cef ));if (_cef [0]=='>')&&(_cef [1]=='>'){_acg .Log .Trace ("\u0045\u004f\u0046\u0020\u0064\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079");_dag ._ddg .ReadByte ();_dag ._ddg .ReadByte ();break ;};_acg .Log .Trace ("\u0050a\u0072s\u0065\u0020\u0074\u0068\u0065\u0020\u006e\u0061\u006d\u0065\u0021");_fded ,_bbdd :=_dag .parseName ();_acg .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_fded );if _bbdd !=nil {_acg .Log .Debug ("E\u0052\u0052\u004f\u0052\u0020\u0052e\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u006ea\u006d\u0065\u0020e\u0072r\u0020\u0025\u0073",_bbdd );return nil ,_bbdd ;};if len (_fded )> 4&&_fded [len (_fded )-4:]=="\u006e\u0075\u006c\u006c"{_gabg :=_fded [0:len (_fded )-4];_acg .Log .Debug ("\u0054\u0061\u006b\u0069n\u0067\u0020\u0063\u0061\u0072\u0065\u0020\u006f\u0066\u0020n\u0075l\u006c\u0020\u0062\u0075\u0067\u0020\u0028%\u0073\u0029",_fded );_acg .Log .Debug ("\u004e\u0065\u0077\u0020ke\u0079\u0020\u0022\u0025\u0073\u0022\u0020\u003d\u0020\u006e\u0075\u006c\u006c",_gabg );_dag .skipSpaces ();_fbec ,_ :=_dag ._ddg .Peek (1);if _fbec [0]=='/'{_eaf .Set (_gabg ,_cec .MakeNull ());continue ;};};_dag .skipSpaces ();_aac ,_bbdd :=_dag .parseObject ();if _bbdd !=nil {return nil ,_bbdd ;};_eaf .Set (_fded ,_aac );_acg .Log .Trace ("\u0064\u0069\u0063\u0074\u005b\u0025\u0073\u005d\u0020\u003d\u0020\u0025\u0073",_fded ,_aac .String ());};_acg .Log .Trace ("\u0072\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0046\u0044\u0046\u0020\u0044\u0069\u0063\u0074\u0021");return _eaf ,nil ;};func (_feed *fdfParser )seekFdfVersionTopDown ()(int ,int ,error ){_feed ._cbd .Seek (0,_ce .SeekStart );_feed ._ddg =_fa .NewReader (_feed ._cbd );_cba :=20;_gdb :=make ([]byte ,_cba );for {_cae ,_agbcf :=_feed ._ddg .ReadByte ();if _agbcf !=nil {if _agbcf ==_ce .EOF {break ;}else {return 0,0,_agbcf ;};};if _cec .IsDecimalDigit (_cae )&&_gdb [_cba -1]=='.'&&_cec .IsDecimalDigit (_gdb [_cba -2])&&_gdb [_cba -3]=='-'&&_gdb [_cba -4]=='F'&&_gdb [_cba -5]=='D'&&_gdb [_cba -6]=='P'{_bacd :=int (_gdb [_cba -2]-'0');_eabd :=int (_cae -'0');return _bacd ,_eabd ,nil ;};_gdb =append (_gdb [1:_cba ],_cae );};return 0,0,_g .New ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};func (_fb *fdfParser )parseString ()(*_cec .PdfObjectString ,error ){_fb ._ddg .ReadByte ();var _dac _fe .Buffer ;_aec :=1;for {_gfd ,_ge :=_fb ._ddg .Peek (1);if _ge !=nil {return _cec .MakeString (_dac .String ()),_ge ;};if _gfd [0]=='\\'{_fb ._ddg .ReadByte ();_ecd ,_ccf :=_fb ._ddg .ReadByte ();if _ccf !=nil {return _cec .MakeString (_dac .String ()),_ccf ;};if _cec .IsOctalDigit (_ecd ){_cdc ,_ecb :=_fb ._ddg .Peek (2);if _ecb !=nil {return _cec .MakeString (_dac .String ()),_ecb ;};var _dacg []byte ;_dacg =append (_dacg ,_ecd );for _ ,_bfca :=range _cdc {if _cec .IsOctalDigit (_bfca ){_dacg =append (_dacg ,_bfca );}else {break ;};};_fb ._ddg .Discard (len (_dacg )-1);_acg .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_dacg );_ede ,_ecb :=_b .ParseUint (string (_dacg ),8,32);if _ecb !=nil {return _cec .MakeString (_dac .String ()),_ecb ;};_dac .WriteByte (byte (_ede ));continue ;};switch _ecd {case 'n':_dac .WriteRune ('\n');case 'r':_dac .WriteRune ('\r');case 't':_dac .WriteRune ('\t');case 'b':_dac .WriteRune ('\b');case 'f':_dac .WriteRune ('\f');case '(':_dac .WriteRune ('(');case ')':_dac .WriteRune (')');case '\\':_dac .WriteRune ('\\');};continue ;}else if _gfd [0]=='('{_aec ++;}else if _gfd [0]==')'{_aec --;if _aec ==0{_fb ._ddg .ReadByte ();break ;};};_fg ,_ :=_fb ._ddg .ReadByte ();_dac .WriteByte (_fg );};return _cec .MakeString (_dac .String ()),nil ;};func (_bgg *fdfParser )readComment ()(string ,error ){var _gff _fe .Buffer ;_ ,_gca :=_bgg .skipSpaces ();if _gca !=nil {return _gff .String (),_gca ;};_ca :=true ;for {_cdaf ,_aceb :=_bgg ._ddg .Peek (1);if _aceb !=nil {_acg .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_aceb .Error ());return _gff .String (),_aceb ;};if _ca &&_cdaf [0]!='%'{return _gff .String (),_g .New ("c\u006f\u006d\u006d\u0065\u006e\u0074 \u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0073\u0074a\u0072\u0074\u0020w\u0069t\u0068\u0020\u0025");};_ca =false ;if (_cdaf [0]!='\r')&&(_cdaf [0]!='\n'){_bfbd ,_ :=_bgg ._ddg .ReadByte ();_gff .WriteByte (_bfbd );}else {break ;};};return _gff .String (),nil ;};
// Data represents forms data format (FDF) file data.
type Data struct{_fee *_cec .PdfObjectDictionary ;_ea *_cec .PdfObjectArray ;};