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 (_f "bufio";_b "bytes";_ef "encoding/hex";_e "errors";_de "fmt";_egb "github.com/unidoc/unipdf/v3/common";_ed "github.com/unidoc/unipdf/v3/core";_ga "io";_dgf "os";_eg "regexp";_df "sort";_dg "strconv";_d "strings";);func (_dbe *fdfParser )parseNumber ()(_ed .PdfObject ,error ){return _ed .ParseNumber (_dbe ._ae )};func (_eddd *fdfParser )parseNull ()(_ed .PdfObjectNull ,error ){_ ,_efgf :=_eddd ._ae .Discard (4);return _ed .PdfObjectNull {},_efgf ;};func (_ad *fdfParser )getFileOffset ()int64 {_gag ,_ :=_ad ._bcg .Seek (0,_ga .SeekCurrent );_gag -=int64 (_ad ._ae .Buffered ());return _gag ;};func (_ecc *fdfParser )parseObject ()(_ed .PdfObject ,error ){_egb .Log .Trace ("\u0052e\u0061d\u0020\u0064\u0069\u0072\u0065c\u0074\u0020o\u0062\u006a\u0065\u0063\u0074");_ecc .skipSpaces ();for {_gfd ,_gge :=_ecc ._ae .Peek (2);if _gge !=nil {return nil ,_gge ;};_egb .Log .Trace ("\u0050e\u0065k\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_gfd ));if _gfd [0]=='/'{_dff ,_aeg :=_ecc .parseName ();_egb .Log .Trace ("\u002d\u003e\u004ea\u006d\u0065\u003a\u0020\u0027\u0025\u0073\u0027",_dff );return &_dff ,_aeg ;}else if _gfd [0]=='('{_egb .Log .Trace ("\u002d>\u0053\u0074\u0072\u0069\u006e\u0067!");return _ecc .parseString ();}else if _gfd [0]=='['{_egb .Log .Trace ("\u002d\u003e\u0041\u0072\u0072\u0061\u0079\u0021");return _ecc .parseArray ();}else if (_gfd [0]=='<')&&(_gfd [1]=='<'){_egb .Log .Trace ("\u002d>\u0044\u0069\u0063\u0074\u0021");return _ecc .parseDict ();}else if _gfd [0]=='<'{_egb .Log .Trace ("\u002d\u003e\u0048\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0021");return _ecc .parseHexString ();}else if _gfd [0]=='%'{_ecc .readComment ();_ecc .skipSpaces ();}else {_egb .Log .Trace ("\u002d\u003eN\u0075\u006d\u0062e\u0072\u0020\u006f\u0072\u0020\u0072\u0065\u0066\u003f");_gfd ,_ =_ecc ._ae .Peek (15);_eca :=string (_gfd );_egb .Log .Trace ("\u0050\u0065\u0065k\u0020\u0073\u0074\u0072\u003a\u0020\u0025\u0073",_eca );if (len (_eca )> 3)&&(_eca [:4]=="\u006e\u0075\u006c\u006c"){_dcb ,_fef :=_ecc .parseNull ();return &_dcb ,_fef ;}else if (len (_eca )> 4)&&(_eca [:5]=="\u0066\u0061\u006cs\u0065"){_bad ,_ebc :=_ecc .parseBool ();return &_bad ,_ebc ;}else if (len (_eca )> 3)&&(_eca [:4]=="\u0074\u0072\u0075\u0065"){_badf ,_add :=_ecc .parseBool ();return &_badf ,_add ;};_cfd :=_acc .FindStringSubmatch (_eca );if len (_cfd )> 1{_gfd ,_ =_ecc ._ae .ReadBytes ('R');_egb .Log .Trace ("\u002d\u003e\u0020\u0021\u0052\u0065\u0066\u003a\u0020\u0027\u0025\u0073\u0027",string (_gfd [:]));_acgf ,_dffc :=_ege (string (_gfd ));return &_acgf ,_dffc ;};_bcd :=_ag .FindStringSubmatch (_eca );if len (_bcd )> 1{_egb .Log .Trace ("\u002d\u003e\u0020\u004e\u0075\u006d\u0062\u0065\u0072\u0021");return _ecc .parseNumber ();};_bcd =_gbb .FindStringSubmatch (_eca );if len (_bcd )> 1{_egb .Log .Trace ("\u002d\u003e\u0020\u0045xp\u006f\u006e\u0065\u006e\u0074\u0069\u0061\u006c\u0020\u004e\u0075\u006d\u0062\u0065r\u0021");_egb .Log .Trace ("\u0025\u0020\u0073",_bcd );return _ecc .parseNumber ();};_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u0020U\u006e\u006b\u006e\u006f\u0077n\u0020(\u0070e\u0065\u006b\u0020\u0022\u0025\u0073\u0022)",_eca );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");};};};var _acc =_eg .MustCompile ("^\u005c\u0073\u002a\u0028\\d\u002b)\u005c\u0073\u002b\u0028\u005cd\u002b\u0029\u005c\u0073\u002b\u0052");var _ag =_eg .MustCompile ("\u005e\u005b\u005c\u002b\u002d\u002e\u005d\u002a\u0028\u005b\u0030\u002d9\u002e\u005d\u002b\u0029");func (_adf *fdfParser )parseString ()(*_ed .PdfObjectString ,error ){_adf ._ae .ReadByte ();var _ba _b .Buffer ;_bdgd :=1;for {_ceae ,_ecb :=_adf ._ae .Peek (1);if _ecb !=nil {return _ed .MakeString (_ba .String ()),_ecb ;};if _ceae [0]=='\\'{_adf ._ae .ReadByte ();_cfe ,_cef :=_adf ._ae .ReadByte ();if _cef !=nil {return _ed .MakeString (_ba .String ()),_cef ;};if _ed .IsOctalDigit (_cfe ){_febe ,_dbdb :=_adf ._ae .Peek (2);if _dbdb !=nil {return _ed .MakeString (_ba .String ()),_dbdb ;};var _ff []byte ;_ff =append (_ff ,_cfe );for _ ,_age :=range _febe {if _ed .IsOctalDigit (_age ){_ff =append (_ff ,_age );}else {break ;};};_adf ._ae .Discard (len (_ff )-1);_egb .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_ff );_aag ,_dbdb :=_dg .ParseUint (string (_ff ),8,32);if _dbdb !=nil {return _ed .MakeString (_ba .String ()),_dbdb ;};_ba .WriteByte (byte (_aag ));continue ;};switch _cfe {case 'n':_ba .WriteRune ('\n');case 'r':_ba .WriteRune ('\r');case 't':_ba .WriteRune ('\t');case 'b':_ba .WriteRune ('\b');case 'f':_ba .WriteRune ('\f');case '(':_ba .WriteRune ('(');case ')':_ba .WriteRune (')');case '\\':_ba .WriteRune ('\\');};continue ;}else if _ceae [0]=='('{_bdgd ++;}else if _ceae [0]==')'{_bdgd --;if _bdgd ==0{_adf ._ae .ReadByte ();break ;};};_bac ,_ :=_adf ._ae .ReadByte ();_ba .WriteByte (_bac );};return _ed .MakeString (_ba .String ()),nil ;};func (_abe *fdfParser )parseName ()(_ed .PdfObjectName ,error ){var _dbd _b .Buffer ;_ebe :=false ;for {_ge ,_eda :=_abe ._ae .Peek (1);if _eda ==_ga .EOF {break ;};if _eda !=nil {return _ed .PdfObjectName (_dbd .String ()),_eda ;};if !_ebe {if _ge [0]=='/'{_ebe =true ;_abe ._ae .ReadByte ();}else if _ge [0]=='%'{_abe .readComment ();_abe .skipSpaces ();}else {_egb .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",_ge ,_ge );return _ed .PdfObjectName (_dbd .String ()),_de .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_ge [0]);};}else {if _ed .IsWhiteSpace (_ge [0]){break ;}else if (_ge [0]=='/')||(_ge [0]=='[')||(_ge [0]=='(')||(_ge [0]==']')||(_ge [0]=='<')||(_ge [0]=='>'){break ;}else if _ge [0]=='#'{_feb ,_ead :=_abe ._ae .Peek (3);if _ead !=nil {return _ed .PdfObjectName (_dbd .String ()),_ead ;};_abe ._ae .Discard (3);_eegf ,_ead :=_ef .DecodeString (string (_feb [1:3]));if _ead !=nil {return _ed .PdfObjectName (_dbd .String ()),_ead ;};_dbd .Write (_eegf );}else {_eac ,_ :=_abe ._ae .ReadByte ();_dbd .WriteByte (_eac );};};};return _ed .PdfObjectName (_dbd .String ()),nil ;};func (_cga *fdfParser )parseHexString ()(*_ed .PdfObjectString ,error ){_cga ._ae .ReadByte ();var _eee _b .Buffer ;for {_ggc ,_gcc :=_cga ._ae .Peek (1);if _gcc !=nil {return _ed .MakeHexString (""),_gcc ;};if _ggc [0]=='>'{_cga ._ae .ReadByte ();break ;};_gbg ,_ :=_cga ._ae .ReadByte ();if !_ed .IsWhiteSpace (_gbg ){_eee .WriteByte (_gbg );};};if _eee .Len ()%2==1{_eee .WriteRune ('0');};_gf ,_afb :=_ef .DecodeString (_eee .String ());if _afb !=nil {_egb .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",_eee .String ());return _ed .MakeHexString (""),nil ;};return _ed .MakeHexString (string (_gf )),nil ;};var _cdc =_eg .MustCompile ("\u0025F\u0044F\u002d\u0028\u005c\u0064\u0029\u005c\u002e\u0028\u005c\u0064\u0029");func (_cdca *fdfParser )skipSpaces ()(int ,error ){_cdf :=0;for {_cbb ,_efa :=_cdca ._ae .ReadByte ();if _efa !=nil {return 0,_efa ;};if _ed .IsWhiteSpace (_cbb ){_cdf ++;}else {_cdca ._ae .UnreadByte ();break ;};};return _cdf ,nil ;};func (_eb *fdfParser )skipComments ()error {if _ ,_cg :=_eb .skipSpaces ();_cg !=nil {return _cg ;};_af :=true ;for {_ded ,_egbc :=_eb ._ae .Peek (1);if _egbc !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_egbc .Error ());return _egbc ;};if _af &&_ded [0]!='%'{return nil ;};_af =false ;if (_ded [0]!='\r')&&(_ded [0]!='\n'){_eb ._ae .ReadByte ();}else {break ;};};return _eb .skipComments ();};
|
|
|
|
// Root returns the Root of the FDF document.
|
|
func (_cbd *fdfParser )Root ()(*_ed .PdfObjectDictionary ,error ){if _cbd ._agb !=nil {if _ggg ,_cdcac :=_cbd .trace (_cbd ._agb .Get ("\u0052\u006f\u006f\u0074")).(*_ed .PdfObjectDictionary );_cdcac {if _bdbc ,_gba :=_cbd .trace (_ggg .Get ("\u0046\u0044\u0046")).(*_ed .PdfObjectDictionary );_gba {return _bdbc ,nil ;};};};var _cbc []int64 ;for _efaa :=range _cbd ._ade {_cbc =append (_cbc ,_efaa );};_df .Slice (_cbc ,func (_cff ,_adac int )bool {return _cbc [_cff ]< _cbc [_adac ]});for _ ,_fba :=range _cbc {_eef :=_cbd ._ade [_fba ];if _ffbg ,_fcce :=_cbd .trace (_eef ).(*_ed .PdfObjectDictionary );_fcce {if _gcd ,_bef :=_cbd .trace (_ffbg .Get ("\u0046\u0044\u0046")).(*_ed .PdfObjectDictionary );_bef {return _gcd ,nil ;};};};return nil ,_e .New ("\u0046\u0044\u0046\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};func (_dfg *fdfParser )parse ()error {_dfg ._bcg .Seek (0,_ga .SeekStart );_dfg ._ae =_f .NewReader (_dfg ._bcg );for {_dfg .skipComments ();_bfff ,_baaa :=_dfg ._ae .Peek (20);if _baaa !=nil {_egb .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 _baaa ;};if _d .HasPrefix (string (_bfff ),"\u0074r\u0061\u0069\u006c\u0065\u0072"){_dfg ._ae .Discard (7);_dfg .skipSpaces ();_dfg .skipComments ();_addg ,_ :=_dfg .parseDict ();_dfg ._agb =_addg ;break ;};_bbd :=_dd .FindStringSubmatchIndex (string (_bfff ));if len (_bbd )< 6{_egb .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 (_bfff ));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");};_bfd ,_baaa :=_dfg .parseIndirectObject ();if _baaa !=nil {return _baaa ;};switch _ecaf :=_bfd .(type ){case *_ed .PdfIndirectObject :_dfg ._ade [_ecaf .ObjectNumber ]=_ecaf ;case *_ed .PdfObjectStream :_dfg ._ade [_ecaf .ObjectNumber ]=_ecaf ;default:return _e .New ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};};return nil ;};func (_cc *fdfParser )parseIndirectObject ()(_ed .PdfObject ,error ){_dgae :=_ed .PdfIndirectObject {};_egb .Log .Trace ("\u002dR\u0065a\u0064\u0020\u0069\u006e\u0064i\u0072\u0065c\u0074\u0020\u006f\u0062\u006a");_dac ,_gcb :=_cc ._ae .Peek (20);if _gcb !=nil {_egb .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 &_dgae ,_gcb ;};_egb .Log .Trace ("\u0028\u0069\u006edi\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0020\u0070\u0065\u0065\u006b\u0020\u0022\u0025\u0073\u0022",string (_dac ));_gagf :=_dd .FindStringSubmatchIndex (string (_dac ));if len (_gagf )< 6{_egb .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 (_dac ));return &_dgae ,_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");};_cc ._ae .Discard (_gagf [0]);_egb .Log .Trace ("O\u0066\u0066\u0073\u0065\u0074\u0073\u0020\u0025\u0020\u0064",_gagf );_dgfg :=_gagf [1]-_gagf [0];_fda :=make ([]byte ,_dgfg );_ ,_gcb =_cc .readAtLeast (_fda ,_dgfg );if _gcb !=nil {_egb .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",_gcb );return nil ,_gcb ;};_egb .Log .Trace ("\u0074\u0065\u0078t\u006c\u0069\u006e\u0065\u003a\u0020\u0025\u0073",_fda );_abg :=_dd .FindStringSubmatch (string (_fda ));if len (_abg )< 3{_egb .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 (_fda ));return &_dgae ,_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");};_cfaa ,_ :=_dg .Atoi (_abg [1]);_gdg ,_ :=_dg .Atoi (_abg [2]);_dgae .ObjectNumber =int64 (_cfaa );_dgae .GenerationNumber =int64 (_gdg );for {_ffc ,_dbb :=_cc ._ae .Peek (2);if _dbb !=nil {return &_dgae ,_dbb ;};_egb .Log .Trace ("I\u006ed\u002e\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_ffc ),string (_ffc ));if _ed .IsWhiteSpace (_ffc [0]){_cc .skipSpaces ();}else if _ffc [0]=='%'{_cc .skipComments ();}else if (_ffc [0]=='<')&&(_ffc [1]=='<'){_egb .Log .Trace ("\u0043\u0061\u006c\u006c\u0020\u0050\u0061\u0072\u0073e\u0044\u0069\u0063\u0074");_dgae .PdfObject ,_dbb =_cc .parseDict ();_egb .Log .Trace ("\u0045\u004f\u0046\u0020Ca\u006c\u006c\u0020\u0050\u0061\u0072\u0073\u0065\u0044\u0069\u0063\u0074\u003a\u0020%\u0076",_dbb );if _dbb !=nil {return &_dgae ,_dbb ;};_egb .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 (_ffc [0]=='/')||(_ffc [0]=='(')||(_ffc [0]=='[')||(_ffc [0]=='<'){_dgae .PdfObject ,_dbb =_cc .parseObject ();if _dbb !=nil {return &_dgae ,_dbb ;};_egb .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 _ffc [0]=='e'{_gfg ,_fca :=_cc .readTextLine ();if _fca !=nil {return nil ,_fca ;};if len (_gfg )>=6&&_gfg [0:6]=="\u0065\u006e\u0064\u006f\u0062\u006a"{break ;};}else if _ffc [0]=='s'{_ffc ,_ =_cc ._ae .Peek (10);if string (_ffc [:6])=="\u0073\u0074\u0072\u0065\u0061\u006d"{_fgf :=6;if len (_ffc )> 6{if _ed .IsWhiteSpace (_ffc [_fgf ])&&_ffc [_fgf ]!='\r'&&_ffc [_fgf ]!='\n'{_egb .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");_fgf ++;};if _ffc [_fgf ]=='\r'{_fgf ++;if _ffc [_fgf ]=='\n'{_fgf ++;};}else if _ffc [_fgf ]=='\n'{_fgf ++;};};_cc ._ae .Discard (_fgf );_fbbe ,_efb :=_dgae .PdfObject .(*_ed .PdfObjectDictionary );if !_efb {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");};_egb .Log .Trace ("\u0053\u0074\u0072\u0065\u0061\u006d\u0020\u0064\u0069c\u0074\u0020\u0025\u0073",_fbbe );_bge ,_gcbd :=_fbbe .Get ("\u004c\u0065\u006e\u0067\u0074\u0068").(*_ed .PdfObjectInteger );if !_gcbd {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");};_def :=*_bge ;if _def < 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 (_def )> _cc ._ab {_egb .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");};_eggd :=make ([]byte ,_def );_ ,_dbb =_cc .readAtLeast (_eggd ,int (_def ));if _dbb !=nil {_egb .Log .Debug ("E\u0052\u0052\u004f\u0052 s\u0074r\u0065\u0061\u006d\u0020\u0028%\u0064\u0029\u003a\u0020\u0025\u0058",len (_eggd ),_eggd );_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dbb );return nil ,_dbb ;};_ada :=_ed .PdfObjectStream {};_ada .Stream =_eggd ;_ada .PdfObjectDictionary =_dgae .PdfObject .(*_ed .PdfObjectDictionary );_ada .ObjectNumber =_dgae .ObjectNumber ;_ada .GenerationNumber =_dgae .GenerationNumber ;_cc .skipSpaces ();_cc ._ae .Discard (9);_cc .skipSpaces ();return &_ada ,nil ;};};_dgae .PdfObject ,_dbb =_cc .parseObject ();return &_dgae ,_dbb ;};};_egb .Log .Trace ("\u0052\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0021");return &_dgae ,nil ;};func (_efg *fdfParser )readTextLine ()(string ,error ){var _cec _b .Buffer ;for {_gga ,_bf :=_efg ._ae .Peek (1);if _bf !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_bf .Error ());return _cec .String (),_bf ;};if (_gga [0]!='\r')&&(_gga [0]!='\n'){_dea ,_ :=_efg ._ae .ReadByte ();_cec .WriteByte (_dea );}else {break ;};};return _cec .String (),nil ;};func (_fge *fdfParser )parseDict ()(*_ed .PdfObjectDictionary ,error ){_egb .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0046\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_cfa :=_ed .MakeDict ();_bdb ,_ :=_fge ._ae .ReadByte ();if _bdb !='<'{return nil ,_e .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");};_bdb ,_ =_fge ._ae .ReadByte ();if _bdb !='<'{return nil ,_e .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");};for {_fge .skipSpaces ();_fge .skipComments ();_efeg ,_eec :=_fge ._ae .Peek (2);if _eec !=nil {return nil ,_eec ;};_egb .Log .Trace ("D\u0069c\u0074\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_efeg ),string (_efeg ));if (_efeg [0]=='>')&&(_efeg [1]=='>'){_egb .Log .Trace ("\u0045\u004f\u0046\u0020\u0064\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079");_fge ._ae .ReadByte ();_fge ._ae .ReadByte ();break ;};_egb .Log .Trace ("\u0050a\u0072s\u0065\u0020\u0074\u0068\u0065\u0020\u006e\u0061\u006d\u0065\u0021");_ebd ,_eec :=_fge .parseName ();_egb .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_ebd );if _eec !=nil {_egb .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",_eec );return nil ,_eec ;};if len (_ebd )> 4&&_ebd [len (_ebd )-4:]=="\u006e\u0075\u006c\u006c"{_eggf :=_ebd [0:len (_ebd )-4];_egb .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",_ebd );_egb .Log .Debug ("\u004e\u0065\u0077\u0020ke\u0079\u0020\u0022\u0025\u0073\u0022\u0020\u003d\u0020\u006e\u0075\u006c\u006c",_eggf );_fge .skipSpaces ();_acgb ,_ :=_fge ._ae .Peek (1);if _acgb [0]=='/'{_cfa .Set (_eggf ,_ed .MakeNull ());continue ;};};_fge .skipSpaces ();_dbg ,_eec :=_fge .parseObject ();if _eec !=nil {return nil ,_eec ;};_cfa .Set (_ebd ,_dbg );_egb .Log .Trace ("\u0064\u0069\u0063\u0074\u005b\u0025\u0073\u005d\u0020\u003d\u0020\u0025\u0073",_ebd ,_dbg .String ());};_egb .Log .Trace ("\u0072\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0046\u0044\u0046\u0020\u0044\u0069\u0063\u0074\u0021");return _cfa ,nil ;};
|
|
|
|
// FieldValues implements interface model.FieldValueProvider.
|
|
// Returns a map of field names to values (PdfObjects).
|
|
func (fdf *Data )FieldValues ()(map[string ]_ed .PdfObject ,error ){_cbg ,_ac :=fdf .FieldDictionaries ();if _ac !=nil {return nil ,_ac ;};var _efd []string ;for _ec :=range _cbg {_efd =append (_efd ,_ec );};_df .Strings (_efd );_cea :=map[string ]_ed .PdfObject {};for _ ,_ca :=range _efd {_gac :=_cbg [_ca ];_cde :=_ed .TraceToDirectObject (_gac .Get ("\u0056"));_cea [_ca ]=_cde ;};return _cea ,nil ;};func (_dfdc *fdfParser )seekToEOFMarker (_ged int64 )error {_adfg :=int64 (0);_ffb :=int64 (1000);for _adfg < _ged {if _ged <=(_ffb +_adfg ){_ffb =_ged -_adfg ;};_ ,_bfc :=_dfdc ._bcg .Seek (-_adfg -_ffb ,_ga .SeekEnd );if _bfc !=nil {return _bfc ;};_gec :=make ([]byte ,_ffb );_dfdc ._bcg .Read (_gec );_egb .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 (_gec ));_gda :=_gc .FindAllStringIndex (string (_gec ),-1);if _gda !=nil {_cdff :=_gda [len (_gda )-1];_egb .Log .Trace ("\u0049\u006e\u0064\u003a\u0020\u0025\u0020\u0064",_gda );_dfdc ._bcg .Seek (-_adfg -_ffb +int64 (_cdff [0]),_ga .SeekEnd );return nil ;};_egb .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");_adfg +=_ffb ;};_egb .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 _eaa (_egd string )(*fdfParser ,error ){_bff :=fdfParser {};_acbd :=[]byte (_egd );_fged :=_b .NewReader (_acbd );_bff ._bcg =_fged ;_bff ._ade =map[int64 ]_ed .PdfObject {};_aea :=_f .NewReader (_fged );_bff ._ae =_aea ;_bff ._ab =int64 (len (_egd ));return &_bff ,_bff .parse ();};func (_cae *fdfParser )setFileOffset (_ea int64 ){_cae ._bcg .Seek (_ea ,_ga .SeekStart );_cae ._ae =_f .NewReader (_cae ._bcg );};var _gbb =_eg .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 (_aab *fdfParser )parseArray ()(*_ed .PdfObjectArray ,error ){_edc :=_ed .MakeArray ();_aab ._ae .ReadByte ();for {_aab .skipSpaces ();_aac ,_dde :=_aab ._ae .Peek (1);if _dde !=nil {return _edc ,_dde ;};if _aac [0]==']'{_aab ._ae .ReadByte ();break ;};_fg ,_dde :=_aab .parseObject ();if _dde !=nil {return _edc ,_dde ;};_edc .Append (_fg );};return _edc ,nil ;};func (_adg *fdfParser )trace (_cbaf _ed .PdfObject )_ed .PdfObject {switch _eegd :=_cbaf .(type ){case *_ed .PdfObjectReference :_cdd ,_fac :=_adg ._ade [_eegd .ObjectNumber ].(*_ed .PdfIndirectObject );if _fac {return _cdd .PdfObject ;};_egb .Log .Debug ("\u0054\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");return nil ;case *_ed .PdfIndirectObject :return _eegd .PdfObject ;};return _cbaf ;};func (_dga *fdfParser )parseBool ()(_ed .PdfObjectBool ,error ){_cba ,_aae :=_dga ._ae .Peek (4);if _aae !=nil {return _ed .PdfObjectBool (false ),_aae ;};if (len (_cba )>=4)&&(string (_cba [:4])=="\u0074\u0072\u0075\u0065"){_dga ._ae .Discard (4);return _ed .PdfObjectBool (true ),nil ;};_cba ,_aae =_dga ._ae .Peek (5);if _aae !=nil {return _ed .PdfObjectBool (false ),_aae ;};if (len (_cba )>=5)&&(string (_cba [:5])=="\u0066\u0061\u006cs\u0065"){_dga ._ae .Discard (5);return _ed .PdfObjectBool (false ),nil ;};return _ed .PdfObjectBool (false ),_e .New ("\u0075n\u0065\u0078\u0070\u0065c\u0074\u0065\u0064\u0020\u0062o\u006fl\u0065a\u006e\u0020\u0073\u0074\u0072\u0069\u006eg");};func (_da *fdfParser )parseFdfVersion ()(int ,int ,error ){_da ._bcg .Seek (0,_ga .SeekStart );_adff :=20;_ceb :=make ([]byte ,_adff );_da ._bcg .Read (_ceb );_fafb :=_cdc .FindStringSubmatch (string (_ceb ));if len (_fafb )< 3{_dee ,_dgab ,_baa :=_da .seekFdfVersionTopDown ();if _baa !=nil {_egb .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,_baa ;};return _dee ,_dgab ,nil ;};_bdbe ,_afbe :=_dg .Atoi (_fafb [1]);if _afbe !=nil {return 0,0,_afbe ;};_gaa ,_afbe :=_dg .Atoi (_fafb [2]);if _afbe !=nil {return 0,0,_afbe ;};_egb .Log .Debug ("\u0046\u0064\u0066\u0020\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020%\u0064\u002e\u0025\u0064",_bdbe ,_gaa );return _bdbe ,_gaa ,nil ;};
|
|
|
|
// Load loads FDF form data from `r`.
|
|
func Load (r _ga .ReadSeeker )(*Data ,error ){_fb ,_ee :=_ggec (r );if _ee !=nil {return nil ,_ee ;};_bd ,_ee :=_fb .Root ();if _ee !=nil {return nil ,_ee ;};_bdf ,_c :=_ed .GetArray (_bd .Get ("\u0046\u0069\u0065\u006c\u0064\u0073"));if !_c {return nil ,_e .New ("\u0066\u0069\u0065\u006c\u0064\u0073\u0020\u006d\u0069s\u0073\u0069\u006e\u0067");};return &Data {_fa :_bdf ,_fc :_bd },nil ;};func _ggec (_bec _ga .ReadSeeker )(*fdfParser ,error ){_eba :=&fdfParser {};_eba ._bcg =_bec ;_eba ._ade =map[int64 ]_ed .PdfObject {};_fcac ,_ffe ,_gea :=_eba .parseFdfVersion ();if _gea !=nil {_egb .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",_gea );return nil ,_gea ;};_eba ._dgg =_fcac ;_eba ._edd =_ffe ;_gea =_eba .parse ();return _eba ,_gea ;};type fdfParser struct{_dgg int ;_edd int ;_ade map[int64 ]_ed .PdfObject ;_bcg _ga .ReadSeeker ;_ae *_f .Reader ;_ab int64 ;_agb *_ed .PdfObjectDictionary ;};
|
|
|
|
// FieldDictionaries returns a map of field names to field dictionaries.
|
|
func (fdf *Data )FieldDictionaries ()(map[string ]*_ed .PdfObjectDictionary ,error ){_dc :=map[string ]*_ed .PdfObjectDictionary {};for _ce :=0;_ce < fdf ._fa .Len ();_ce ++{_fe ,_gd :=_ed .GetDict (fdf ._fa .Get (_ce ));if _gd {_aa ,_ :=_ed .GetString (_fe .Get ("\u0054"));if _aa !=nil {_dc [_aa .Str ()]=_fe ;};};};return _dc ,nil ;};func (_gde *fdfParser )readAtLeast (_bdg []byte ,_bb int )(int ,error ){_dfd :=_bb ;_dge :=0;_gdb :=0;for _dfd > 0{_fec ,_bc :=_gde ._ae .Read (_bdg [_dge :]);if _bc !=nil {_egb .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",_fec ,_gdb ,_bc .Error ());return _dge ,_e .New ("\u0066\u0061\u0069\u006c\u0065\u0064\u0020\u0072\u0065a\u0064\u0069\u006e\u0067");};_gdb ++;_dge +=_fec ;_dfd -=_fec ;};return _dge ,nil ;};
|
|
|
|
// Data represents forms data format (FDF) file data.
|
|
type Data struct{_fc *_ed .PdfObjectDictionary ;_fa *_ed .PdfObjectArray ;};func (_efe *fdfParser )readComment ()(string ,error ){var _ebg _b .Buffer ;_ ,_dcd :=_efe .skipSpaces ();if _dcd !=nil {return _ebg .String (),_dcd ;};_fad :=true ;for {_edde ,_faf :=_efe ._ae .Peek (1);if _faf !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_faf .Error ());return _ebg .String (),_faf ;};if _fad &&_edde [0]!='%'{return _ebg .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");};_fad =false ;if (_edde [0]!='\r')&&(_edde [0]!='\n'){_egf ,_ :=_efe ._ae .ReadByte ();_ebg .WriteByte (_egf );}else {break ;};};return _ebg .String (),nil ;};var _gc =_eg .MustCompile ("\u0025\u0025\u0045O\u0046");func (_abd *fdfParser )seekFdfVersionTopDown ()(int ,int ,error ){_abd ._bcg .Seek (0,_ga .SeekStart );_abd ._ae =_f .NewReader (_abd ._bcg );_bea :=20;_ddf :=make ([]byte ,_bea );for {_cfb ,_acge :=_abd ._ae .ReadByte ();if _acge !=nil {if _acge ==_ga .EOF {break ;}else {return 0,0,_acge ;};};if _ed .IsDecimalDigit (_cfb )&&_ddf [_bea -1]=='.'&&_ed .IsDecimalDigit (_ddf [_bea -2])&&_ddf [_bea -3]=='-'&&_ddf [_bea -4]=='F'&&_ddf [_bea -5]=='D'&&_ddf [_bea -6]=='P'{_fbg :=int (_ddf [_bea -2]-'0');_dcdg :=int (_cfb -'0');return _fbg ,_dcdg ,nil ;};_ddf =append (_ddf [1:_bea ],_cfb );};return 0,0,_e .New ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};
|
|
|
|
// LoadFromPath loads FDF form data from file path `fdfPath`.
|
|
func LoadFromPath (fdfPath string )(*Data ,error ){_gb ,_cd :=_dgf .Open (fdfPath );if _cd !=nil {return nil ,_cd ;};defer _gb .Close ();return Load (_gb );};var _dd =_eg .MustCompile ("\u0028\u005c\u0064\u002b)\\\u0073\u002b\u0028\u005c\u0064\u002b\u0029\u005c\u0073\u002b\u006f\u0062\u006a");func _ege (_egbg string )(_ed .PdfObjectReference ,error ){_ega :=_ed .PdfObjectReference {};_egg :=_acc .FindStringSubmatch (_egbg );if len (_egg )< 3{_egb .Log .Debug ("\u0045\u0072\u0072or\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065");return _ega ,_e .New ("\u0075n\u0061\u0062\u006c\u0065 \u0074\u006f\u0020\u0070\u0061r\u0073e\u0020r\u0065\u0066\u0065\u0072\u0065\u006e\u0063e");};_fbc ,_eff :=_dg .Atoi (_egg [1]);if _eff !=nil {_egb .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",_egg [1]);return _ega ,nil ;};_ega .ObjectNumber =int64 (_fbc );_dca ,_eff :=_dg .Atoi (_egg [2]);if _eff !=nil {_egb .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",_egg [2]);return _ega ,nil ;};_ega .GenerationNumber =int64 (_dca );return _ega ,nil ;}; |