mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-27 13:48:51 +08:00
32 lines
30 KiB
Go
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 (_gd "bufio";_e "bytes";_gc "encoding/hex";_g "errors";_dd "fmt";_gf "github.com/unidoc/unipdf/v3/common";_eg "github.com/unidoc/unipdf/v3/core";_eb "io";_b "os";_dg "regexp";_ac "sort";_ga "strconv";_d "strings";);func (_cf *fdfParser )readAtLeast (_acg []byte ,_eee int )(int ,error ){_ad :=_eee ;_cee :=0;_fa :=0;for _ad > 0{_bb ,_dbb :=_cf ._bg .Read (_acg [_cee :]);if _dbb !=nil {_gf .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",_bb ,_fa ,_dbb .Error ());return _cee ,_g .New ("\u0066\u0061\u0069\u006c\u0065\u0064\u0020\u0072\u0065a\u0064\u0069\u006e\u0067");};_fa ++;_cee +=_bb ;_ad -=_bb ;};return _cee ,nil ;};var _de =_dg .MustCompile ("\u0025F\u0044F\u002d\u0028\u005c\u0064\u0029\u005c\u002e\u0028\u005c\u0064\u0029");var _eeg =_dg .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 (_cdd *fdfParser )parse ()error {_cdd ._fb .Seek (0,_eb .SeekStart );_cdd ._bg =_gd .NewReader (_cdd ._fb );for {_cdd .skipComments ();_def ,_ecg :=_cdd ._bg .Peek (20);if _ecg !=nil {_gf .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 _ecg ;};if _d .HasPrefix (string (_def ),"\u0074r\u0061\u0069\u006c\u0065\u0072"){_cdd ._bg .Discard (7);_cdd .skipSpaces ();_cdd .skipComments ();_gde ,_ :=_cdd .parseDict ();_cdd ._gfg =_gde ;break ;};_fcb :=_ebf .FindStringSubmatchIndex (string (_def ));if len (_fcb )< 6{_gf .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 (_def ));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");};_fae ,_ecg :=_cdd .parseIndirectObject ();if _ecg !=nil {return _ecg ;};switch _fdb :=_fae .(type ){case *_eg .PdfIndirectObject :_cdd ._cda [_fdb .ObjectNumber ]=_fdb ;case *_eg .PdfObjectStream :_cdd ._cda [_fdb .ObjectNumber ]=_fdb ;default:return _g .New ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};};return nil ;};func (_bfg *fdfParser )setFileOffset (_cg int64 ){_bfg ._fb .Seek (_cg ,_eb .SeekStart );_bfg ._bg =_gd .NewReader (_bfg ._fb );};func (_ged *fdfParser )parseNull ()(_eg .PdfObjectNull ,error ){_ ,_cdfg :=_ged ._bg .Discard (4);return _eg .PdfObjectNull {},_cdfg ;};func (_deec *fdfParser )seekFdfVersionTopDown ()(int ,int ,error ){_deec ._fb .Seek (0,_eb .SeekStart );_deec ._bg =_gd .NewReader (_deec ._fb );_cdbf :=20;_deea :=make ([]byte ,_cdbf );for {_bfdb ,_gfbf :=_deec ._bg .ReadByte ();if _gfbf !=nil {if _gfbf ==_eb .EOF {break ;}else {return 0,0,_gfbf ;};};if _eg .IsDecimalDigit (_bfdb )&&_deea [_cdbf -1]=='.'&&_eg .IsDecimalDigit (_deea [_cdbf -2])&&_deea [_cdbf -3]=='-'&&_deea [_cdbf -4]=='F'&&_deea [_cdbf -5]=='D'&&_deea [_cdbf -6]=='P'{_cdbc :=int (_deea [_cdbf -2]-'0');_dfdf :=int (_bfdb -'0');return _cdbc ,_dfdf ,nil ;};_deea =append (_deea [1:_cdbf ],_bfdb );};return 0,0,_g .New ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};func (_geb *fdfParser )parseIndirectObject ()(_eg .PdfObject ,error ){_efcb :=_eg .PdfIndirectObject {};_gf .Log .Trace ("\u002dR\u0065a\u0064\u0020\u0069\u006e\u0064i\u0072\u0065c\u0074\u0020\u006f\u0062\u006a");_dda ,_dec :=_geb ._bg .Peek (20);if _dec !=nil {_gf .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 &_efcb ,_dec ;};_gf .Log .Trace ("\u0028\u0069\u006edi\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0020\u0070\u0065\u0065\u006b\u0020\u0022\u0025\u0073\u0022",string (_dda ));_dad :=_ebf .FindStringSubmatchIndex (string (_dda ));if len (_dad )< 6{_gf .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 (_dda ));return &_efcb ,_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");};_geb ._bg .Discard (_dad [0]);_gf .Log .Trace ("O\u0066\u0066\u0073\u0065\u0074\u0073\u0020\u0025\u0020\u0064",_dad );_dag :=_dad [1]-_dad [0];_abe :=make ([]byte ,_dag );_ ,_dec =_geb .readAtLeast (_abe ,_dag );if _dec !=nil {_gf .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",_dec );return nil ,_dec ;};_gf .Log .Trace ("\u0074\u0065\u0078t\u006c\u0069\u006e\u0065\u003a\u0020\u0025\u0073",_abe );_ccf :=_ebf .FindStringSubmatch (string (_abe ));if len (_ccf )< 3{_gf .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 (_abe ));return &_efcb ,_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");};_dbe ,_ :=_ga .Atoi (_ccf [1]);_aadd ,_ :=_ga .Atoi (_ccf [2]);_efcb .ObjectNumber =int64 (_dbe );_efcb .GenerationNumber =int64 (_aadd );for {_dba ,_gfefc :=_geb ._bg .Peek (2);if _gfefc !=nil {return &_efcb ,_gfefc ;};_gf .Log .Trace ("I\u006ed\u002e\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_dba ),string (_dba ));if _eg .IsWhiteSpace (_dba [0]){_geb .skipSpaces ();}else if _dba [0]=='%'{_geb .skipComments ();}else if (_dba [0]=='<')&&(_dba [1]=='<'){_gf .Log .Trace ("\u0043\u0061\u006c\u006c\u0020\u0050\u0061\u0072\u0073e\u0044\u0069\u0063\u0074");_efcb .PdfObject ,_gfefc =_geb .parseDict ();_gf .Log .Trace ("\u0045\u004f\u0046\u0020Ca\u006c\u006c\u0020\u0050\u0061\u0072\u0073\u0065\u0044\u0069\u0063\u0074\u003a\u0020%\u0076",_gfefc );if _gfefc !=nil {return &_efcb ,_gfefc ;};_gf .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 (_dba [0]=='/')||(_dba [0]=='(')||(_dba [0]=='[')||(_dba [0]=='<'){_efcb .PdfObject ,_gfefc =_geb .parseObject ();if _gfefc !=nil {return &_efcb ,_gfefc ;};_gf .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 _dba [0]=='e'{_gbf ,_eca :=_geb .readTextLine ();if _eca !=nil {return nil ,_eca ;};if len (_gbf )>=6&&_gbf [0:6]=="\u0065\u006e\u0064\u006f\u0062\u006a"{break ;};}else if _dba [0]=='s'{_dba ,_ =_geb ._bg .Peek (10);if string (_dba [:6])=="\u0073\u0074\u0072\u0065\u0061\u006d"{_dfb :=6;if len (_dba )> 6{if _eg .IsWhiteSpace (_dba [_dfb ])&&_dba [_dfb ]!='\r'&&_dba [_dfb ]!='\n'{_gf .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");_dfb ++;};if _dba [_dfb ]=='\r'{_dfb ++;if _dba [_dfb ]=='\n'{_dfb ++;};}else if _dba [_dfb ]=='\n'{_dfb ++;};};_geb ._bg .Discard (_dfb );_bfb ,_gba :=_efcb .PdfObject .(*_eg .PdfObjectDictionary );if !_gba {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");};_gf .Log .Trace ("\u0053\u0074\u0072\u0065\u0061\u006d\u0020\u0064\u0069c\u0074\u0020\u0025\u0073",_bfb );_gfbb ,_ceg :=_bfb .Get ("\u004c\u0065\u006e\u0067\u0074\u0068").(*_eg .PdfObjectInteger );if !_ceg {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");};_ccc :=*_gfbb ;if _ccc < 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 (_ccc )> _geb ._fec {_gf .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");};_afc :=make ([]byte ,_ccc );_ ,_gfefc =_geb .readAtLeast (_afc ,int (_ccc ));if _gfefc !=nil {_gf .Log .Debug ("E\u0052\u0052\u004f\u0052 s\u0074r\u0065\u0061\u006d\u0020\u0028%\u0064\u0029\u003a\u0020\u0025\u0058",len (_afc ),_afc );_gf .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_gfefc );return nil ,_gfefc ;};_bff :=_eg .PdfObjectStream {};_bff .Stream =_afc ;_bff .PdfObjectDictionary =_efcb .PdfObject .(*_eg .PdfObjectDictionary );_bff .ObjectNumber =_efcb .ObjectNumber ;_bff .GenerationNumber =_efcb .GenerationNumber ;_geb .skipSpaces ();_geb ._bg .Discard (9);_geb .skipSpaces ();return &_bff ,nil ;};};_efcb .PdfObject ,_gfefc =_geb .parseObject ();return &_efcb ,_gfefc ;};};_gf .Log .Trace ("\u0052\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0021");return &_efcb ,nil ;};func (_ecc *fdfParser )parseBool ()(_eg .PdfObjectBool ,error ){_aad ,_ggf :=_ecc ._bg .Peek (4);if _ggf !=nil {return _eg .PdfObjectBool (false ),_ggf ;};if (len (_aad )>=4)&&(string (_aad [:4])=="\u0074\u0072\u0075\u0065"){_ecc ._bg .Discard (4);return _eg .PdfObjectBool (true ),nil ;};_aad ,_ggf =_ecc ._bg .Peek (5);if _ggf !=nil {return _eg .PdfObjectBool (false ),_ggf ;};if (len (_aad )>=5)&&(string (_aad [:5])=="\u0066\u0061\u006cs\u0065"){_ecc ._bg .Discard (5);return _eg .PdfObjectBool (false ),nil ;};return _eg .PdfObjectBool (false ),_g .New ("\u0075n\u0065\u0078\u0070\u0065c\u0074\u0065\u0064\u0020\u0062o\u006fl\u0065a\u006e\u0020\u0073\u0074\u0072\u0069\u006eg");};func (_daf *fdfParser )trace (_edd _eg .PdfObject )_eg .PdfObject {switch _ced :=_edd .(type ){case *_eg .PdfObjectReference :_ebc ,_ffd :=_daf ._cda [_ced .ObjectNumber ].(*_eg .PdfIndirectObject );if _ffd {return _ebc .PdfObject ;};_gf .Log .Debug ("\u0054\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");return nil ;case *_eg .PdfIndirectObject :return _ced .PdfObject ;};return _edd ;};func (_fab *fdfParser )skipComments ()error {if _ ,_dab :=_fab .skipSpaces ();_dab !=nil {return _dab ;};_ea :=true ;for {_ddc ,_dea :=_fab ._bg .Peek (1);if _dea !=nil {_gf .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_dea .Error ());return _dea ;};if _ea &&_ddc [0]!='%'{return nil ;};_ea =false ;if (_ddc [0]!='\r')&&(_ddc [0]!='\n'){_fab ._bg .ReadByte ();}else {break ;};};return _fab .skipComments ();};var _gbd =_dg .MustCompile ("\u005e\u005b\u005c\u002b\u002d\u002e\u005d\u002a\u0028\u005b\u0030\u002d9\u002e\u005d\u002b\u0029");type fdfParser struct{_ceb int ;_bfee int ;_cda map[int64 ]_eg .PdfObject ;_fb _eb .ReadSeeker ;_bg *_gd .Reader ;_fec int64 ;_gfg *_eg .PdfObjectDictionary ;};
|
|
|
|
// FieldValues implements interface model.FieldValueProvider.
|
|
// Returns a map of field names to values (PdfObjects).
|
|
func (fdf *Data )FieldValues ()(map[string ]_eg .PdfObject ,error ){_ce ,_ee :=fdf .FieldDictionaries ();if _ee !=nil {return nil ,_ee ;};var _fe []string ;for _aae :=range _ce {_fe =append (_fe ,_aae );};_ac .Strings (_fe );_bfd :=map[string ]_eg .PdfObject {};for _ ,_dae :=range _fe {_gb :=_ce [_dae ];_gfe :=_eg .TraceToDirectObject (_gb .Get ("\u0056"));_bfd [_dae ]=_gfe ;};return _bfd ,nil ;};func (_gbe *fdfParser )parseString ()(*_eg .PdfObjectString ,error ){_gbe ._bg .ReadByte ();var _dfeg _e .Buffer ;_fc :=1;for {_fee ,_dcf :=_gbe ._bg .Peek (1);if _dcf !=nil {return _eg .MakeString (_dfeg .String ()),_dcf ;};if _fee [0]=='\\'{_gbe ._bg .ReadByte ();_dbbd ,_bef :=_gbe ._bg .ReadByte ();if _bef !=nil {return _eg .MakeString (_dfeg .String ()),_bef ;};if _eg .IsOctalDigit (_dbbd ){_afd ,_ec :=_gbe ._bg .Peek (2);if _ec !=nil {return _eg .MakeString (_dfeg .String ()),_ec ;};var _dacg []byte ;_dacg =append (_dacg ,_dbbd );for _ ,_gda :=range _afd {if _eg .IsOctalDigit (_gda ){_dacg =append (_dacg ,_gda );}else {break ;};};_gbe ._bg .Discard (len (_dacg )-1);_gf .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_dacg );_ffg ,_ec :=_ga .ParseUint (string (_dacg ),8,32);if _ec !=nil {return _eg .MakeString (_dfeg .String ()),_ec ;};_dfeg .WriteByte (byte (_ffg ));continue ;};switch _dbbd {case 'n':_dfeg .WriteRune ('\n');case 'r':_dfeg .WriteRune ('\r');case 't':_dfeg .WriteRune ('\t');case 'b':_dfeg .WriteRune ('\b');case 'f':_dfeg .WriteRune ('\f');case '(':_dfeg .WriteRune ('(');case ')':_dfeg .WriteRune (')');case '\\':_dfeg .WriteRune ('\\');};continue ;}else if _fee [0]=='('{_fc ++;}else if _fee [0]==')'{_fc --;if _fc ==0{_gbe ._bg .ReadByte ();break ;};};_aeg ,_ :=_gbe ._bg .ReadByte ();_dfeg .WriteByte (_aeg );};return _eg .MakeString (_dfeg .String ()),nil ;};func (_dgb *fdfParser )parseObject ()(_eg .PdfObject ,error ){_gf .Log .Trace ("\u0052e\u0061d\u0020\u0064\u0069\u0072\u0065c\u0074\u0020o\u0062\u006a\u0065\u0063\u0074");_dgb .skipSpaces ();for {_bfga ,_ccg :=_dgb ._bg .Peek (2);if _ccg !=nil {return nil ,_ccg ;};_gf .Log .Trace ("\u0050e\u0065k\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_bfga ));if _bfga [0]=='/'{_geg ,_baf :=_dgb .parseName ();_gf .Log .Trace ("\u002d\u003e\u004ea\u006d\u0065\u003a\u0020\u0027\u0025\u0073\u0027",_geg );return &_geg ,_baf ;}else if _bfga [0]=='('{_gf .Log .Trace ("\u002d>\u0053\u0074\u0072\u0069\u006e\u0067!");return _dgb .parseString ();}else if _bfga [0]=='['{_gf .Log .Trace ("\u002d\u003e\u0041\u0072\u0072\u0061\u0079\u0021");return _dgb .parseArray ();}else if (_bfga [0]=='<')&&(_bfga [1]=='<'){_gf .Log .Trace ("\u002d>\u0044\u0069\u0063\u0074\u0021");return _dgb .parseDict ();}else if _bfga [0]=='<'{_gf .Log .Trace ("\u002d\u003e\u0048\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0021");return _dgb .parseHexString ();}else if _bfga [0]=='%'{_dgb .readComment ();_dgb .skipSpaces ();}else {_gf .Log .Trace ("\u002d\u003eN\u0075\u006d\u0062e\u0072\u0020\u006f\u0072\u0020\u0072\u0065\u0066\u003f");_bfga ,_ =_dgb ._bg .Peek (15);_bede :=string (_bfga );_gf .Log .Trace ("\u0050\u0065\u0065k\u0020\u0073\u0074\u0072\u003a\u0020\u0025\u0073",_bede );if (len (_bede )> 3)&&(_bede [:4]=="\u006e\u0075\u006c\u006c"){_dfg ,_adcg :=_dgb .parseNull ();return &_dfg ,_adcg ;}else if (len (_bede )> 4)&&(_bede [:5]=="\u0066\u0061\u006cs\u0065"){_ace ,_ef :=_dgb .parseBool ();return &_ace ,_ef ;}else if (len (_bede )> 3)&&(_bede [:4]=="\u0074\u0072\u0075\u0065"){_ggg ,_faf :=_dgb .parseBool ();return &_ggg ,_faf ;};_adb :=_cfc .FindStringSubmatch (string (_bede ));if len (_adb )> 1{_bfga ,_ =_dgb ._bg .ReadBytes ('R');_gf .Log .Trace ("\u002d\u003e\u0020\u0021\u0052\u0065\u0066\u003a\u0020\u0027\u0025\u0073\u0027",string (_bfga [:]));_aea ,_dgba :=_cdf (string (_bfga ));return &_aea ,_dgba ;};_fef :=_gbd .FindStringSubmatch (string (_bede ));if len (_fef )> 1{_gf .Log .Trace ("\u002d\u003e\u0020\u004e\u0075\u006d\u0062\u0065\u0072\u0021");return _dgb .parseNumber ();};_fef =_eeg .FindStringSubmatch (string (_bede ));if len (_fef )> 1{_gf .Log .Trace ("\u002d\u003e\u0020\u0045xp\u006f\u006e\u0065\u006e\u0074\u0069\u0061\u006c\u0020\u004e\u0075\u006d\u0062\u0065r\u0021");_gf .Log .Trace ("\u0025\u0020\u0073",_fef );return _dgb .parseNumber ();};_gf .Log .Debug ("\u0045R\u0052\u004f\u0052\u0020U\u006e\u006b\u006e\u006f\u0077n\u0020(\u0070e\u0065\u006b\u0020\u0022\u0025\u0073\u0022)",_bede );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");};};};
|
|
|
|
// FieldDictionaries returns a map of field names to field dictionaries.
|
|
func (fdf *Data )FieldDictionaries ()(map[string ]*_eg .PdfObjectDictionary ,error ){_gff :=map[string ]*_eg .PdfObjectDictionary {};for _da :=0;_da < fdf ._gg .Len ();_da ++{_aa ,_af :=_eg .GetDict (fdf ._gg .Get (_da ));if _af {_df ,_ :=_eg .GetString (_aa .Get ("\u0054"));if _df !=nil {_gff [_df .Str ()]=_aa ;};};};return _gff ,nil ;};func (_ega *fdfParser )skipSpaces ()(int ,error ){_cgg :=0;for {_afa ,_gfef :=_ega ._bg .ReadByte ();if _gfef !=nil {return 0,_gfef ;};if _eg .IsWhiteSpace (_afa ){_cgg ++;}else {_ega ._bg .UnreadByte ();break ;};};return _cgg ,nil ;};func (_ded *fdfParser )parseHexString ()(*_eg .PdfObjectString ,error ){_ded ._bg .ReadByte ();var _feg _e .Buffer ;for {_adc ,_gdf :=_ded ._bg .Peek (1);if _gdf !=nil {return _eg .MakeHexString (""),_gdf ;};if _adc [0]=='>'{_ded ._bg .ReadByte ();break ;};_cfg ,_ :=_ded ._bg .ReadByte ();if !_eg .IsWhiteSpace (_cfg ){_feg .WriteByte (_cfg );};};if _feg .Len ()%2==1{_feg .WriteRune ('0');};_ca ,_gef :=_gc .DecodeString (_feg .String ());if _gef !=nil {_gf .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",_feg .String ());return _eg .MakeHexString (""),nil ;};return _eg .MakeHexString (string (_ca )),nil ;};func (_ff *fdfParser )parseNumber ()(_eg .PdfObject ,error ){return _eg .ParseNumber (_ff ._bg )};func _eaf (_ed string )(*fdfParser ,error ){_fda :=fdfParser {};_bfea :=[]byte (_ed );_cdb :=_e .NewReader (_bfea );_fda ._fb =_cdb ;_fda ._cda =map[int64 ]_eg .PdfObject {};_cab :=_gd .NewReader (_cdb );_fda ._bg =_cab ;_fda ._fec =int64 (len (_ed ));return &_fda ,_fda .parse ();};var _cfc =_dg .MustCompile ("^\u005c\u0073\u002a\u0028\\d\u002b)\u005c\u0073\u002b\u0028\u005cd\u002b\u0029\u005c\u0073\u002b\u0052");func _cdf (_bae string )(_eg .PdfObjectReference ,error ){_ffc :=_eg .PdfObjectReference {};_dgf :=_cfc .FindStringSubmatch (string (_bae ));if len (_dgf )< 3{_gf .Log .Debug ("\u0045\u0072\u0072or\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065");return _ffc ,_g .New ("\u0075n\u0061\u0062\u006c\u0065 \u0074\u006f\u0020\u0070\u0061r\u0073e\u0020r\u0065\u0066\u0065\u0072\u0065\u006e\u0063e");};_fca ,_cb :=_ga .Atoi (_dgf [1]);if _cb !=nil {_gf .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",_dgf [1]);return _ffc ,nil ;};_ffc .ObjectNumber =int64 (_fca );_fcc ,_cb :=_ga .Atoi (_dgf [2]);if _cb !=nil {_gf .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",_dgf [2]);return _ffc ,nil ;};_ffc .GenerationNumber =int64 (_fcc );return _ffc ,nil ;};
|
|
|
|
// LoadFromPath loads FDF form data from file path `fdfPath`.
|
|
func LoadFromPath (fdfPath string )(*Data ,error ){_dgc ,_c :=_b .Open (fdfPath );if _c !=nil {return nil ,_c ;};defer _dgc .Close ();return Load (_dgc );};func (_beg *fdfParser )parseDict ()(*_eg .PdfObjectDictionary ,error ){_gf .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0046\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_efd :=_eg .MakeDict ();_gdg ,_ :=_beg ._bg .ReadByte ();if _gdg !='<'{return nil ,_g .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");};_gdg ,_ =_beg ._bg .ReadByte ();if _gdg !='<'{return nil ,_g .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");};for {_beg .skipSpaces ();_beg .skipComments ();_ggc ,_dga :=_beg ._bg .Peek (2);if _dga !=nil {return nil ,_dga ;};_gf .Log .Trace ("D\u0069c\u0074\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_ggc ),string (_ggc ));if (_ggc [0]=='>')&&(_ggc [1]=='>'){_gf .Log .Trace ("\u0045\u004f\u0046\u0020\u0064\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079");_beg ._bg .ReadByte ();_beg ._bg .ReadByte ();break ;};_gf .Log .Trace ("\u0050a\u0072s\u0065\u0020\u0074\u0068\u0065\u0020\u006e\u0061\u006d\u0065\u0021");_feeb ,_dga :=_beg .parseName ();_gf .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_feeb );if _dga !=nil {_gf .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",_dga );return nil ,_dga ;};if len (_feeb )> 4&&_feeb [len (_feeb )-4:]=="\u006e\u0075\u006c\u006c"{_afdf :=_feeb [0:len (_feeb )-4];_gf .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",_feeb );_gf .Log .Debug ("\u004e\u0065\u0077\u0020ke\u0079\u0020\u0022\u0025\u0073\u0022\u0020\u003d\u0020\u006e\u0075\u006c\u006c",_afdf );_beg .skipSpaces ();_ebd ,_ :=_beg ._bg .Peek (1);if _ebd [0]=='/'{_efd .Set (_afdf ,_eg .MakeNull ());continue ;};};_beg .skipSpaces ();_gaa ,_dga :=_beg .parseObject ();if _dga !=nil {return nil ,_dga ;};_efd .Set (_feeb ,_gaa );_gf .Log .Trace ("\u0064\u0069\u0063\u0074\u005b\u0025\u0073\u005d\u0020\u003d\u0020\u0025\u0073",_feeb ,_gaa .String ());};_gf .Log .Trace ("\u0072\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0046\u0044\u0046\u0020\u0044\u0069\u0063\u0074\u0021");return _efd ,nil ;};func (_bed *fdfParser )parseName ()(_eg .PdfObjectName ,error ){var _ge _e .Buffer ;_fabc :=false ;for {_fed ,_gee :=_bed ._bg .Peek (1);if _gee ==_eb .EOF {break ;};if _gee !=nil {return _eg .PdfObjectName (_ge .String ()),_gee ;};if !_fabc {if _fed [0]=='/'{_fabc =true ;_bed ._bg .ReadByte ();}else if _fed [0]=='%'{_bed .readComment ();_bed .skipSpaces ();}else {_gf .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",_fed ,_fed );return _eg .PdfObjectName (_ge .String ()),_dd .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_fed [0]);};}else {if _eg .IsWhiteSpace (_fed [0]){break ;}else if (_fed [0]=='/')||(_fed [0]=='[')||(_fed [0]=='(')||(_fed [0]==']')||(_fed [0]=='<')||(_fed [0]=='>'){break ;}else if _fed [0]=='#'{_gbg ,_ae :=_bed ._bg .Peek (3);if _ae !=nil {return _eg .PdfObjectName (_ge .String ()),_ae ;};_bed ._bg .Discard (3);_dbd ,_ae :=_gc .DecodeString (string (_gbg [1:3]));if _ae !=nil {return _eg .PdfObjectName (_ge .String ()),_ae ;};_ge .Write (_dbd );}else {_dbbf ,_ :=_bed ._bg .ReadByte ();_ge .WriteByte (_dbbf );};};};return _eg .PdfObjectName (_ge .String ()),nil ;};func (_aaa *fdfParser )seekToEOFMarker (_egb int64 )error {_dbfc :=int64 (0);_bfa :=int64 (1000);for _dbfc < _egb {if _egb <=(_bfa +_dbfc ){_bfa =_egb -_dbfc ;};_ ,_gce :=_aaa ._fb .Seek (-_dbfc -_bfa ,_eb .SeekEnd );if _gce !=nil {return _gce ;};_fd :=make ([]byte ,_bfa );_aaa ._fb .Read (_fd );_gf .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 (_fd ));_ag :=_bfda .FindAllStringIndex (string (_fd ),-1);if _ag !=nil {_bbda :=_ag [len (_ag )-1];_gf .Log .Trace ("\u0049\u006e\u0064\u003a\u0020\u0025\u0020\u0064",_ag );_aaa ._fb .Seek (-_dbfc -_bfa +int64 (_bbda [0]),_eb .SeekEnd );return nil ;};_gf .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");_dbfc +=_bfa ;};_gf .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");};func (_dfee *fdfParser )parseArray ()(*_eg .PdfObjectArray ,error ){_aed :=_eg .MakeArray ();_dfee ._bg .ReadByte ();for {_dfee .skipSpaces ();_daa ,_dee :=_dfee ._bg .Peek (1);if _dee !=nil {return _aed ,_dee ;};if _daa [0]==']'{_dfee ._bg .ReadByte ();break ;};_bga ,_dee :=_dfee .parseObject ();if _dee !=nil {return _aed ,_dee ;};_aed .Append (_bga );};return _aed ,nil ;};func _fabb (_gec _eb .ReadSeeker )(*fdfParser ,error ){_fbb :=&fdfParser {};_fbb ._fb =_gec ;_fbb ._cda =map[int64 ]_eg .PdfObject {};_bgg ,_dff ,_cfb :=_fbb .parseFdfVersion ();if _cfb !=nil {_gf .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",_cfb );return nil ,_cfb ;};_fbb ._ceb =_bgg ;_fbb ._bfee =_dff ;_cfb =_fbb .parse ();return _fbb ,_cfb ;};
|
|
|
|
// Data represents forms data format (FDF) file data.
|
|
type Data struct{_f *_eg .PdfObjectDictionary ;_gg *_eg .PdfObjectArray ;};
|
|
|
|
// Load loads FDF form data from `r`.
|
|
func Load (r _eb .ReadSeeker )(*Data ,error ){_gdb ,_db :=_fabb (r );if _db !=nil {return nil ,_db ;};_gfc ,_db :=_gdb .Root ();if _db !=nil {return nil ,_db ;};_bf ,_bfe :=_eg .GetArray (_gfc .Get ("\u0046\u0069\u0065\u006c\u0064\u0073"));if !_bfe {return nil ,_g .New ("\u0066\u0069\u0065\u006c\u0064\u0073\u0020\u006d\u0069s\u0073\u0069\u006e\u0067");};return &Data {_gg :_bf ,_f :_gfc },nil ;};func (_bd *fdfParser )getFileOffset ()int64 {_dc ,_ :=_bd ._fb .Seek (0,_eb .SeekCurrent );_dc -=int64 (_bd ._bg .Buffered ());return _dc ;};func (_fefa *fdfParser )parseFdfVersion ()(int ,int ,error ){_fefa ._fb .Seek (0,_eb .SeekStart );_gbgd :=20;_fcf :=make ([]byte ,_gbgd );_fefa ._fb .Read (_fcf );_eef :=_de .FindStringSubmatch (string (_fcf ));if len (_eef )< 3{_dfga ,_aede ,_ebg :=_fefa .seekFdfVersionTopDown ();if _ebg !=nil {_gf .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,_ebg ;};return _dfga ,_aede ,nil ;};_cae ,_gfefa :=_ga .Atoi (_eef [1]);if _gfefa !=nil {return 0,0,_gfefa ;};_efg ,_gfefa :=_ga .Atoi (_eef [2]);if _gfefa !=nil {return 0,0,_gfefa ;};_gf .Log .Debug ("\u0046\u0064\u0066\u0020\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020%\u0064\u002e\u0025\u0064",_cae ,_efg );return int (_cae ),int (_efg ),nil ;};func (_bgc *fdfParser )readComment ()(string ,error ){var _dbf _e .Buffer ;_ ,_cc :=_bgc .skipSpaces ();if _cc !=nil {return _dbf .String (),_cc ;};_bgf :=true ;for {_ba ,_bde :=_bgc ._bg .Peek (1);if _bde !=nil {_gf .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_bde .Error ());return _dbf .String (),_bde ;};if _bgf &&_ba [0]!='%'{return _dbf .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");};_bgf =false ;if (_ba [0]!='\r')&&(_ba [0]!='\n'){_gfb ,_ :=_bgc ._bg .ReadByte ();_dbf .WriteByte (_gfb );}else {break ;};};return _dbf .String (),nil ;};func (_cggg *fdfParser )readTextLine ()(string ,error ){var _acgg _e .Buffer ;for {_eeea ,_fbe :=_cggg ._bg .Peek (1);if _fbe !=nil {_gf .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_fbe .Error ());return _acgg .String (),_fbe ;};if (_eeea [0]!='\r')&&(_eeea [0]!='\n'){_dac ,_ :=_cggg ._bg .ReadByte ();_acgg .WriteByte (_dac );}else {break ;};};return _acgg .String (),nil ;};var _ebf =_dg .MustCompile ("\u0028\u005c\u0064\u002b)\\\u0073\u002b\u0028\u005c\u0064\u002b\u0029\u005c\u0073\u002b\u006f\u0062\u006a");
|
|
|
|
// Root returns the Root of the FDF document.
|
|
func (_ece *fdfParser )Root ()(*_eg .PdfObjectDictionary ,error ){if _ece ._gfg !=nil {if _bbc ,_gca :=_ece .trace (_ece ._gfg .Get ("\u0052\u006f\u006f\u0074")).(*_eg .PdfObjectDictionary );_gca {if _bgb ,_dacd :=_ece .trace (_bbc .Get ("\u0046\u0044\u0046")).(*_eg .PdfObjectDictionary );_dacd {return _bgb ,nil ;};};};var _acb []int64 ;for _cff :=range _ece ._cda {_acb =append (_acb ,_cff );};_ac .Slice (_acb ,func (_deb ,_gbdf int )bool {return _acb [_deb ]< _acb [_gbdf ]});for _ ,_dgac :=range _acb {_ffgb :=_ece ._cda [_dgac ];if _abg ,_agb :=_ece .trace (_ffgb ).(*_eg .PdfObjectDictionary );_agb {if _fbf ,_fbg :=_ece .trace (_abg .Get ("\u0046\u0044\u0046")).(*_eg .PdfObjectDictionary );_fbg {return _fbf ,nil ;};};};return nil ,_g .New ("\u0046\u0044\u0046\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};var _bfda =_dg .MustCompile ("\u0025\u0025\u0045O\u0046"); |