mirror of
https://github.com/unidoc/unipdf.git
synced 2025-05-01 22:17:29 +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 (_gf "bufio";_fg "bytes";_ed "encoding/hex";_a "errors";_ff "fmt";_af "github.com/unidoc/unipdf/v3/common";_ga "github.com/unidoc/unipdf/v3/core";_gfd "io";_d "os";_f "regexp";_fc "sort";_g "strconv";_c "strings";);func (_ggc *fdfParser )parseHexString ()(*_ga .PdfObjectString ,error ){_ggc ._ba .ReadByte ();var _gec _fg .Buffer ;for {_dbgc ,_gca :=_ggc ._ba .Peek (1);if _gca !=nil {return _ga .MakeHexString (""),_gca ;};if _dbgc [0]=='>'{_ggc ._ba .ReadByte ();break ;};_gcb ,_ :=_ggc ._ba .ReadByte ();if !_ga .IsWhiteSpace (_gcb ){_gec .WriteByte (_gcb );};};if _gec .Len ()%2==1{_gec .WriteRune ('0');};_aed ,_ag :=_ed .DecodeString (_gec .String ());if _ag !=nil {_af .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",_gec .String ());return _ga .MakeHexString (""),nil ;};return _ga .MakeHexString (string (_aed )),nil ;};func (_cdfc *fdfParser )skipSpaces ()(int ,error ){_gd :=0;for {_bfb ,_cg :=_cdfc ._ba .ReadByte ();if _cg !=nil {return 0,_cg ;};if _ga .IsWhiteSpace (_bfb ){_gd ++;}else {_cdfc ._ba .UnreadByte ();break ;};};return _gd ,nil ;};
|
|
|
|
// Root returns the Root of the FDF document.
|
|
func (_ggg *fdfParser )Root ()(*_ga .PdfObjectDictionary ,error ){if _ggg ._bcd !=nil {if _cafa ,_geg :=_ggg .trace (_ggg ._bcd .Get ("\u0052\u006f\u006f\u0074")).(*_ga .PdfObjectDictionary );_geg {if _gffc ,_fbbf :=_ggg .trace (_cafa .Get ("\u0046\u0044\u0046")).(*_ga .PdfObjectDictionary );_fbbf {return _gffc ,nil ;};};};var _eab []int64 ;for _eff :=range _ggg ._ggd {_eab =append (_eab ,_eff );};_fc .Slice (_eab ,func (_ddf ,_cac int )bool {return _eab [_ddf ]< _eab [_cac ]});for _ ,_edg :=range _eab {_facg :=_ggg ._ggd [_edg ];if _gba ,_bed :=_ggg .trace (_facg ).(*_ga .PdfObjectDictionary );_bed {if _eaf ,_gea :=_ggg .trace (_gba .Get ("\u0046\u0044\u0046")).(*_ga .PdfObjectDictionary );_gea {return _eaf ,nil ;};};};return nil ,_a .New ("\u0046\u0044\u0046\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};func (_db *fdfParser )skipComments ()error {if _ ,_ebe :=_db .skipSpaces ();_ebe !=nil {return _ebe ;};_dg :=true ;for {_acd ,_gcg :=_db ._ba .Peek (1);if _gcg !=nil {_af .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_gcg .Error ());return _gcg ;};if _dg &&_acd [0]!='%'{return nil ;};_dg =false ;if (_acd [0]!='\r')&&(_acd [0]!='\n'){_db ._ba .ReadByte ();}else {break ;};};return _db .skipComments ();};func (_edb *fdfParser )parseNumber ()(_ga .PdfObject ,error ){return _ga .ParseNumber (_edb ._ba )};func (_bca *fdfParser )readTextLine ()(string ,error ){var _aac _fg .Buffer ;for {_cad ,_ea :=_bca ._ba .Peek (1);if _ea !=nil {_af .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_ea .Error ());return _aac .String (),_ea ;};if (_cad [0]!='\r')&&(_cad [0]!='\n'){_bac ,_ :=_bca ._ba .ReadByte ();_aac .WriteByte (_bac );}else {break ;};};return _aac .String (),nil ;};func (_ab *fdfParser )setFileOffset (_faf int64 ){_ab ._efe .Seek (_faf ,_gfd .SeekStart );_ab ._ba =_gf .NewReader (_ab ._efe );};func (_ebd *fdfParser )parseDict ()(*_ga .PdfObjectDictionary ,error ){_af .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0046\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_efb :=_ga .MakeDict ();_gdd ,_ :=_ebd ._ba .ReadByte ();if _gdd !='<'{return nil ,_a .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");};_gdd ,_ =_ebd ._ba .ReadByte ();if _gdd !='<'{return nil ,_a .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");};for {_ebd .skipSpaces ();_ebd .skipComments ();_fgb ,_dfb :=_ebd ._ba .Peek (2);if _dfb !=nil {return nil ,_dfb ;};_af .Log .Trace ("D\u0069c\u0074\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_fgb ),string (_fgb ));if (_fgb [0]=='>')&&(_fgb [1]=='>'){_af .Log .Trace ("\u0045\u004f\u0046\u0020\u0064\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079");_ebd ._ba .ReadByte ();_ebd ._ba .ReadByte ();break ;};_af .Log .Trace ("\u0050a\u0072s\u0065\u0020\u0074\u0068\u0065\u0020\u006e\u0061\u006d\u0065\u0021");_gcf ,_dfb :=_ebd .parseName ();_af .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_gcf );if _dfb !=nil {_af .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",_dfb );return nil ,_dfb ;};if len (_gcf )> 4&&_gcf [len (_gcf )-4:]=="\u006e\u0075\u006c\u006c"{_bagd :=_gcf [0:len (_gcf )-4];_af .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",_gcf );_af .Log .Debug ("\u004e\u0065\u0077\u0020ke\u0079\u0020\u0022\u0025\u0073\u0022\u0020\u003d\u0020\u006e\u0075\u006c\u006c",_bagd );_ebd .skipSpaces ();_gff ,_ :=_ebd ._ba .Peek (1);if _gff [0]=='/'{_efb .Set (_bagd ,_ga .MakeNull ());continue ;};};_ebd .skipSpaces ();_fac ,_dfb :=_ebd .parseObject ();if _dfb !=nil {return nil ,_dfb ;};_efb .Set (_gcf ,_fac );_af .Log .Trace ("\u0064\u0069\u0063\u0074\u005b\u0025\u0073\u005d\u0020\u003d\u0020\u0025\u0073",_gcf ,_fac .String ());};_af .Log .Trace ("\u0072\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0046\u0044\u0046\u0020\u0044\u0069\u0063\u0074\u0021");return _efb ,nil ;};func _ced (_eeec string )(_ga .PdfObjectReference ,error ){_gcc :=_ga .PdfObjectReference {};_fdb :=_fgc .FindStringSubmatch (string (_eeec ));if len (_fdb )< 3{_af .Log .Debug ("\u0045\u0072\u0072or\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065");return _gcc ,_a .New ("\u0075n\u0061\u0062\u006c\u0065 \u0074\u006f\u0020\u0070\u0061r\u0073e\u0020r\u0065\u0066\u0065\u0072\u0065\u006e\u0063e");};_gcbg ,_dfca :=_g .Atoi (_fdb [1]);if _dfca !=nil {_af .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",_fdb [1]);return _gcc ,nil ;};_gcc .ObjectNumber =int64 (_gcbg );_dbe ,_dfca :=_g .Atoi (_fdb [2]);if _dfca !=nil {_af .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",_fdb [2]);return _gcc ,nil ;};_gcc .GenerationNumber =int64 (_dbe );return _gcc ,nil ;};var _fgc =_f .MustCompile ("^\u005c\u0073\u002a\u0028\\d\u002b)\u005c\u0073\u002b\u0028\u005cd\u002b\u0029\u005c\u0073\u002b\u0052");var _bfc =_f .MustCompile ("\u0028\u005c\u0064\u002b)\\\u0073\u002b\u0028\u005c\u0064\u002b\u0029\u005c\u0073\u002b\u006f\u0062\u006a");func (_dce *fdfParser )parseName ()(_ga .PdfObjectName ,error ){var _efa _fg .Buffer ;_fcf :=false ;for {_bfd ,_de :=_dce ._ba .Peek (1);if _de ==_gfd .EOF {break ;};if _de !=nil {return _ga .PdfObjectName (_efa .String ()),_de ;};if !_fcf {if _bfd [0]=='/'{_fcf =true ;_dce ._ba .ReadByte ();}else if _bfd [0]=='%'{_dce .readComment ();_dce .skipSpaces ();}else {_af .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",_bfd ,_bfd );return _ga .PdfObjectName (_efa .String ()),_ff .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_bfd [0]);};}else {if _ga .IsWhiteSpace (_bfd [0]){break ;}else if (_bfd [0]=='/')||(_bfd [0]=='[')||(_bfd [0]=='(')||(_bfd [0]==']')||(_bfd [0]=='<')||(_bfd [0]=='>'){break ;}else if _bfd [0]=='#'{_fed ,_cbf :=_dce ._ba .Peek (3);if _cbf !=nil {return _ga .PdfObjectName (_efa .String ()),_cbf ;};_dce ._ba .Discard (3);_afea ,_cbf :=_ed .DecodeString (string (_fed [1:3]));if _cbf !=nil {return _ga .PdfObjectName (_efa .String ()),_cbf ;};_efa .Write (_afea );}else {_eee ,_ :=_dce ._ba .ReadByte ();_efa .WriteByte (_eee );};};};return _ga .PdfObjectName (_efa .String ()),nil ;};func (_debf *fdfParser )parseIndirectObject ()(_ga .PdfObject ,error ){_cbc :=_ga .PdfIndirectObject {};_af .Log .Trace ("\u002dR\u0065a\u0064\u0020\u0069\u006e\u0064i\u0072\u0065c\u0074\u0020\u006f\u0062\u006a");_fdff ,_ecab :=_debf ._ba .Peek (20);if _ecab !=nil {_af .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 &_cbc ,_ecab ;};_af .Log .Trace ("\u0028\u0069\u006edi\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0020\u0070\u0065\u0065\u006b\u0020\u0022\u0025\u0073\u0022",string (_fdff ));_dadd :=_bfc .FindStringSubmatchIndex (string (_fdff ));if len (_dadd )< 6{_af .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 (_fdff ));return &_cbc ,_a .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");};_debf ._ba .Discard (_dadd [0]);_af .Log .Trace ("O\u0066\u0066\u0073\u0065\u0074\u0073\u0020\u0025\u0020\u0064",_dadd );_ceg :=_dadd [1]-_dadd [0];_fb :=make ([]byte ,_ceg );_ ,_ecab =_debf .readAtLeast (_fb ,_ceg );if _ecab !=nil {_af .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",_ecab );return nil ,_ecab ;};_af .Log .Trace ("\u0074\u0065\u0078t\u006c\u0069\u006e\u0065\u003a\u0020\u0025\u0073",_fb );_cge :=_bfc .FindStringSubmatch (string (_fb ));if len (_cge )< 3{_af .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 (_fb ));return &_cbc ,_a .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");};_dfa ,_ :=_g .Atoi (_cge [1]);_cgd ,_ :=_g .Atoi (_cge [2]);_cbc .ObjectNumber =int64 (_dfa );_cbc .GenerationNumber =int64 (_cgd );for {_ece ,_cgf :=_debf ._ba .Peek (2);if _cgf !=nil {return &_cbc ,_cgf ;};_af .Log .Trace ("I\u006ed\u002e\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_ece ),string (_ece ));if _ga .IsWhiteSpace (_ece [0]){_debf .skipSpaces ();}else if _ece [0]=='%'{_debf .skipComments ();}else if (_ece [0]=='<')&&(_ece [1]=='<'){_af .Log .Trace ("\u0043\u0061\u006c\u006c\u0020\u0050\u0061\u0072\u0073e\u0044\u0069\u0063\u0074");_cbc .PdfObject ,_cgf =_debf .parseDict ();_af .Log .Trace ("\u0045\u004f\u0046\u0020Ca\u006c\u006c\u0020\u0050\u0061\u0072\u0073\u0065\u0044\u0069\u0063\u0074\u003a\u0020%\u0076",_cgf );if _cgf !=nil {return &_cbc ,_cgf ;};_af .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 (_ece [0]=='/')||(_ece [0]=='(')||(_ece [0]=='[')||(_ece [0]=='<'){_cbc .PdfObject ,_cgf =_debf .parseObject ();if _cgf !=nil {return &_cbc ,_cgf ;};_af .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 _ece [0]=='e'{_aeb ,_aca :=_debf .readTextLine ();if _aca !=nil {return nil ,_aca ;};if len (_aeb )>=6&&_aeb [0:6]=="\u0065\u006e\u0064\u006f\u0062\u006a"{break ;};}else if _ece [0]=='s'{_ece ,_ =_debf ._ba .Peek (10);if string (_ece [:6])=="\u0073\u0074\u0072\u0065\u0061\u006d"{_gag :=6;if len (_ece )> 6{if _ga .IsWhiteSpace (_ece [_gag ])&&_ece [_gag ]!='\r'&&_ece [_gag ]!='\n'{_af .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");_gag ++;};if _ece [_gag ]=='\r'{_gag ++;if _ece [_gag ]=='\n'{_gag ++;};}else if _ece [_gag ]=='\n'{_gag ++;};};_debf ._ba .Discard (_gag );_dafb ,_ggdbb :=_cbc .PdfObject .(*_ga .PdfObjectDictionary );if !_ggdbb {return nil ,_a .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");};_af .Log .Trace ("\u0053\u0074\u0072\u0065\u0061\u006d\u0020\u0064\u0069c\u0074\u0020\u0025\u0073",_dafb );_bgg ,_bacd :=_dafb .Get ("\u004c\u0065\u006e\u0067\u0074\u0068").(*_ga .PdfObjectInteger );if !_bacd {return nil ,_a .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");};_cbg :=*_bgg ;if _cbg < 0{return nil ,_a .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 (_cbg )> _debf ._cae {_af .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 ,_a .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");};_gecd :=make ([]byte ,_cbg );_ ,_cgf =_debf .readAtLeast (_gecd ,int (_cbg ));if _cgf !=nil {_af .Log .Debug ("E\u0052\u0052\u004f\u0052 s\u0074r\u0065\u0061\u006d\u0020\u0028%\u0064\u0029\u003a\u0020\u0025\u0058",len (_gecd ),_gecd );_af .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_cgf );return nil ,_cgf ;};_ggaf :=_ga .PdfObjectStream {};_ggaf .Stream =_gecd ;_ggaf .PdfObjectDictionary =_cbc .PdfObject .(*_ga .PdfObjectDictionary );_ggaf .ObjectNumber =_cbc .ObjectNumber ;_ggaf .GenerationNumber =_cbc .GenerationNumber ;_debf .skipSpaces ();_debf ._ba .Discard (9);_debf .skipSpaces ();return &_ggaf ,nil ;};};_cbc .PdfObject ,_cgf =_debf .parseObject ();return &_cbc ,_cgf ;};};_af .Log .Trace ("\u0052\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0021");return &_cbc ,nil ;};
|
|
|
|
// Data represents forms data format (FDF) file data.
|
|
type Data struct{_ae *_ga .PdfObjectDictionary ;_fge *_ga .PdfObjectArray ;};
|
|
|
|
// FieldValues implements interface model.FieldValueProvider.
|
|
// Returns a map of field names to values (PdfObjects).
|
|
func (fdf *Data )FieldValues ()(map[string ]_ga .PdfObject ,error ){_dad ,_cb :=fdf .FieldDictionaries ();if _cb !=nil {return nil ,_cb ;};var _gc []string ;for _ef :=range _dad {_gc =append (_gc ,_ef );};_fc .Strings (_gc );_bg :=map[string ]_ga .PdfObject {};for _ ,_cdf :=range _gc {_cba :=_dad [_cdf ];_aae :=_ga .TraceToDirectObject (_cba .Get ("\u0056"));_bg [_cdf ]=_aae ;};return _bg ,nil ;};func (_ecb *fdfParser )parseObject ()(_ga .PdfObject ,error ){_af .Log .Trace ("\u0052e\u0061d\u0020\u0064\u0069\u0072\u0065c\u0074\u0020o\u0062\u006a\u0065\u0063\u0074");_ecb .skipSpaces ();for {_gb ,_fcfg :=_ecb ._ba .Peek (2);if _fcfg !=nil {return nil ,_fcfg ;};_af .Log .Trace ("\u0050e\u0065k\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_gb ));if _gb [0]=='/'{_ddc ,_fec :=_ecb .parseName ();_af .Log .Trace ("\u002d\u003e\u004ea\u006d\u0065\u003a\u0020\u0027\u0025\u0073\u0027",_ddc );return &_ddc ,_fec ;}else if _gb [0]=='('{_af .Log .Trace ("\u002d>\u0053\u0074\u0072\u0069\u006e\u0067!");return _ecb .parseString ();}else if _gb [0]=='['{_af .Log .Trace ("\u002d\u003e\u0041\u0072\u0072\u0061\u0079\u0021");return _ecb .parseArray ();}else if (_gb [0]=='<')&&(_gb [1]=='<'){_af .Log .Trace ("\u002d>\u0044\u0069\u0063\u0074\u0021");return _ecb .parseDict ();}else if _gb [0]=='<'{_af .Log .Trace ("\u002d\u003e\u0048\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0021");return _ecb .parseHexString ();}else if _gb [0]=='%'{_ecb .readComment ();_ecb .skipSpaces ();}else {_af .Log .Trace ("\u002d\u003eN\u0075\u006d\u0062e\u0072\u0020\u006f\u0072\u0020\u0072\u0065\u0066\u003f");_gb ,_ =_ecb ._ba .Peek (15);_bfdd :=string (_gb );_af .Log .Trace ("\u0050\u0065\u0065k\u0020\u0073\u0074\u0072\u003a\u0020\u0025\u0073",_bfdd );if (len (_bfdd )> 3)&&(_bfdd [:4]=="\u006e\u0075\u006c\u006c"){_gfg ,_bdb :=_ecb .parseNull ();return &_gfg ,_bdb ;}else if (len (_bfdd )> 4)&&(_bfdd [:5]=="\u0066\u0061\u006cs\u0065"){_bgc ,_gdf :=_ecb .parseBool ();return &_bgc ,_gdf ;}else if (len (_bfdd )> 3)&&(_bfdd [:4]=="\u0074\u0072\u0075\u0065"){_aga ,_bfa :=_ecb .parseBool ();return &_aga ,_bfa ;};_bae :=_fgc .FindStringSubmatch (string (_bfdd ));if len (_bae )> 1{_gb ,_ =_ecb ._ba .ReadBytes ('R');_af .Log .Trace ("\u002d\u003e\u0020\u0021\u0052\u0065\u0066\u003a\u0020\u0027\u0025\u0073\u0027",string (_gb [:]));_bec ,_cded :=_ced (string (_gb ));return &_bec ,_cded ;};_gfga :=_bc .FindStringSubmatch (string (_bfdd ));if len (_gfga )> 1{_af .Log .Trace ("\u002d\u003e\u0020\u004e\u0075\u006d\u0062\u0065\u0072\u0021");return _ecb .parseNumber ();};_gfga =_gge .FindStringSubmatch (string (_bfdd ));if len (_gfga )> 1{_af .Log .Trace ("\u002d\u003e\u0020\u0045xp\u006f\u006e\u0065\u006e\u0074\u0069\u0061\u006c\u0020\u004e\u0075\u006d\u0062\u0065r\u0021");_af .Log .Trace ("\u0025\u0020\u0073",_gfga );return _ecb .parseNumber ();};_af .Log .Debug ("\u0045R\u0052\u004f\u0052\u0020U\u006e\u006b\u006e\u006f\u0077n\u0020(\u0070e\u0065\u006b\u0020\u0022\u0025\u0073\u0022)",_bfdd );return nil ,_a .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 (_gfc *fdfParser )trace (_cbcc _ga .PdfObject )_ga .PdfObject {switch _cafe :=_cbcc .(type ){case *_ga .PdfObjectReference :_fafea ,_ega :=_gfc ._ggd [_cafe .ObjectNumber ].(*_ga .PdfIndirectObject );if _ega {return _fafea .PdfObject ;};_af .Log .Debug ("\u0054\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");return nil ;case *_ga .PdfIndirectObject :return _cafe .PdfObject ;};return _cbcc ;};func (_dcfb *fdfParser )parseArray ()(*_ga .PdfObjectArray ,error ){_baa :=_ga .MakeArray ();_dcfb ._ba .ReadByte ();for {_dcfb .skipSpaces ();_gac ,_dfc :=_dcfb ._ba .Peek (1);if _dfc !=nil {return _baa ,_dfc ;};if _gac [0]==']'{_dcfb ._ba .ReadByte ();break ;};_ccc ,_dfc :=_dcfb .parseObject ();if _dfc !=nil {return _baa ,_dfc ;};_baa .Append (_ccc );};return _baa ,nil ;};var _fde =_f .MustCompile ("\u0025\u0025\u0045O\u0046");var _gge =_f .MustCompile ("\u005e\u005b\u005c+-\u002e\u005d\u002a\u0028\u005b\u0030\u002d\u0039\u002e]\u002b)\u0065[\u005c+\u002d\u002e\u005d\u002a\u0028\u005b\u0030\u002d\u0039\u002e\u005d\u002b\u0029");func (_fdf *fdfParser )parseBool ()(_ga .PdfObjectBool ,error ){_ffe ,_agd :=_fdf ._ba .Peek (4);if _agd !=nil {return _ga .PdfObjectBool (false ),_agd ;};if (len (_ffe )>=4)&&(string (_ffe [:4])=="\u0074\u0072\u0075\u0065"){_fdf ._ba .Discard (4);return _ga .PdfObjectBool (true ),nil ;};_ffe ,_agd =_fdf ._ba .Peek (5);if _agd !=nil {return _ga .PdfObjectBool (false ),_agd ;};if (len (_ffe )>=5)&&(string (_ffe [:5])=="\u0066\u0061\u006cs\u0065"){_fdf ._ba .Discard (5);return _ga .PdfObjectBool (false ),nil ;};return _ga .PdfObjectBool (false ),_a .New ("\u0075n\u0065\u0078\u0070\u0065c\u0074\u0065\u0064\u0020\u0062o\u006fl\u0065a\u006e\u0020\u0073\u0074\u0072\u0069\u006eg");};func (_fcb *fdfParser )parse ()error {_fcb ._efe .Seek (0,_gfd .SeekStart );_fcb ._ba =_gf .NewReader (_fcb ._efe );for {_fcb .skipComments ();_gbb ,_gae :=_fcb ._ba .Peek (20);if _gae !=nil {_af .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 _gae ;};if _c .HasPrefix (string (_gbb ),"\u0074r\u0061\u0069\u006c\u0065\u0072"){_fcb ._ba .Discard (7);_fcb .skipSpaces ();_fcb .skipComments ();_dcg ,_ :=_fcb .parseDict ();_fcb ._bcd =_dcg ;break ;};_bdc :=_bfc .FindStringSubmatchIndex (string (_gbb ));if len (_bdc )< 6{_af .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 (_gbb ));return _a .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");};_fcd ,_gae :=_fcb .parseIndirectObject ();if _gae !=nil {return _gae ;};switch _gaaf :=_fcd .(type ){case *_ga .PdfIndirectObject :_fcb ._ggd [_gaaf .ObjectNumber ]=_gaaf ;case *_ga .PdfObjectStream :_fcb ._ggd [_gaaf .ObjectNumber ]=_gaaf ;default:return _a .New ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};};return nil ;};func (_fag *fdfParser )parseFdfVersion ()(int ,int ,error ){_fag ._efe .Seek (0,_gfd .SeekStart );_fafb :=20;_cadd :=make ([]byte ,_fafb );_fag ._efe .Read (_cadd );_bge :=_fe .FindStringSubmatch (string (_cadd ));if len (_bge )< 3{_ebdf ,_efea ,_bgd :=_fag .seekFdfVersionTopDown ();if _bgd !=nil {_af .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,_bgd ;};return _ebdf ,_efea ,nil ;};_gga ,_ffb :=_g .Atoi (_bge [1]);if _ffb !=nil {return 0,0,_ffb ;};_bcag ,_ffb :=_g .Atoi (_bge [2]);if _ffb !=nil {return 0,0,_ffb ;};_af .Log .Debug ("\u0046\u0064\u0066\u0020\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020%\u0064\u002e\u0025\u0064",_gga ,_bcag );return int (_gga ),int (_bcag ),nil ;};var _bc =_f .MustCompile ("\u005e\u005b\u005c\u002b\u002d\u002e\u005d\u002a\u0028\u005b\u0030\u002d9\u002e\u005d\u002b\u0029");
|
|
|
|
// FieldDictionaries returns a map of field names to field dictionaries.
|
|
func (fdf *Data )FieldDictionaries ()(map[string ]*_ga .PdfObjectDictionary ,error ){_eb :=map[string ]*_ga .PdfObjectDictionary {};for _eg :=0;_eg < fdf ._fge .Len ();_eg ++{_dd ,_aa :=_ga .GetDict (fdf ._fge .Get (_eg ));if _aa {_fd ,_ :=_ga .GetString (_dd .Get ("\u0054"));if _fd !=nil {_eb [_fd .Str ()]=_dd ;};};};return _eb ,nil ;};func (_ce *fdfParser )readAtLeast (_ca []byte ,_aea int )(int ,error ){_ecg :=_aea ;_ee :=0;_ac :=0;for _ecg > 0{_fa ,_be :=_ce ._ba .Read (_ca [_ee :]);if _be !=nil {_af .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",_fa ,_ac ,_be .Error ());return _ee ,_a .New ("\u0066\u0061\u0069\u006c\u0065\u0064\u0020\u0072\u0065a\u0064\u0069\u006e\u0067");};_ac ++;_ee +=_fa ;_ecg -=_fa ;};return _ee ,nil ;};func _aef (_fda _gfd .ReadSeeker )(*fdfParser ,error ){_acg :=&fdfParser {};_acg ._efe =_fda ;_acg ._ggd =map[int64 ]_ga .PdfObject {};_ecc ,_geac ,_gaa :=_acg .parseFdfVersion ();if _gaa !=nil {_af .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",_gaa );return nil ,_gaa ;};_acg ._ebf =_ecc ;_acg ._daf =_geac ;_gaa =_acg .parse ();return _acg ,_gaa ;};
|
|
|
|
// LoadFromPath loads FDF form data from file path `fdfPath`.
|
|
func LoadFromPath (fdfPath string )(*Data ,error ){_bb ,_ec :=_d .Open (fdfPath );if _ec !=nil {return nil ,_ec ;};defer _bb .Close ();return Load (_bb );};func (_dc *fdfParser )getFileOffset ()int64 {_dcf ,_ :=_dc ._efe .Seek (0,_gfd .SeekCurrent );_dcf -=int64 (_dc ._ba .Buffered ());return _dcf ;};
|
|
|
|
// Load loads FDF form data from `r`.
|
|
func Load (r _gfd .ReadSeeker )(*Data ,error ){_gg ,_gaf :=_aef (r );if _gaf !=nil {return nil ,_gaf ;};_cd ,_gaf :=_gg .Root ();if _gaf !=nil {return nil ,_gaf ;};_b ,_ad :=_ga .GetArray (_cd .Get ("\u0046\u0069\u0065\u006c\u0064\u0073"));if !_ad {return nil ,_a .New ("\u0066\u0069\u0065\u006c\u0064\u0073\u0020\u006d\u0069s\u0073\u0069\u006e\u0067");};return &Data {_fge :_b ,_ae :_cd },nil ;};type fdfParser struct{_ebf int ;_daf int ;_ggd map[int64 ]_ga .PdfObject ;_efe _gfd .ReadSeeker ;_ba *_gf .Reader ;_cae int64 ;_bcd *_ga .PdfObjectDictionary ;};func (_eea *fdfParser )parseNull ()(_ga .PdfObjectNull ,error ){_ ,_ade :=_eea ._ba .Discard (4);return _ga .PdfObjectNull {},_ade ;};func _dbf (_ggb string )(*fdfParser ,error ){_eec :=fdfParser {};_ebg :=[]byte (_ggb );_cfc :=_fg .NewReader (_ebg );_eec ._efe =_cfc ;_eec ._ggd =map[int64 ]_ga .PdfObject {};_efd :=_gf .NewReader (_cfc );_eec ._ba =_efd ;_eec ._cae =int64 (len (_ggb ));return &_eec ,_eec .parse ();};func (_dgd *fdfParser )readComment ()(string ,error ){var _dac _fg .Buffer ;_ ,_fafe :=_dgd .skipSpaces ();if _fafe !=nil {return _dac .String (),_fafe ;};_bag :=true ;for {_fgeb ,_ecgc :=_dgd ._ba .Peek (1);if _ecgc !=nil {_af .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_ecgc .Error ());return _dac .String (),_ecgc ;};if _bag &&_fgeb [0]!='%'{return _dac .String (),_a .New ("c\u006f\u006d\u006d\u0065\u006e\u0074 \u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0073\u0074a\u0072\u0074\u0020w\u0069t\u0068\u0020\u0025");};_bag =false ;if (_fgeb [0]!='\r')&&(_fgeb [0]!='\n'){_cf ,_ :=_dgd ._ba .ReadByte ();_dac .WriteByte (_cf );}else {break ;};};return _dac .String (),nil ;};func (_eef *fdfParser )parseString ()(*_ga .PdfObjectString ,error ){_eef ._ba .ReadByte ();var _fcc _fg .Buffer ;_cde :=1;for {_eed ,_dae :=_eef ._ba .Peek (1);if _dae !=nil {return _ga .MakeString (_fcc .String ()),_dae ;};if _eed [0]=='\\'{_eef ._ba .ReadByte ();_dbg ,_gfdd :=_eef ._ba .ReadByte ();if _gfdd !=nil {return _ga .MakeString (_fcc .String ()),_gfdd ;};if _ga .IsOctalDigit (_dbg ){_caa ,_bfe :=_eef ._ba .Peek (2);if _bfe !=nil {return _ga .MakeString (_fcc .String ()),_bfe ;};var _gfa []byte ;_gfa =append (_gfa ,_dbg );for _ ,_ggdb :=range _caa {if _ga .IsOctalDigit (_ggdb ){_gfa =append (_gfa ,_ggdb );}else {break ;};};_eef ._ba .Discard (len (_gfa )-1);_af .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_gfa );_cc ,_bfe :=_g .ParseUint (string (_gfa ),8,32);if _bfe !=nil {return _ga .MakeString (_fcc .String ()),_bfe ;};_fcc .WriteByte (byte (_cc ));continue ;};switch _dbg {case 'n':_fcc .WriteRune ('\n');case 'r':_fcc .WriteRune ('\r');case 't':_fcc .WriteRune ('\t');case 'b':_fcc .WriteRune ('\b');case 'f':_fcc .WriteRune ('\f');case '(':_fcc .WriteRune ('(');case ')':_fcc .WriteRune (')');case '\\':_fcc .WriteRune ('\\');};continue ;}else if _eed [0]=='('{_cde ++;}else if _eed [0]==')'{_cde --;if _cde ==0{_eef ._ba .ReadByte ();break ;};};_df ,_ :=_eef ._ba .ReadByte ();_fcc .WriteByte (_df );};return _ga .MakeString (_fcc .String ()),nil ;};var _fe =_f .MustCompile ("\u0025F\u0044F\u002d\u0028\u005c\u0064\u0029\u005c\u002e\u0028\u005c\u0064\u0029");func (_egg *fdfParser )seekFdfVersionTopDown ()(int ,int ,error ){_egg ._efe .Seek (0,_gfd .SeekStart );_egg ._ba =_gf .NewReader (_egg ._efe );_fdad :=20;_edga :=make ([]byte ,_fdad );for {_beca ,_eaba :=_egg ._ba .ReadByte ();if _eaba !=nil {if _eaba ==_gfd .EOF {break ;}else {return 0,0,_eaba ;};};if _ga .IsDecimalDigit (_beca )&&_edga [_fdad -1]=='.'&&_ga .IsDecimalDigit (_edga [_fdad -2])&&_edga [_fdad -3]=='-'&&_edga [_fdad -4]=='F'&&_edga [_fdad -5]=='D'&&_edga [_fdad -6]=='P'{_abd :=int (_edga [_fdad -2]-'0');_cdb :=int (_beca -'0');return _abd ,_cdb ,nil ;};_edga =append (_edga [1:_fdad ],_beca );};return 0,0,_a .New ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};func (_dba *fdfParser )seekToEOFMarker (_fcg int64 )error {_adc :=int64 (0);_bbd :=int64 (1000);for _adc < _fcg {if _fcg <=(_bbd +_adc ){_bbd =_fcg -_adc ;};_ ,_bcb :=_dba ._efe .Seek (-_adc -_bbd ,_gfd .SeekEnd );if _bcb !=nil {return _bcb ;};_adcc :=make ([]byte ,_bbd );_dba ._efe .Read (_adcc );_af .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 (_adcc ));_cab :=_fde .FindAllStringIndex (string (_adcc ),-1);if _cab !=nil {_cddb :=_cab [len (_cab )-1];_af .Log .Trace ("\u0049\u006e\u0064\u003a\u0020\u0025\u0020\u0064",_cab );_dba ._efe .Seek (-_adc -_bbd +int64 (_cddb [0]),_gfd .SeekEnd );return nil ;};_af .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");_adc +=_bbd ;};_af .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 _a .New ("\u0045\u004f\u0046\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");}; |