unipdf/fdf/fdf.go
2020-10-12 14:17:59 +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 (_cc "bufio";_aa "bytes";_cd "encoding/hex";_e "errors";_d "fmt";_ceg "github.com/unidoc/unipdf/v3/common";_cac "github.com/unidoc/unipdf/v3/core";_ee "io";_ca "os";_ae "regexp";_cb "sort";_a "strconv";_ce "strings";);var _cfb =_ae .MustCompile ("\u0025F\u0044F\u002d\u0028\u005c\u0064\u0029\u005c\u002e\u0028\u005c\u0064\u0029");func (_baa *fdfParser )setFileOffset (_ff int64 ){_baa ._ge .Seek (_ff ,_ee .SeekStart );_baa ._dac =_cc .NewReader (_baa ._ge );};func (_fcb *fdfParser )parseBool ()(_cac .PdfObjectBool ,error ){_adb ,_feb :=_fcb ._dac .Peek (4);if _feb !=nil {return _cac .PdfObjectBool (false ),_feb ;};if (len (_adb )>=4)&&(string (_adb [:4])=="\u0074\u0072\u0075\u0065"){_fcb ._dac .Discard (4);return _cac .PdfObjectBool (true ),nil ;};_adb ,_feb =_fcb ._dac .Peek (5);if _feb !=nil {return _cac .PdfObjectBool (false ),_feb ;};if (len (_adb )>=5)&&(string (_adb [:5])=="\u0066\u0061\u006cs\u0065"){_fcb ._dac .Discard (5);return _cac .PdfObjectBool (false ),nil ;};return _cac .PdfObjectBool (false ),_e .New ("\u0075n\u0065\u0078\u0070\u0065c\u0074\u0065\u0064\u0020\u0062o\u006fl\u0065a\u006e\u0020\u0073\u0074\u0072\u0069\u006eg");};
// FieldValues implements interface model.FieldValueProvider.
// Returns a map of field names to values (PdfObjects).
func (fdf *Data )FieldValues ()(map[string ]_cac .PdfObject ,error ){_cea ,_da :=fdf .FieldDictionaries ();if _da !=nil {return nil ,_da ;};var _add []string ;for _fa :=range _cea {_add =append (_add ,_fa );};_cb .Strings (_add );_fc :=map[string ]_cac .PdfObject {};for _ ,_dce :=range _add {_fb :=_cea [_dce ];_agf :=_cac .TraceToDirectObject (_fb .Get ("\u0056"));_fc [_dce ]=_agf ;};return _fc ,nil ;};func (_cgf *fdfParser )parseNumber ()(_cac .PdfObject ,error ){return _cac .ParseNumber (_cgf ._dac )};func (_ceag *fdfParser )parseNull ()(_cac .PdfObjectNull ,error ){_ ,_ccc :=_ceag ._dac .Discard (4);return _cac .PdfObjectNull {},_ccc ;};func (_egg *fdfParser )parseName ()(_cac .PdfObjectName ,error ){var _cfe _aa .Buffer ;_acd :=false ;for {_gec ,_ffg :=_egg ._dac .Peek (1);if _ffg ==_ee .EOF {break ;};if _ffg !=nil {return _cac .PdfObjectName (_cfe .String ()),_ffg ;};if !_acd {if _gec [0]=='/'{_acd =true ;_egg ._dac .ReadByte ();}else if _gec [0]=='%'{_egg .readComment ();_egg .skipSpaces ();}else {_ceg .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",_gec ,_gec );return _cac .PdfObjectName (_cfe .String ()),_d .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_gec [0]);};}else {if _cac .IsWhiteSpace (_gec [0]){break ;}else if (_gec [0]=='/')||(_gec [0]=='[')||(_gec [0]=='(')||(_gec [0]==']')||(_gec [0]=='<')||(_gec [0]=='>'){break ;}else if _gec [0]=='#'{_dgd ,_dgda :=_egg ._dac .Peek (3);if _dgda !=nil {return _cac .PdfObjectName (_cfe .String ()),_dgda ;};_egg ._dac .Discard (3);_cge ,_dgda :=_cd .DecodeString (string (_dgd [1:3]));if _dgda !=nil {return _cac .PdfObjectName (_cfe .String ()),_dgda ;};_cfe .Write (_cge );}else {_eac ,_ :=_egg ._dac .ReadByte ();_cfe .WriteByte (_eac );};};};return _cac .PdfObjectName (_cfe .String ()),nil ;};var _afb =_ae .MustCompile ("\u005e\u005b\u005c\u002b\u002d\u002e\u005d\u002a\u0028\u005b\u0030\u002d9\u002e\u005d\u002b\u0029");func (_gad *fdfParser )readComment ()(string ,error ){var _fcf _aa .Buffer ;_ ,_dcd :=_gad .skipSpaces ();if _dcd !=nil {return _fcf .String (),_dcd ;};_fgd :=true ;for {_afc ,_df :=_gad ._dac .Peek (1);if _df !=nil {_ceg .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_df .Error ());return _fcf .String (),_df ;};if _fgd &&_afc [0]!='%'{return _fcf .String (),_e .New ("c\u006f\u006d\u006d\u0065\u006e\u0074 \u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0073\u0074a\u0072\u0074\u0020w\u0069t\u0068\u0020\u0025");};_fgd =false ;if (_afc [0]!='\r')&&(_afc [0]!='\n'){_dd ,_ :=_gad ._dac .ReadByte ();_fcf .WriteByte (_dd );}else {break ;};};return _fcf .String (),nil ;};func (_fedc *fdfParser )parse ()error {_fedc ._ge .Seek (0,_ee .SeekStart );_fedc ._dac =_cc .NewReader (_fedc ._ge );for {_fedc .skipComments ();_caa ,_geb :=_fedc ._dac .Peek (20);if _geb !=nil {_ceg .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 _geb ;};if _ce .HasPrefix (string (_caa ),"\u0074r\u0061\u0069\u006c\u0065\u0072"){_fedc ._dac .Discard (7);_fedc .skipSpaces ();_fedc .skipComments ();_eab ,_ :=_fedc .parseDict ();_fedc ._bf =_eab ;break ;};_bdf :=_cgb .FindStringSubmatchIndex (string (_caa ));if len (_bdf )< 6{_ceg .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 (_caa ));return _e .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");};_gdc ,_geb :=_fedc .parseIndirectObject ();if _geb !=nil {return _geb ;};switch _ecg :=_gdc .(type ){case *_cac .PdfIndirectObject :_fedc ._gg [_ecg .ObjectNumber ]=_ecg ;case *_cac .PdfObjectStream :_fedc ._gg [_ecg .ObjectNumber ]=_ecg ;default:return _e .New ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};};return nil ;};func (_gd *fdfParser )getFileOffset ()int64 {_ccf ,_ :=_gd ._ge .Seek (0,_ee .SeekCurrent );_ccf -=int64 (_gd ._dac .Buffered ());return _ccf ;};var _cbb =_ae .MustCompile ("\u0025\u0025\u0045O\u0046");func (_bba *fdfParser )parseIndirectObject ()(_cac .PdfObject ,error ){_bbac :=_cac .PdfIndirectObject {};_ceg .Log .Trace ("\u002dR\u0065a\u0064\u0020\u0069\u006e\u0064i\u0072\u0065c\u0074\u0020\u006f\u0062\u006a");_gag ,_bg :=_bba ._dac .Peek (20);if _bg !=nil {_ceg .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 &_bbac ,_bg ;};_ceg .Log .Trace ("\u0028\u0069\u006edi\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0020\u0070\u0065\u0065\u006b\u0020\u0022\u0025\u0073\u0022",string (_gag ));_fee :=_cgb .FindStringSubmatchIndex (string (_gag ));if len (_fee )< 6{_ceg .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 (_gag ));return &_bbac ,_e .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");};_bba ._dac .Discard (_fee [0]);_ceg .Log .Trace ("O\u0066\u0066\u0073\u0065\u0074\u0073\u0020\u0025\u0020\u0064",_fee );_gba :=_fee [1]-_fee [0];_afdd :=make ([]byte ,_gba );_ ,_bg =_bba .readAtLeast (_afdd ,_gba );if _bg !=nil {_ceg .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",_bg );return nil ,_bg ;};_ceg .Log .Trace ("\u0074\u0065\u0078t\u006c\u0069\u006e\u0065\u003a\u0020\u0025\u0073",_afdd );_bbe :=_cgb .FindStringSubmatch (string (_afdd ));if len (_bbe )< 3{_ceg .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 (_afdd ));return &_bbac ,_e .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");};_acdd ,_ :=_a .Atoi (_bbe [1]);_cee ,_ :=_a .Atoi (_bbe [2]);_bbac .ObjectNumber =int64 (_acdd );_bbac .GenerationNumber =int64 (_cee );for {_eggc ,_ddd :=_bba ._dac .Peek (2);if _ddd !=nil {return &_bbac ,_ddd ;};_ceg .Log .Trace ("I\u006ed\u002e\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_eggc ),string (_eggc ));if _cac .IsWhiteSpace (_eggc [0]){_bba .skipSpaces ();}else if _eggc [0]=='%'{_bba .skipComments ();}else if (_eggc [0]=='<')&&(_eggc [1]=='<'){_ceg .Log .Trace ("\u0043\u0061\u006c\u006c\u0020\u0050\u0061\u0072\u0073e\u0044\u0069\u0063\u0074");_bbac .PdfObject ,_ddd =_bba .parseDict ();_ceg .Log .Trace ("\u0045\u004f\u0046\u0020Ca\u006c\u006c\u0020\u0050\u0061\u0072\u0073\u0065\u0044\u0069\u0063\u0074\u003a\u0020%\u0076",_ddd );if _ddd !=nil {return &_bbac ,_ddd ;};_ceg .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 (_eggc [0]=='/')||(_eggc [0]=='(')||(_eggc [0]=='[')||(_eggc [0]=='<'){_bbac .PdfObject ,_ddd =_bba .parseObject ();if _ddd !=nil {return &_bbac ,_ddd ;};_ceg .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 _eggc [0]=='e'{_ffca ,_edac :=_bba .readTextLine ();if _edac !=nil {return nil ,_edac ;};if len (_ffca )>=6&&_ffca [0:6]=="\u0065\u006e\u0064\u006f\u0062\u006a"{break ;};}else if _eggc [0]=='s'{_eggc ,_ =_bba ._dac .Peek (10);if string (_eggc [:6])=="\u0073\u0074\u0072\u0065\u0061\u006d"{_fgdb :=6;if len (_eggc )> 6{if _cac .IsWhiteSpace (_eggc [_fgdb ])&&_eggc [_fgdb ]!='\r'&&_eggc [_fgdb ]!='\n'{_ceg .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");_fgdb ++;};if _eggc [_fgdb ]=='\r'{_fgdb ++;if _eggc [_fgdb ]=='\n'{_fgdb ++;};}else if _eggc [_fgdb ]=='\n'{_fgdb ++;};};_bba ._dac .Discard (_fgdb );_gda ,_aae :=_bbac .PdfObject .(*_cac .PdfObjectDictionary );if !_aae {return nil ,_e .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");};_ceg .Log .Trace ("\u0053\u0074\u0072\u0065\u0061\u006d\u0020\u0064\u0069c\u0074\u0020\u0025\u0073",_gda );_dddd ,_fed :=_gda .Get ("\u004c\u0065\u006e\u0067\u0074\u0068").(*_cac .PdfObjectInteger );if !_fed {return nil ,_e .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");};_edef :=*_dddd ;if _edef < 0{return nil ,_e .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 (_edef )> _bba ._cba {_ceg .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 ,_e .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");};_gcb :=make ([]byte ,_edef );_ ,_ddd =_bba .readAtLeast (_gcb ,int (_edef ));if _ddd !=nil {_ceg .Log .Debug ("E\u0052\u0052\u004f\u0052 s\u0074r\u0065\u0061\u006d\u0020\u0028%\u0064\u0029\u003a\u0020\u0025\u0058",len (_gcb ),_gcb );_ceg .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_ddd );return nil ,_ddd ;};_daa :=_cac .PdfObjectStream {};_daa .Stream =_gcb ;_daa .PdfObjectDictionary =_bbac .PdfObject .(*_cac .PdfObjectDictionary );_daa .ObjectNumber =_bbac .ObjectNumber ;_daa .GenerationNumber =_bbac .GenerationNumber ;_bba .skipSpaces ();_bba ._dac .Discard (9);_bba .skipSpaces ();return &_daa ,nil ;};};_bbac .PdfObject ,_ddd =_bba .parseObject ();return &_bbac ,_ddd ;};};_ceg .Log .Trace ("\u0052\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0021");return &_bbac ,nil ;};
// LoadFromPath loads FDF form data from file path `fdfPath`.
func LoadFromPath (fdfPath string )(*Data ,error ){_g ,_eg :=_ca .Open (fdfPath );if _eg !=nil {return nil ,_eg ;};defer _g .Close ();return Load (_g );};
// Load loads FDF form data from `r`.
func Load (r _ee .ReadSeeker )(*Data ,error ){_ad ,_bd :=_gada (r );if _bd !=nil {return nil ,_bd ;};_ba ,_bd :=_ad .Root ();if _bd !=nil {return nil ,_bd ;};_bda ,_aea :=_cac .GetArray (_ba .Get ("\u0046\u0069\u0065\u006c\u0064\u0073"));if !_aea {return nil ,_e .New ("\u0066\u0069\u0065\u006c\u0064\u0073\u0020\u006d\u0069s\u0073\u0069\u006e\u0067");};return &Data {_b :_bda ,_f :_ba },nil ;};func (_cdg *fdfParser )skipComments ()error {if _ ,_afa :=_cdg .skipSpaces ();_afa !=nil {return _afa ;};_agc :=true ;for {_caf ,_afe :=_cdg ._dac .Peek (1);if _afe !=nil {_ceg .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_afe .Error ());return _afe ;};if _agc &&_caf [0]!='%'{return nil ;};_agc =false ;if (_caf [0]!='\r')&&(_caf [0]!='\n'){_cdg ._dac .ReadByte ();}else {break ;};};return _cdg .skipComments ();};func (_dee *fdfParser )parseObject ()(_cac .PdfObject ,error ){_ceg .Log .Trace ("\u0052e\u0061d\u0020\u0064\u0069\u0072\u0065c\u0074\u0020o\u0062\u006a\u0065\u0063\u0074");_dee .skipSpaces ();for {_fbc ,_aba :=_dee ._dac .Peek (2);if _aba !=nil {return nil ,_aba ;};_ceg .Log .Trace ("\u0050e\u0065k\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_fbc ));if _fbc [0]=='/'{_ece ,_eacd :=_dee .parseName ();_ceg .Log .Trace ("\u002d\u003e\u004ea\u006d\u0065\u003a\u0020\u0027\u0025\u0073\u0027",_ece );return &_ece ,_eacd ;}else if _fbc [0]=='('{_ceg .Log .Trace ("\u002d>\u0053\u0074\u0072\u0069\u006e\u0067!");return _dee .parseString ();}else if _fbc [0]=='['{_ceg .Log .Trace ("\u002d\u003e\u0041\u0072\u0072\u0061\u0079\u0021");return _dee .parseArray ();}else if (_fbc [0]=='<')&&(_fbc [1]=='<'){_ceg .Log .Trace ("\u002d>\u0044\u0069\u0063\u0074\u0021");return _dee .parseDict ();}else if _fbc [0]=='<'{_ceg .Log .Trace ("\u002d\u003e\u0048\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0021");return _dee .parseHexString ();}else if _fbc [0]=='%'{_dee .readComment ();_dee .skipSpaces ();}else {_ceg .Log .Trace ("\u002d\u003eN\u0075\u006d\u0062e\u0072\u0020\u006f\u0072\u0020\u0072\u0065\u0066\u003f");_fbc ,_ =_dee ._dac .Peek (15);_aec :=string (_fbc );_ceg .Log .Trace ("\u0050\u0065\u0065k\u0020\u0073\u0074\u0072\u003a\u0020\u0025\u0073",_aec );if (len (_aec )> 3)&&(_aec [:4]=="\u006e\u0075\u006c\u006c"){_bed ,_caee :=_dee .parseNull ();return &_bed ,_caee ;}else if (len (_aec )> 4)&&(_aec [:5]=="\u0066\u0061\u006cs\u0065"){_gb ,_aga :=_dee .parseBool ();return &_gb ,_aga ;}else if (len (_aec )> 3)&&(_aec [:4]=="\u0074\u0072\u0075\u0065"){_cbe ,_cfg :=_dee .parseBool ();return &_cbe ,_cfg ;};_gce :=_eae .FindStringSubmatch (string (_aec ));if len (_gce )> 1{_fbc ,_ =_dee ._dac .ReadBytes ('R');_ceg .Log .Trace ("\u002d\u003e\u0020\u0021\u0052\u0065\u0066\u003a\u0020\u0027\u0025\u0073\u0027",string (_fbc [:]));_dfbd ,_bca :=_cegg (string (_fbc ));return &_dfbd ,_bca ;};_dfg :=_afb .FindStringSubmatch (string (_aec ));if len (_dfg )> 1{_ceg .Log .Trace ("\u002d\u003e\u0020\u004e\u0075\u006d\u0062\u0065\u0072\u0021");return _dee .parseNumber ();};_dfg =_ed .FindStringSubmatch (string (_aec ));if len (_dfg )> 1{_ceg .Log .Trace ("\u002d\u003e\u0020\u0045xp\u006f\u006e\u0065\u006e\u0074\u0069\u0061\u006c\u0020\u004e\u0075\u006d\u0062\u0065r\u0021");_ceg .Log .Trace ("\u0025\u0020\u0073",_dfg );return _dee .parseNumber ();};_ceg .Log .Debug ("\u0045R\u0052\u004f\u0052\u0020U\u006e\u006b\u006e\u006f\u0077n\u0020(\u0070e\u0065\u006b\u0020\u0022\u0025\u0073\u0022)",_aec );return nil ,_e .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 (_bae *fdfParser )parseString ()(*_cac .PdfObjectString ,error ){_bae ._dac .ReadByte ();var _ddf _aa .Buffer ;_cdb :=1;for {_gadg ,_bcg :=_bae ._dac .Peek (1);if _bcg !=nil {return _cac .MakeString (_ddf .String ()),_bcg ;};if _gadg [0]=='\\'{_bae ._dac .ReadByte ();_cdd ,_ccd :=_bae ._dac .ReadByte ();if _ccd !=nil {return _cac .MakeString (_ddf .String ()),_ccd ;};if _cac .IsOctalDigit (_cdd ){_aef ,_fgg :=_bae ._dac .Peek (2);if _fgg !=nil {return _cac .MakeString (_ddf .String ()),_fgg ;};var _bb []byte ;_bb =append (_bb ,_cdd );for _ ,_ef :=range _aef {if _cac .IsOctalDigit (_ef ){_bb =append (_bb ,_ef );}else {break ;};};_bae ._dac .Discard (len (_bb )-1);_ceg .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_bb );_de ,_fgg :=_a .ParseUint (string (_bb ),8,32);if _fgg !=nil {return _cac .MakeString (_ddf .String ()),_fgg ;};_ddf .WriteByte (byte (_de ));continue ;};switch _cdd {case 'n':_ddf .WriteRune ('\n');case 'r':_ddf .WriteRune ('\r');case 't':_ddf .WriteRune ('\t');case 'b':_ddf .WriteRune ('\b');case 'f':_ddf .WriteRune ('\f');case '(':_ddf .WriteRune ('(');case ')':_ddf .WriteRune (')');case '\\':_ddf .WriteRune ('\\');};continue ;}else if _gadg [0]=='('{_cdb ++;}else if _gadg [0]==')'{_cdb --;if _cdb ==0{_bae ._dac .ReadByte ();break ;};};_gdb ,_ :=_bae ._dac .ReadByte ();_ddf .WriteByte (_gdb );};return _cac .MakeString (_ddf .String ()),nil ;};func (_dad *fdfParser )readAtLeast (_dg []byte ,_cfd int )(int ,error ){_agd :=_cfd ;_eca :=0;_bc :=0;for _agd > 0{_ea ,_cg :=_dad ._dac .Read (_dg [_eca :]);if _cg !=nil {_ceg .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",_ea ,_bc ,_cg .Error ());return _eca ,_e .New ("\u0066\u0061\u0069\u006c\u0065\u0064\u0020\u0072\u0065a\u0064\u0069\u006e\u0067");};_bc ++;_eca +=_ea ;_agd -=_ea ;};return _eca ,nil ;};type fdfParser struct{_fba int ;_cga int ;_gg map[int64 ]_cac .PdfObject ;_ge _ee .ReadSeeker ;_dac *_cc .Reader ;_cba int64 ;_bf *_cac .PdfObjectDictionary ;};var _cgb =_ae .MustCompile ("\u0028\u005c\u0064\u002b)\\\u0073\u002b\u0028\u005c\u0064\u002b\u0029\u005c\u0073\u002b\u006f\u0062\u006a");func (_cged *fdfParser )parseArray ()(*_cac .PdfObjectArray ,error ){_fceb :=_cac .MakeArray ();_cged ._dac .ReadByte ();for {_cged .skipSpaces ();_cae ,_aaa :=_cged ._dac .Peek (1);if _aaa !=nil {return _fceb ,_aaa ;};if _cae [0]==']'{_cged ._dac .ReadByte ();break ;};_eea ,_aaa :=_cged .parseObject ();if _aaa !=nil {return _fceb ,_aaa ;};_fceb .Append (_eea );};return _fceb ,nil ;};func _gada (_ecaf _ee .ReadSeeker )(*fdfParser ,error ){_cfag :=&fdfParser {};_cfag ._ge =_ecaf ;_cfag ._gg =map[int64 ]_cac .PdfObject {};_edd ,_gdad ,_ffd :=_cfag .parseFdfVersion ();if _ffd !=nil {_ceg .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",_ffd );return nil ,_ffd ;};_cfag ._fba =_edd ;_cfag ._cga =_gdad ;_ffd =_cfag .parse ();return _cfag ,_ffd ;};func (_ab *fdfParser )readTextLine ()(string ,error ){var _fbg _aa .Buffer ;for {_ede ,_ggc :=_ab ._dac .Peek (1);if _ggc !=nil {_ceg .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_ggc .Error ());return _fbg .String (),_ggc ;};if (_ede [0]!='\r')&&(_ede [0]!='\n'){_bcc ,_ :=_ab ._dac .ReadByte ();_fbg .WriteByte (_bcc );}else {break ;};};return _fbg .String (),nil ;};var _ed =_ae .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 (_ffdd *fdfParser )seekFdfVersionTopDown ()(int ,int ,error ){_ffdd ._ge .Seek (0,_ee .SeekStart );_ffdd ._dac =_cc .NewReader (_ffdd ._ge );_cgc :=20;_gca :=make ([]byte ,_cgc );for {_eff ,_ccb :=_ffdd ._dac .ReadByte ();if _ccb !=nil {if _ccb ==_ee .EOF {break ;}else {return 0,0,_ccb ;};};if _cac .IsDecimalDigit (_eff )&&_gca [_cgc -1]=='.'&&_cac .IsDecimalDigit (_gca [_cgc -2])&&_gca [_cgc -3]=='-'&&_gca [_cgc -4]=='F'&&_gca [_cgc -5]=='D'&&_gca [_cgc -6]=='P'{_gbfa :=int (_gca [_cgc -2]-'0');_ebc :=int (_eff -'0');return _gbfa ,_ebc ,nil ;};_gca =append (_gca [1:_cgc ],_eff );};return 0,0,_e .New ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};func (_egb *fdfParser )seekToEOFMarker (_ffc int64 )error {_agg :=int64 (0);_fad :=int64 (1000);for _agg < _ffc {if _ffc <=(_fad +_agg ){_fad =_ffc -_agg ;};_ ,_dfd :=_egb ._ge .Seek (-_agg -_fad ,_ee .SeekEnd );if _dfd !=nil {return _dfd ;};_bbb :=make ([]byte ,_fad );_egb ._ge .Read (_bbb );_ceg .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 (_bbb ));_cdba :=_cbb .FindAllStringIndex (string (_bbb ),-1);if _cdba !=nil {_bcd :=_cdba [len (_cdba )-1];_ceg .Log .Trace ("\u0049\u006e\u0064\u003a\u0020\u0025\u0020\u0064",_cdba );_egb ._ge .Seek (-_agg -_fad +int64 (_bcd [0]),_ee .SeekEnd );return nil ;};_ceg .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");_agg +=_fad ;};_ceg .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 _e .New ("\u0045\u004f\u0046\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};func (_caeec *fdfParser )parseFdfVersion ()(int ,int ,error ){_caeec ._ge .Seek (0,_ee .SeekStart );_eecc :=20;_adgf :=make ([]byte ,_eecc );_caeec ._ge .Read (_adgf );_fef :=_cfb .FindStringSubmatch (string (_adgf ));if len (_fef )< 3{_gab ,_baf ,_bfe :=_caeec .seekFdfVersionTopDown ();if _bfe !=nil {_ceg .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,_bfe ;};return _gab ,_baf ,nil ;};_gbb ,_gge :=_a .Atoi (_fef [1]);if _gge !=nil {return 0,0,_gge ;};_eag ,_gge :=_a .Atoi (_fef [2]);if _gge !=nil {return 0,0,_gge ;};_ceg .Log .Debug ("\u0046\u0064\u0066\u0020\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020%\u0064\u002e\u0025\u0064",_gbb ,_eag );return int (_gbb ),int (_eag ),nil ;};func (_gc *fdfParser )skipSpaces ()(int ,error ){_cdf :=0;for {_cfa ,_cdc :=_gc ._dac .ReadByte ();if _cdc !=nil {return 0,_cdc ;};if _cac .IsWhiteSpace (_cfa ){_cdf ++;}else {_gc ._dac .UnreadByte ();break ;};};return _cdf ,nil ;};func (_be *fdfParser )parseHexString ()(*_cac .PdfObjectString ,error ){_be ._dac .ReadByte ();var _fbad _aa .Buffer ;for {_cgac ,_fea :=_be ._dac .Peek (1);if _fea !=nil {return _cac .MakeHexString (""),_fea ;};if _cgac [0]=='>'{_be ._dac .ReadByte ();break ;};_dfb ,_ :=_be ._dac .ReadByte ();if !_cac .IsWhiteSpace (_dfb ){_fbad .WriteByte (_dfb );};};if _fbad .Len ()%2==1{_fbad .WriteRune ('0');};_gcd ,_fec :=_cd .DecodeString (_fbad .String ());if _fec !=nil {_ceg .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",_fbad .String ());return _cac .MakeHexString (""),nil ;};return _cac .MakeHexString (string (_gcd )),nil ;};func (_fcc *fdfParser )trace (_cded _cac .PdfObject )_cac .PdfObject {switch _bce :=_cded .(type ){case *_cac .PdfObjectReference :_cacg ,_fggc :=_fcc ._gg [_bce .ObjectNumber ].(*_cac .PdfIndirectObject );if _fggc {return _cacg .PdfObject ;};_ceg .Log .Debug ("\u0054\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");return nil ;case *_cac .PdfIndirectObject :return _bce .PdfObject ;};return _cded ;};var _eae =_ae .MustCompile ("^\u005c\u0073\u002a\u0028\\d\u002b)\u005c\u0073\u002b\u0028\u005cd\u002b\u0029\u005c\u0073\u002b\u0052");func _cde (_fga string )(*fdfParser ,error ){_dgg :=fdfParser {};_deb :=[]byte (_fga );_dde :=_aa .NewReader (_deb );_dgg ._ge =_dde ;_dgg ._gg =map[int64 ]_cac .PdfObject {};_aeff :=_cc .NewReader (_dde );_dgg ._dac =_aeff ;_dgg ._cba =int64 (len (_fga ));return &_dgg ,_dgg .parse ();};
// FieldDictionaries returns a map of field names to field dictionaries.
func (fdf *Data )FieldDictionaries ()(map[string ]*_cac .PdfObjectDictionary ,error ){_dc :=map[string ]*_cac .PdfObjectDictionary {};for _eb :=0;_eb < fdf ._b .Len ();_eb ++{_cf ,_ga :=_cac .GetDict (fdf ._b .Get (_eb ));if _ga {_af ,_ :=_cac .GetString (_cf .Get ("\u0054"));if _af !=nil {_dc [_af .Str ()]=_cf ;};};};return _dc ,nil ;};
// Data represents forms data format (FDF) file data.
type Data struct{_f *_cac .PdfObjectDictionary ;_b *_cac .PdfObjectArray ;};
// Root returns the Root of the FDF document.
func (_gcf *fdfParser )Root ()(*_cac .PdfObjectDictionary ,error ){if _gcf ._bf !=nil {if _dcea ,_abg :=_gcf .trace (_gcf ._bf .Get ("\u0052\u006f\u006f\u0074")).(*_cac .PdfObjectDictionary );_abg {if _cgda ,_fece :=_gcf .trace (_dcea .Get ("\u0046\u0044\u0046")).(*_cac .PdfObjectDictionary );_fece {return _cgda ,nil ;};};};var _cegc []int64 ;for _egf :=range _gcf ._gg {_cegc =append (_cegc ,_egf );};_cb .Slice (_cegc ,func (_abd ,_gcba int )bool {return _cegc [_abd ]< _cegc [_gcba ]});for _ ,_gac :=range _cegc {_fgb :=_gcf ._gg [_gac ];if _dcg ,_bdb :=_gcf .trace (_fgb ).(*_cac .PdfObjectDictionary );_bdb {if _bff ,_gbf :=_gcf .trace (_dcg .Get ("\u0046\u0044\u0046")).(*_cac .PdfObjectDictionary );_gbf {return _bff ,nil ;};};};return nil ,_e .New ("\u0046\u0044\u0046\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};func (_adda *fdfParser )parseDict ()(*_cac .PdfObjectDictionary ,error ){_ceg .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0046\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_bdc :=_cac .MakeDict ();_eda ,_ :=_adda ._dac .ReadByte ();if _eda !='<'{return nil ,_e .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");};_eda ,_ =_adda ._dac .ReadByte ();if _eda !='<'{return nil ,_e .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");};for {_adda .skipSpaces ();_adda .skipComments ();_efa ,_bdg :=_adda ._dac .Peek (2);if _bdg !=nil {return nil ,_bdg ;};_ceg .Log .Trace ("D\u0069c\u0074\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_efa ),string (_efa ));if (_efa [0]=='>')&&(_efa [1]=='>'){_ceg .Log .Trace ("\u0045\u004f\u0046\u0020\u0064\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079");_adda ._dac .ReadByte ();_adda ._dac .ReadByte ();break ;};_ceg .Log .Trace ("\u0050a\u0072s\u0065\u0020\u0074\u0068\u0065\u0020\u006e\u0061\u006d\u0065\u0021");_cgd ,_bdg :=_adda .parseName ();_ceg .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_cgd );if _bdg !=nil {_ceg .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",_bdg );return nil ,_bdg ;};if len (_cgd )> 4&&_cgd [len (_cgd )-4:]=="\u006e\u0075\u006c\u006c"{_cbg :=_cgd [0:len (_cgd )-4];_ceg .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",_cgd );_ceg .Log .Debug ("\u004e\u0065\u0077\u0020ke\u0079\u0020\u0022\u0025\u0073\u0022\u0020\u003d\u0020\u006e\u0075\u006c\u006c",_cbg );_adda .skipSpaces ();_aeg ,_ :=_adda ._dac .Peek (1);if _aeg [0]=='/'{_bdc .Set (_cbg ,_cac .MakeNull ());continue ;};};_adda .skipSpaces ();_ggb ,_bdg :=_adda .parseObject ();if _bdg !=nil {return nil ,_bdg ;};_bdc .Set (_cgd ,_ggb );_ceg .Log .Trace ("\u0064\u0069\u0063\u0074\u005b\u0025\u0073\u005d\u0020\u003d\u0020\u0025\u0073",_cgd ,_ggb .String ());};_ceg .Log .Trace ("\u0072\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0046\u0044\u0046\u0020\u0044\u0069\u0063\u0074\u0021");return _bdc ,nil ;};func _cegg (_bfd string )(_cac .PdfObjectReference ,error ){_ffa :=_cac .PdfObjectReference {};_fggf :=_eae .FindStringSubmatch (string (_bfd ));if len (_fggf )< 3{_ceg .Log .Debug ("\u0045\u0072\u0072or\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065");return _ffa ,_e .New ("\u0075n\u0061\u0062\u006c\u0065 \u0074\u006f\u0020\u0070\u0061r\u0073e\u0020r\u0065\u0066\u0065\u0072\u0065\u006e\u0063e");};_gae ,_deg :=_a .Atoi (_fggf [1]);if _deg !=nil {_ceg .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",_fggf [1]);return _ffa ,nil ;};_ffa .ObjectNumber =int64 (_gae );_ffe ,_deg :=_a .Atoi (_fggf [2]);if _deg !=nil {_ceg .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",_fggf [2]);return _ffa ,nil ;};_ffa .GenerationNumber =int64 (_ffe );return _ffa ,nil ;};