unipdf/fjson/fjson.go

37 lines
3.2 KiB
Go
Raw Normal View History

2020-08-27 21:45:09 +00:00
//
// 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 fjson provides support for loading PDF form field data from JSON data/files.
2020-08-31 21:12:07 +00:00
package fjson ;import (_a "encoding/json";_ca "github.com/unidoc/unipdf/v3/core";_eg "github.com/unidoc/unipdf/v3/model";_e "io";_c "os";);type fieldValue struct{Name string `json:"name"`;Value string `json:"value"`;
2020-08-27 21:45:09 +00:00
2020-08-31 21:12:07 +00:00
// Options lists allowed values if present.
Options []string `json:"options,omitempty"`;};
2020-08-27 21:45:09 +00:00
2020-08-31 21:12:07 +00:00
// FieldData represents form field data loaded from JSON file.
type FieldData struct{_b []fieldValue };
2020-08-27 21:45:09 +00:00
// LoadFromJSON loads JSON form data from `r`.
2020-08-31 21:12:07 +00:00
func LoadFromJSON (r _e .Reader )(*FieldData ,error ){var _ce FieldData ;_bd :=_a .NewDecoder (r ).Decode (&_ce ._b );if _bd !=nil {return nil ,_bd ;};return &_ce ,nil ;};
2020-08-27 21:45:09 +00:00
2020-08-31 21:12:07 +00:00
// FieldValues implements model.FieldValueProvider interface.
func (_fa *FieldData )FieldValues ()(map[string ]_ca .PdfObject ,error ){_bff :=make (map[string ]_ca .PdfObject );for _ ,_ccd :=range _fa ._b {if len (_ccd .Value )> 0{_bff [_ccd .Name ]=_ca .MakeString (_ccd .Value );};};return _bff ,nil ;};
2020-08-27 21:45:09 +00:00
2020-08-31 21:12:07 +00:00
// JSON returns the field data as a string in JSON format.
func (_gd FieldData )JSON ()(string ,error ){_gge ,_ded :=_a .MarshalIndent (_gd ._b ,"","\u0020\u0020\u0020\u0020");return string (_gge ),_ded ;};
2020-08-27 21:45:09 +00:00
2020-08-31 21:12:07 +00:00
// LoadFromPDF loads form field data from a PDF.
func LoadFromPDF (rs _e .ReadSeeker )(*FieldData ,error ){_cef ,_d :=_eg .NewPdfReader (rs );if _d !=nil {return nil ,_d ;};if _cef .AcroForm ==nil {return nil ,nil ;};var _f []fieldValue ;_de :=_cef .AcroForm .AllFields ();for _ ,_ga :=range _de {var _dc []string ;_bg :=make (map[string ]struct{});_ab ,_gg :=_ga .FullName ();if _gg !=nil {return nil ,_gg ;};if _ag ,_cb :=_ga .V .(*_ca .PdfObjectString );_cb {_f =append (_f ,fieldValue {Name :_ab ,Value :_ag .Decoded ()});continue ;};var _ge string ;for _ ,_cg :=range _ga .Annotations {_fc ,_af :=_ca .GetName (_cg .AS );if _af {_ge =_fc .String ();};_egc ,_abf :=_ca .GetDict (_cg .AP );if !_abf {continue ;};_ef ,_ :=_ca .GetDict (_egc .Get ("\u004e"));for _ ,_gf :=range _ef .Keys (){_bba :=_gf .String ();if _ ,_fe :=_bg [_bba ];!_fe {_dc =append (_dc ,_bba );_bg [_bba ]=struct{}{};};};_ac ,_ :=_ca .GetDict (_egc .Get ("\u0044"));for _ ,_ae :=range _ac .Keys (){_ec :=_ae .String ();if _ ,_fbg :=_bg [_ec ];!_fbg {_dc =append (_dc ,_ec );_bg [_ec ]=struct{}{};};};};_gaf :=fieldValue {Name :_ab ,Value :_ge ,Options :_dc };_f =append (_f ,_gaf );};_cfe :=FieldData {_b :_f };return &_cfe ,nil ;};
2020-08-27 21:45:09 +00:00
2020-08-31 21:12:07 +00:00
// LoadFromJSONFile loads form field data from a JSON file.
func LoadFromJSONFile (filePath string )(*FieldData ,error ){_gc ,_bb :=_c .Open (filePath );if _bb !=nil {return nil ,_bb ;};defer _gc .Close ();return LoadFromJSON (_gc );};
2020-08-27 21:45:09 +00:00
2020-08-31 21:12:07 +00:00
// LoadFromPDFFile loads form field data from a PDF file.
func LoadFromPDFFile (filePath string )(*FieldData ,error ){_cc ,_da :=_c .Open (filePath );if _da !=nil {return nil ,_da ;};defer _cc .Close ();return LoadFromPDF (_cc );};