aboutsummaryrefslogtreecommitdiff
path: root/unipdf/fdf
diff options
context:
space:
mode:
Diffstat (limited to 'unipdf/fdf')
-rw-r--r--unipdf/fdf/fdf.go125
1 files changed, 125 insertions, 0 deletions
diff --git a/unipdf/fdf/fdf.go b/unipdf/fdf/fdf.go
new file mode 100644
index 0000000..e6bb0c3
--- /dev/null
+++ b/unipdf/fdf/fdf.go
@@ -0,0 +1,125 @@
+//
+// 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 (_ea "bufio";_gb "bytes";_a "encoding/hex";_c "errors";_f "fmt";_ed "github.com/unidoc/unipdf/v4/common";_cb "github.com/unidoc/unipdf/v4/core";_cf "io";_d "os";_e "regexp";_ga "sort";_be "strconv";_g "strings";);func (_gae *fdfParser )parseIndirectObject ()(_cb .PdfObject ,error ){_ecbcf :=_cb .PdfIndirectObject {};
+_ed .Log .Trace ("\u002dR\u0065a\u0064\u0020\u0069\u006e\u0064i\u0072\u0065c\u0074\u0020\u006f\u0062\u006a");_ccaa ,_fbf :=_gae ._ba .Peek (20);if _fbf !=nil {_ed .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 &_ecbcf ,_fbf ;};_ed .Log .Trace ("\u0028\u0069\u006edi\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0020\u0070\u0065\u0065\u006b\u0020\u0022\u0025\u0073\u0022",string (_ccaa ));_aagf :=_gcd .FindStringSubmatchIndex (string (_ccaa ));if len (_aagf )< 6{_ed .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 (_ccaa ));
+return &_ecbcf ,_c .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");
+};_gae ._ba .Discard (_aagf [0]);_ed .Log .Trace ("O\u0066\u0066\u0073\u0065\u0074\u0073\u0020\u0025\u0020\u0064",_aagf );_gfg :=_aagf [1]-_aagf [0];_eae :=make ([]byte ,_gfg );_ ,_fbf =_gae .readAtLeast (_eae ,_gfg );if _fbf !=nil {_ed .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",_fbf );
+return nil ,_fbf ;};_ed .Log .Trace ("\u0074\u0065\u0078t\u006c\u0069\u006e\u0065\u003a\u0020\u0025\u0073",_eae );_bfc :=_gcd .FindStringSubmatch (string (_eae ));if len (_bfc )< 3{_ed .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 (_eae ));
+return &_ecbcf ,_c .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");
+};_egc ,_ :=_be .Atoi (_bfc [1]);_decg ,_ :=_be .Atoi (_bfc [2]);_ecbcf .ObjectNumber =int64 (_egc );_ecbcf .GenerationNumber =int64 (_decg );for {_ccag ,_bbc :=_gae ._ba .Peek (2);if _bbc !=nil {return &_ecbcf ,_bbc ;};_ed .Log .Trace ("I\u006ed\u002e\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_ccag ),string (_ccag ));
+if _cb .IsWhiteSpace (_ccag [0]){_gae .skipSpaces ();}else if _ccag [0]=='%'{_gae .skipComments ();}else if (_ccag [0]=='<')&&(_ccag [1]=='<'){_ed .Log .Trace ("\u0043\u0061\u006c\u006c\u0020\u0050\u0061\u0072\u0073e\u0044\u0069\u0063\u0074");_ecbcf .PdfObject ,_bbc =_gae .parseDict ();
+_ed .Log .Trace ("\u0045\u004f\u0046\u0020Ca\u006c\u006c\u0020\u0050\u0061\u0072\u0073\u0065\u0044\u0069\u0063\u0074\u003a\u0020%\u0076",_bbc );if _bbc !=nil {return &_ecbcf ,_bbc ;};_ed .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 (_ccag [0]=='/')||(_ccag [0]=='(')||(_ccag [0]=='[')||(_ccag [0]=='<'){_ecbcf .PdfObject ,_bbc =_gae .parseObject ();if _bbc !=nil {return &_ecbcf ,_bbc ;};_ed .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 _ccag [0]=='e'{_dece ,_gbc :=_gae .readTextLine ();if _gbc !=nil {return nil ,_gbc ;};if len (_dece )>=6&&_dece [0:6]=="\u0065\u006e\u0064\u006f\u0062\u006a"{break ;};}else if _ccag [0]=='s'{_ccag ,_ =_gae ._ba .Peek (10);if string (_ccag [:6])=="\u0073\u0074\u0072\u0065\u0061\u006d"{_ada :=6;
+if len (_ccag )> 6{if _cb .IsWhiteSpace (_ccag [_ada ])&&_ccag [_ada ]!='\r'&&_ccag [_ada ]!='\n'{_ed .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");
+_ada ++;};switch _ccag [_ada ]{case '\r':_ada ++;if _ccag [_ada ]=='\n'{_ada ++;};case '\n':_ada ++;};};_gae ._ba .Discard (_ada );_bbfc ,_bbbe :=_ecbcf .PdfObject .(*_cb .PdfObjectDictionary );if !_bbbe {return nil ,_c .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");
+};_ed .Log .Trace ("\u0053\u0074\u0072\u0065\u0061\u006d\u0020\u0064\u0069c\u0074\u0020\u0025\u0073",_bbfc );_efc ,_faf :=_bbfc .Get ("\u004c\u0065\u006e\u0067\u0074\u0068").(*_cb .PdfObjectInteger );if !_faf {return nil ,_c .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");
+};_cab :=*_efc ;if _cab < 0{return nil ,_c .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 (_cab )> _gae ._bc {_ed .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 ,_c .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");};_dfd :=make ([]byte ,_cab );
+_ ,_bbc =_gae .readAtLeast (_dfd ,int (_cab ));if _bbc !=nil {_ed .Log .Debug ("E\u0052\u0052\u004f\u0052 s\u0074r\u0065\u0061\u006d\u0020\u0028%\u0064\u0029\u003a\u0020\u0025\u0058",len (_dfd ),_dfd );_ed .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_bbc );
+return nil ,_bbc ;};_gbf :=_cb .PdfObjectStream {};_gbf .Stream =_dfd ;_gbf .PdfObjectDictionary =_ecbcf .PdfObject .(*_cb .PdfObjectDictionary );_gbf .ObjectNumber =_ecbcf .ObjectNumber ;_gbf .GenerationNumber =_ecbcf .GenerationNumber ;_gae .skipSpaces ();
+_gae ._ba .Discard (9);_gae .skipSpaces ();return &_gbf ,nil ;};};_ecbcf .PdfObject ,_bbc =_gae .parseObject ();return &_ecbcf ,_bbc ;};};_ed .Log .Trace ("\u0052\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0021");
+return &_ecbcf ,nil ;};
+
+// FieldDictionaries returns a map of field names to field dictionaries.
+func (fdf *Data )FieldDictionaries ()(map[string ]*_cb .PdfObjectDictionary ,error ){_edb :=map[string ]*_cb .PdfObjectDictionary {};for _edga :=0;_edga < fdf ._beg .Len ();_edga ++{_gg ,_af :=_cb .GetDict (fdf ._beg .Get (_edga ));if _af {_ce ,_ :=_cb .GetString (_gg .Get ("\u0054"));
+if _ce !=nil {_edb [_ce .Str ()]=_gg ;};};};return _edb ,nil ;};
+
+// Root returns the Root of the FDF document.
+func (_dab *fdfParser )Root ()(*_cb .PdfObjectDictionary ,error ){if _dab ._dg !=nil {if _acef ,_eeg :=_dab .trace (_dab ._dg .Get ("\u0052\u006f\u006f\u0074")).(*_cb .PdfObjectDictionary );_eeg {if _daa ,_ffe :=_dab .trace (_acef .Get ("\u0046\u0044\u0046")).(*_cb .PdfObjectDictionary );
+_ffe {return _daa ,nil ;};};};var _bfcd []int64 ;for _acd :=range _dab ._eea {_bfcd =append (_bfcd ,_acd );};_ga .Slice (_bfcd ,func (_aecd ,_daf int )bool {return _bfcd [_aecd ]< _bfcd [_daf ]});for _ ,_ffc :=range _bfcd {_affg :=_dab ._eea [_ffc ];if _cgf ,_ffg :=_dab .trace (_affg ).(*_cb .PdfObjectDictionary );
+_ffg {if _gcca ,_fcff :=_dab .trace (_cgf .Get ("\u0046\u0044\u0046")).(*_cb .PdfObjectDictionary );_fcff {return _gcca ,nil ;};};};return nil ,_c .New ("\u0046\u0044\u0046\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};type fdfParser struct{_dce int ;
+_bgb int ;_eea map[int64 ]_cb .PdfObject ;_dd _cf .ReadSeeker ;_ba *_ea .Reader ;_bc int64 ;_dg *_cb .PdfObjectDictionary ;};func (_gcde *fdfParser )parseObject ()(_cb .PdfObject ,error ){_ed .Log .Trace ("\u0052e\u0061d\u0020\u0064\u0069\u0072\u0065c\u0074\u0020o\u0062\u006a\u0065\u0063\u0074");
+_gcde .skipSpaces ();for {_gcce ,_gfa :=_gcde ._ba .Peek (2);if _gfa !=nil {return nil ,_gfa ;};_ed .Log .Trace ("\u0050e\u0065k\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_gcce ));if _gcce [0]=='/'{_fbe ,_gag :=_gcde .parseName ();
+_ed .Log .Trace ("\u002d\u003e\u004ea\u006d\u0065\u003a\u0020\u0027\u0025\u0073\u0027",_fbe );return &_fbe ,_gag ;}else if _gcce [0]=='('{_ed .Log .Trace ("\u002d>\u0053\u0074\u0072\u0069\u006e\u0067!");return _gcde .parseString ();}else if _gcce [0]=='['{_ed .Log .Trace ("\u002d\u003e\u0041\u0072\u0072\u0061\u0079\u0021");
+return _gcde .parseArray ();}else if (_gcce [0]=='<')&&(_gcce [1]=='<'){_ed .Log .Trace ("\u002d>\u0044\u0069\u0063\u0074\u0021");return _gcde .parseDict ();}else if _gcce [0]=='<'{_ed .Log .Trace ("\u002d\u003e\u0048\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0021");
+return _gcde .parseHexString ();}else if _gcce [0]=='%'{_gcde .readComment ();_gcde .skipSpaces ();}else {_ed .Log .Trace ("\u002d\u003eN\u0075\u006d\u0062e\u0072\u0020\u006f\u0072\u0020\u0072\u0065\u0066\u003f");_gcce ,_ =_gcde ._ba .Peek (15);_edgac :=string (_gcce );
+_ed .Log .Trace ("\u0050\u0065\u0065k\u0020\u0073\u0074\u0072\u003a\u0020\u0025\u0073",_edgac );if (len (_edgac )> 3)&&(_edgac [:4]=="\u006e\u0075\u006c\u006c"){_fa ,_cgg :=_gcde .parseNull ();return &_fa ,_cgg ;}else if (len (_edgac )> 4)&&(_edgac [:5]=="\u0066\u0061\u006cs\u0065"){_aff ,_ggc :=_gcde .parseBool ();
+return &_aff ,_ggc ;}else if (len (_edgac )> 3)&&(_edgac [:4]=="\u0074\u0072\u0075\u0065"){_gd ,_bgbf :=_gcde .parseBool ();return &_gd ,_bgbf ;};_dbb :=_bdc .FindStringSubmatch (_edgac );if len (_dbb )> 1{_gcce ,_ =_gcde ._ba .ReadBytes ('R');_ed .Log .Trace ("\u002d\u003e\u0020\u0021\u0052\u0065\u0066\u003a\u0020\u0027\u0025\u0073\u0027",string (_gcce [:]));
+_gad ,_bbf :=_gac (string (_gcce ));return &_gad ,_bbf ;};_gge :=_cc .FindStringSubmatch (_edgac );if len (_gge )> 1{_ed .Log .Trace ("\u002d\u003e\u0020\u004e\u0075\u006d\u0062\u0065\u0072\u0021");return _gcde .parseNumber ();};_gge =_aa .FindStringSubmatch (_edgac );
+if len (_gge )> 1{_ed .Log .Trace ("\u002d\u003e\u0020\u0045xp\u006f\u006e\u0065\u006e\u0074\u0069\u0061\u006c\u0020\u004e\u0075\u006d\u0062\u0065r\u0021");_ed .Log .Trace ("\u0025\u0020\u0073",_gge );return _gcde .parseNumber ();};_ed .Log .Debug ("\u0045R\u0052\u004f\u0052\u0020U\u006e\u006b\u006e\u006f\u0077n\u0020(\u0070e\u0065\u006b\u0020\u0022\u0025\u0073\u0022)",_edgac );
+return nil ,_c .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 (_afg *fdfParser )setFileOffset (_gbe int64 ){_afg ._dd .Seek (_gbe ,_cf .SeekStart );_afg ._ba =_ea .NewReader (_afg ._dd );};func (_fb *fdfParser )parseName ()(_cb .PdfObjectName ,error ){var _ece _gb .Buffer ;_cdb :=false ;for {_dfe ,_fd :=_fb ._ba .Peek (1);
+if _fd ==_cf .EOF {break ;};if _fd !=nil {return _cb .PdfObjectName (_ece .String ()),_fd ;};if !_cdb {switch _dfe [0]{case '/':_cdb =true ;_fb ._ba .ReadByte ();case '%':_fb .readComment ();_fb .skipSpaces ();default:_ed .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",_dfe ,_dfe );
+return _cb .PdfObjectName (_ece .String ()),_f .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_dfe [0]);};}else {if _cb .IsWhiteSpace (_dfe [0]){break ;}else if (_dfe [0]=='/')||(_dfe [0]=='[')||(_dfe [0]=='(')||(_dfe [0]==']')||(_dfe [0]=='<')||(_dfe [0]=='>'){break ;
+}else if _dfe [0]=='#'{_bbb ,_cdc :=_fb ._ba .Peek (3);if _cdc !=nil {return _cb .PdfObjectName (_ece .String ()),_cdc ;};_fb ._ba .Discard (3);_ccf ,_cdc :=_a .DecodeString (string (_bbb [1:3]));if _cdc !=nil {return _cb .PdfObjectName (_ece .String ()),_cdc ;
+};_ece .Write (_ccf );}else {_cgd ,_ :=_fb ._ba .ReadByte ();_ece .WriteByte (_cgd );};};};return _cb .PdfObjectName (_ece .String ()),nil ;};var _bdc =_e .MustCompile ("^\u005c\u0073\u002a\u0028\\d\u002b)\u005c\u0073\u002b\u0028\u005cd\u002b\u0029\u005c\u0073\u002b\u0052");
+func (_fdbe *fdfParser )seekToEOFMarker (_aec int64 )error {_dbg :=int64 (0);_efe :=int64 (1000);for _dbg < _aec {if _aec <=(_efe +_dbg ){_efe =_aec -_dbg ;};_ ,_acc :=_fdbe ._dd .Seek (-_dbg -_efe ,_cf .SeekEnd );if _acc !=nil {return _acc ;};_gccf :=make ([]byte ,_efe );
+_fdbe ._dd .Read (_gccf );_ed .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 (_gccf ));_cca :=_gc .FindAllStringIndex (string (_gccf ),-1);
+if _cca !=nil {_fgeg :=_cca [len (_cca )-1];_ed .Log .Trace ("\u0049\u006e\u0064\u003a\u0020\u0025\u0020\u0064",_cca );_fdbe ._dd .Seek (-_dbg -_efe +int64 (_fgeg [0]),_cf .SeekEnd );return nil ;};_ed .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");
+_dbg +=_efe ;};_ed .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 _c .New ("\u0045\u004f\u0046\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");
+};func (_gf *fdfParser )readComment ()(string ,error ){var _deb _gb .Buffer ;_ ,_ad :=_gf .skipSpaces ();if _ad !=nil {return _deb .String (),_ad ;};_bad :=true ;for {_ecbc ,_ge :=_gf ._ba .Peek (1);if _ge !=nil {_ed .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_ge .Error ());
+return _deb .String (),_ge ;};if _bad &&_ecbc [0]!='%'{return _deb .String (),_c .New ("c\u006f\u006d\u006d\u0065\u006e\u0074 \u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0073\u0074a\u0072\u0074\u0020w\u0069t\u0068\u0020\u0025");};_bad =false ;if (_ecbc [0]!='\r')&&(_ecbc [0]!='\n'){_gcc ,_ :=_gf ._ba .ReadByte ();
+_deb .WriteByte (_gcc );}else {break ;};};return _deb .String (),nil ;};func (_gbea *fdfParser )parseNumber ()(_cb .PdfObject ,error ){return _cb .ParseNumber (_gbea ._ba )};func (_cge *fdfParser )parse ()error {_cge ._dd .Seek (0,_cf .SeekStart );_cge ._ba =_ea .NewReader (_cge ._dd );
+for {_cge .skipComments ();_gfab ,_cgea :=_cge ._ba .Peek (20);if _cgea !=nil {_ed .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 _cgea ;};if _g .HasPrefix (string (_gfab ),"\u0074r\u0061\u0069\u006c\u0065\u0072"){_cge ._ba .Discard (7);_cge .skipSpaces ();_cge .skipComments ();_gfgd ,_ :=_cge .parseDict ();_cge ._dg =_gfgd ;break ;};_ggca :=_gcd .FindStringSubmatchIndex (string (_gfab ));
+if len (_ggca )< 6{_ed .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 (_gfab ));
+return _c .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");
+};_adc ,_cgea :=_cge .parseIndirectObject ();if _cgea !=nil {return _cgea ;};switch _ecge :=_adc .(type ){case *_cb .PdfIndirectObject :_cge ._eea [_ecge .ObjectNumber ]=_ecge ;case *_cb .PdfObjectStream :_cge ._eea [_ecge .ObjectNumber ]=_ecge ;default:return _c .New ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");
+};};return nil ;};
+
+// Data represents forms data format (FDF) file data.
+type Data struct{_ec *_cb .PdfObjectDictionary ;_beg *_cb .PdfObjectArray ;};func (_fcf *fdfParser )parseNull ()(_cb .PdfObjectNull ,error ){_ ,_cee :=_fcf ._ba .Discard (4);return _cb .PdfObjectNull {},_cee ;};func (_cbc *fdfParser )skipSpaces ()(int ,error ){_bb :=0;
+for {_cd ,_dee :=_cbc ._ba .ReadByte ();if _dee !=nil {return 0,_dee ;};if _cb .IsWhiteSpace (_cd ){_bb ++;}else {_cbc ._ba .UnreadByte ();break ;};};return _bb ,nil ;};func (_bgd *fdfParser )trace (_edgd _cb .PdfObject )_cb .PdfObject {switch _bgg :=_edgd .(type ){case *_cb .PdfObjectReference :_edd ,_fgd :=_bgd ._eea [_bgg .ObjectNumber ].(*_cb .PdfIndirectObject );
+if _fgd {return _edd .PdfObject ;};_ed .Log .Debug ("\u0054\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");return nil ;case *_cb .PdfIndirectObject :return _bgg .PdfObject ;};return _edgd ;};
+
+// Load loads FDF form data from `r`.
+func Load (r _cf .ReadSeeker )(*Data ,error ){_edg ,_gbb :=_cce (r );if _gbb !=nil {return nil ,_gbb ;};_eab ,_gbb :=_edg .Root ();if _gbb !=nil {return nil ,_gbb ;};_ee ,_eg :=_cb .GetArray (_eab .Get ("\u0046\u0069\u0065\u006c\u0064\u0073"));if !_eg {return nil ,_c .New ("\u0066\u0069\u0065\u006c\u0064\u0073\u0020\u006d\u0069s\u0073\u0069\u006e\u0067");
+};return &Data {_beg :_ee ,_ec :_eab },nil ;};func (_cbd *fdfParser )readTextLine ()(string ,error ){var _bbg _gb .Buffer ;for {_dfb ,_bea :=_cbd ._ba .Peek (1);if _bea !=nil {_ed .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_bea .Error ());
+return _bbg .String (),_bea ;};if (_dfb [0]!='\r')&&(_dfb [0]!='\n'){_afa ,_ :=_cbd ._ba .ReadByte ();_bbg .WriteByte (_afa );}else {break ;};};return _bbg .String (),nil ;};func (_aaa *fdfParser )parseHexString ()(*_cb .PdfObjectString ,error ){_aaa ._ba .ReadByte ();
+var _aeb _gb .Buffer ;for {_ccde ,_ebg :=_aaa ._ba .Peek (1);if _ebg !=nil {return _cb .MakeHexString (""),_ebg ;};if _ccde [0]=='>'{_aaa ._ba .ReadByte ();break ;};_ebf ,_ :=_aaa ._ba .ReadByte ();if !_cb .IsWhiteSpace (_ebf ){_aeb .WriteByte (_ebf );
+};};if _aeb .Len ()%2==1{_aeb .WriteRune ('0');};_ddg ,_ef :=_a .DecodeString (_aeb .String ());if _ef !=nil {_ed .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",_aeb .String ());
+return _cb .MakeHexString (""),nil ;};return _cb .MakeHexString (string (_ddg )),nil ;};func _cce (_dgc _cf .ReadSeeker )(*fdfParser ,error ){_afc :=&fdfParser {};_afc ._dd =_dgc ;_afc ._eea =map[int64 ]_cb .PdfObject {};_efg ,_fcd ,_bgbb :=_afc .parseFdfVersion ();
+if _bgbb !=nil {_ed .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",_bgbb );return nil ,_bgbb ;};_afc ._dce =_efg ;_afc ._bgb =_fcd ;_bgbb =_afc .parse ();
+return _afc ,_bgbb ;};func (_ac *fdfParser )skipComments ()error {if _ ,_ccd :=_ac .skipSpaces ();_ccd !=nil {return _ccd ;};_ecb :=true ;for {_aga ,_gcb :=_ac ._ba .Peek (1);if _gcb !=nil {_ed .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_gcb .Error ());
+return _gcb ;};if _ecb &&_aga [0]!='%'{return nil ;};_ecb =false ;if (_aga [0]!='\r')&&(_aga [0]!='\n'){_ac ._ba .ReadByte ();}else {break ;};};return _ac .skipComments ();};func (_eeb *fdfParser )parseArray ()(*_cb .PdfObjectArray ,error ){_ebe :=_cb .MakeArray ();
+_eeb ._ba .ReadByte ();for {_eeb .skipSpaces ();_adfa ,_gcf :=_eeb ._ba .Peek (1);if _gcf !=nil {return _ebe ,_gcf ;};if _adfa [0]==']'{_eeb ._ba .ReadByte ();break ;};_adg ,_gcf :=_eeb .parseObject ();if _gcf !=nil {return _ebe ,_gcf ;};_ebe .Append (_adg );
+};return _ebe ,nil ;};var _cc =_e .MustCompile ("\u005e\u005b\u005c\u002b\u002d\u002e\u005d\u002a\u0028\u005b\u0030\u002d9\u002e\u005d\u002b\u0029");func _gbbb (_fafb string )(*fdfParser ,error ){_bdcce :=fdfParser {};_ace :=[]byte (_fafb );_gda :=_gb .NewReader (_ace );
+_bdcce ._dd =_gda ;_bdcce ._eea =map[int64 ]_cb .PdfObject {};_bede :=_ea .NewReader (_gda );_bdcce ._ba =_bede ;_bdcce ._bc =int64 (len (_fafb ));return &_bdcce ,_bdcce .parse ();};func (_ag *fdfParser )readAtLeast (_fgf []byte ,_ceb int )(int ,error ){_ca :=_ceb ;
+_bf :=0;_fgfg :=0;for _ca > 0{_ggd ,_edf :=_ag ._ba .Read (_fgf [_bf :]);if _edf !=nil {_ed .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",_ggd ,_fgfg ,_edf .Error ());
+return _bf ,_c .New ("\u0066\u0061\u0069\u006c\u0065\u0064\u0020\u0072\u0065a\u0064\u0069\u006e\u0067");};_fgfg ++;_bf +=_ggd ;_ca -=_ggd ;};return _bf ,nil ;};
+
+// LoadFromPath loads FDF form data from file path `fdfPath`.
+func LoadFromPath (fdfPath string )(*Data ,error ){_de ,_df :=_d .Open (fdfPath );if _df !=nil {return nil ,_df ;};defer _de .Close ();return Load (_de );};func (_dad *fdfParser )seekFdfVersionTopDown ()(int ,int ,error ){_dad ._dd .Seek (0,_cf .SeekStart );
+_dad ._ba =_ea .NewReader (_dad ._dd );_gcad :=20;_fea :=make ([]byte ,_gcad );for {_ced ,_dcg :=_dad ._ba .ReadByte ();if _dcg !=nil {if _dcg ==_cf .EOF {break ;}else {return 0,0,_dcg ;};};if _cb .IsDecimalDigit (_ced )&&_fea [_gcad -1]=='.'&&_cb .IsDecimalDigit (_fea [_gcad -2])&&_fea [_gcad -3]=='-'&&_fea [_gcad -4]=='F'&&_fea [_gcad -5]=='D'&&_fea [_gcad -6]=='P'{_dbed :=int (_fea [_gcad -2]-'0');
+_fag :=int (_ced -'0');return _dbed ,_fag ,nil ;};_fea =append (_fea [1:_gcad ],_ced );};return 0,0,_c .New ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};func (_dcf *fdfParser )parseBool ()(_cb .PdfObjectBool ,error ){_fed ,_dfc :=_dcf ._ba .Peek (4);
+if _dfc !=nil {return _cb .PdfObjectBool (false ),_dfc ;};if (len (_fed )>=4)&&(string (_fed [:4])=="\u0074\u0072\u0075\u0065"){_dcf ._ba .Discard (4);return _cb .PdfObjectBool (true ),nil ;};_fed ,_dfc =_dcf ._ba .Peek (5);if _dfc !=nil {return _cb .PdfObjectBool (false ),_dfc ;
+};if (len (_fed )>=5)&&(string (_fed [:5])=="\u0066\u0061\u006cs\u0065"){_dcf ._ba .Discard (5);return _cb .PdfObjectBool (false ),nil ;};return _cb .PdfObjectBool (false ),_c .New ("\u0075n\u0065\u0078\u0070\u0065c\u0074\u0065\u0064\u0020\u0062o\u006fl\u0065a\u006e\u0020\u0073\u0074\u0072\u0069\u006eg");
+};func _gac (_abb string )(_cb .PdfObjectReference ,error ){_cgdb :=_cb .PdfObjectReference {};_eceg :=_bdc .FindStringSubmatch (_abb );if len (_eceg )< 3{_ed .Log .Debug ("\u0045\u0072\u0072or\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065");
+return _cgdb ,_c .New ("\u0075n\u0061\u0062\u006c\u0065 \u0074\u006f\u0020\u0070\u0061r\u0073e\u0020r\u0065\u0066\u0065\u0072\u0065\u006e\u0063e");};_eaa ,_fc :=_be .Atoi (_eceg [1]);if _fc !=nil {_ed .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",_eceg [1]);
+return _cgdb ,nil ;};_cgdb .ObjectNumber =int64 (_eaa );_fca ,_fc :=_be .Atoi (_eceg [2]);if _fc !=nil {_ed .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",_eceg [2]);
+return _cgdb ,nil ;};_cgdb .GenerationNumber =int64 (_fca );return _cgdb ,nil ;};func (_cgc *fdfParser )parseDict ()(*_cb .PdfObjectDictionary ,error ){_ed .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0046\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
+_cad :=_cb .MakeDict ();_dfg ,_ :=_cgc ._ba .ReadByte ();if _dfg !='<'{return nil ,_c .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");};_dfg ,_ =_cgc ._ba .ReadByte ();if _dfg !='<'{return nil ,_c .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");
+};for {_cgc .skipSpaces ();_cgc .skipComments ();_dccb ,_bcb :=_cgc ._ba .Peek (2);if _bcb !=nil {return nil ,_bcb ;};_ed .Log .Trace ("D\u0069c\u0074\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_dccb ),string (_dccb ));
+if (_dccb [0]=='>')&&(_dccb [1]=='>'){_ed .Log .Trace ("\u0045\u004f\u0046\u0020\u0064\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079");_cgc ._ba .ReadByte ();_cgc ._ba .ReadByte ();break ;};_ed .Log .Trace ("\u0050a\u0072s\u0065\u0020\u0074\u0068\u0065\u0020\u006e\u0061\u006d\u0065\u0021");
+_bdgg ,_bcb :=_cgc .parseName ();_ed .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_bdgg );if _bcb !=nil {_ed .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",_bcb );
+return nil ,_bcb ;};if len (_bdgg )> 4&&_bdgg [len (_bdgg )-4:]=="\u006e\u0075\u006c\u006c"{_afe :=_bdgg [0:len (_bdgg )-4];_ed .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",_bdgg );
+_ed .Log .Debug ("\u004e\u0065\u0077\u0020ke\u0079\u0020\u0022\u0025\u0073\u0022\u0020\u003d\u0020\u006e\u0075\u006c\u006c",_afe );_cgc .skipSpaces ();_gfad ,_ :=_cgc ._ba .Peek (1);if _gfad [0]=='/'{_cad .Set (_afe ,_cb .MakeNull ());continue ;};};_cgc .skipSpaces ();
+_ecg ,_bcb :=_cgc .parseObject ();if _bcb !=nil {return nil ,_bcb ;};_cad .Set (_bdgg ,_ecg );_ed .Log .Trace ("\u0064\u0069\u0063\u0074\u005b\u0025\u0073\u005d\u0020\u003d\u0020\u0025\u0073",_bdgg ,_ecg .String ());};_ed .Log .Trace ("\u0072\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0046\u0044\u0046\u0020\u0044\u0069\u0063\u0074\u0021");
+return _cad ,nil ;};func (_abf *fdfParser )parseFdfVersion ()(int ,int ,error ){_abf ._dd .Seek (0,_cf .SeekStart );_ddgg :=20;_eff :=make ([]byte ,_ddgg );_abf ._dd .Read (_eff );_aae :=_dec .FindStringSubmatch (string (_eff ));if len (_aae )< 3{_fcb ,_agf ,_aag :=_abf .seekFdfVersionTopDown ();
+if _aag !=nil {_ed .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,_aag ;
+};return _fcb ,_agf ,nil ;};_da ,_bafg :=_be .Atoi (_aae [1]);if _bafg !=nil {return 0,0,_bafg ;};_dbe ,_bafg :=_be .Atoi (_aae [2]);if _bafg !=nil {return 0,0,_bafg ;};_ed .Log .Debug ("\u0046\u0064\u0066\u0020\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020%\u0064\u002e\u0025\u0064",_da ,_dbe );
+return _da ,_dbe ,nil ;};var _aa =_e .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 (_bgf *fdfParser )getFileOffset ()int64 {_cfe ,_ :=_bgf ._dd .Seek (0,_cf .SeekCurrent );
+_cfe -=int64 (_bgf ._ba .Buffered ());return _cfe ;};func (_ff *fdfParser )parseString ()(*_cb .PdfObjectString ,error ){_ff ._ba .ReadByte ();var _ege _gb .Buffer ;_bcc :=1;for {_fdb ,_fe :=_ff ._ba .Peek (1);if _fe !=nil {return _cb .MakeString (_ege .String ()),_fe ;
+};if _fdb [0]=='\\'{_ff ._ba .ReadByte ();_dgf ,_baf :=_ff ._ba .ReadByte ();if _baf !=nil {return _cb .MakeString (_ege .String ()),_baf ;};if _cb .IsOctalDigit (_dgf ){_cde ,_bge :=_ff ._ba .Peek (2);if _bge !=nil {return _cb .MakeString (_ege .String ()),_bge ;
+};var _cdf []byte ;_cdf =append (_cdf ,_dgf );for _ ,_egef :=range _cde {if _cb .IsOctalDigit (_egef ){_cdf =append (_cdf ,_egef );}else {break ;};};_ff ._ba .Discard (len (_cdf )-1);_ed .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_cdf );
+_feb ,_bge :=_be .ParseUint (string (_cdf ),8,32);if _bge !=nil {return _cb .MakeString (_ege .String ()),_bge ;};_ege .WriteByte (byte (_feb ));continue ;};switch _dgf {case 'n':_ege .WriteRune ('\n');case 'r':_ege .WriteRune ('\r');case 't':_ege .WriteRune ('\t');
+case 'b':_ege .WriteRune ('\b');case 'f':_ege .WriteRune ('\f');case '(':_ege .WriteRune ('(');case ')':_ege .WriteRune (')');case '\\':_ege .WriteRune ('\\');};continue ;}else if _fdb [0]=='('{_bcc ++;}else if _fdb [0]==')'{_bcc --;if _bcc ==0{_ff ._ba .ReadByte ();
+break ;};};_fbg ,_ :=_ff ._ba .ReadByte ();_ege .WriteByte (_fbg );};return _cb .MakeString (_ege .String ()),nil ;};var _dec =_e .MustCompile ("\u0025F\u0044F\u002d\u0028\u005c\u0064\u0029\u005c\u002e\u0028\u005c\u0064\u0029");var _gc =_e .MustCompile ("\u0025\u0025\u0045O\u0046");
+var _gcd =_e .MustCompile ("\u0028\u005c\u0064\u002b)\\\u0073\u002b\u0028\u005c\u0064\u002b\u0029\u005c\u0073\u002b\u006f\u0062\u006a");
+
+// FieldValues implements interface model.FieldValueProvider.
+// Returns a map of field names to values (PdfObjects).
+func (fdf *Data )FieldValues ()(map[string ]_cb .PdfObject ,error ){_eca ,_gga :=fdf .FieldDictionaries ();if _gga !=nil {return nil ,_gga ;};var _db []string ;for _bg :=range _eca {_db =append (_db ,_bg );};_ga .Strings (_db );_bd :=map[string ]_cb .PdfObject {};
+for _ ,_bdg :=range _db {_dfa :=_eca [_bdg ];_fge :=_cb .TraceToDirectObject (_dfa .Get ("\u0056"));_bd [_bdg ]=_fge ;};return _bd ,nil ;}; \ No newline at end of file