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.
|
2022-07-13 21:28:43 +00:00
|
|
|
package fjson ;import (_b "encoding/json";_ec "github.com/unidoc/unipdf/v3/common";_be "github.com/unidoc/unipdf/v3/core";_df "github.com/unidoc/unipdf/v3/model";_d "io";_e "os";);
|
2021-06-21 14:01:56 +00:00
|
|
|
|
2022-07-13 21:28:43 +00:00
|
|
|
// LoadFromJSONFile loads form field data from a JSON file.
|
|
|
|
func LoadFromJSONFile (filePath string )(*FieldData ,error ){_ea ,_bfa :=_e .Open (filePath );if _bfa !=nil {return nil ,_bfa ;};defer _ea .Close ();return LoadFromJSON (_ea );};
|
2022-06-06 22:48:24 +00:00
|
|
|
|
2022-07-13 21:28:43 +00:00
|
|
|
// LoadFromPDF loads form field data from a PDF.
|
|
|
|
func LoadFromPDF (rs _d .ReadSeeker )(*FieldData ,error ){_bd ,_f :=_df .NewPdfReader (rs );if _f !=nil {return nil ,_f ;};if _bd .AcroForm ==nil {return nil ,nil ;};var _eb []fieldValue ;_ed :=_bd .AcroForm .AllFields ();for _ ,_ce :=range _ed {var _dc []string ;
|
|
|
|
_eaf :=make (map[string ]struct{});_cg ,_ff :=_ce .FullName ();if _ff !=nil {return nil ,_ff ;};if _cd ,_ee :=_ce .V .(*_be .PdfObjectString );_ee {_eb =append (_eb ,fieldValue {Name :_cg ,Value :_cd .Decoded ()});continue ;};var _cb string ;for _ ,_cbb :=range _ce .Annotations {_ge ,_a :=_be .GetName (_cbb .AS );
|
|
|
|
if _a {_cb =_ge .String ();};_bdd ,_bfg :=_be .GetDict (_cbb .AP );if !_bfg {continue ;};_eg ,_ :=_be .GetDict (_bdd .Get ("\u004e"));for _ ,_ca :=range _eg .Keys (){_fc :=_ca .String ();if _ ,_da :=_eaf [_fc ];!_da {_dc =append (_dc ,_fc );_eaf [_fc ]=struct{}{};
|
|
|
|
};};_dg ,_ :=_be .GetDict (_bdd .Get ("\u0044"));for _ ,_gc :=range _dg .Keys (){_aac :=_gc .String ();if _ ,_bdf :=_eaf [_aac ];!_bdf {_dc =append (_dc ,_aac );_eaf [_aac ]=struct{}{};};};};_fb :=fieldValue {Name :_cg ,Value :_cb ,Options :_dc };_eb =append (_eb ,_fb );
|
|
|
|
};_gf :=FieldData {_bf :_eb };return &_gf ,nil ;};
|
2021-10-22 10:53:20 +00:00
|
|
|
|
2022-07-13 21:28:43 +00:00
|
|
|
// FieldImageValues implements model.FieldImageProvider interface.
|
|
|
|
func (_cbc *FieldData )FieldImageValues ()(map[string ]*_df .Image ,error ){_dcd :=make (map[string ]*_df .Image );for _ ,_fe :=range _cbc ._bf {if _fe .ImageValue !=nil {_dcd [_fe .Name ]=_fe .ImageValue ;};};return _dcd ,nil ;};
|
2021-12-14 01:08:28 +00:00
|
|
|
|
2022-07-13 21:28:43 +00:00
|
|
|
// LoadFromJSON loads JSON form data from `r`.
|
|
|
|
func LoadFromJSON (r _d .Reader )(*FieldData ,error ){var _de FieldData ;_ef :=_b .NewDecoder (r ).Decode (&_de ._bf );if _ef !=nil {return nil ,_ef ;};return &_de ,nil ;};
|
2022-06-27 19:58:38 +00:00
|
|
|
|
2022-07-13 21:28:43 +00:00
|
|
|
// LoadFromPDFFile loads form field data from a PDF file.
|
|
|
|
func LoadFromPDFFile (filePath string )(*FieldData ,error ){_dd ,_gce :=_e .Open (filePath );if _gce !=nil {return nil ,_gce ;};defer _dd .Close ();return LoadFromPDF (_dd );};
|
2022-06-27 19:58:38 +00:00
|
|
|
|
2022-07-13 21:28:43 +00:00
|
|
|
// SetImage assign model.Image to a specific field identified by fieldName.
|
|
|
|
func (_fbb *FieldData )SetImage (fieldName string ,img *_df .Image ,opt []string )error {_dff :=fieldValue {Name :fieldName ,ImageValue :img ,Options :opt };_fbb ._bf =append (_fbb ._bf ,_dff );return nil ;};
|
2022-06-27 19:58:38 +00:00
|
|
|
|
2022-07-13 21:28:43 +00:00
|
|
|
// FieldData represents form field data loaded from JSON file.
|
|
|
|
type FieldData struct{_bf []fieldValue };
|
2022-06-06 22:48:24 +00:00
|
|
|
|
2022-07-13 21:28:43 +00:00
|
|
|
// JSON returns the field data as a string in JSON format.
|
|
|
|
func (_bff FieldData )JSON ()(string ,error ){_bc ,_fa :=_b .MarshalIndent (_bff ._bf ,"","\u0020\u0020\u0020\u0020");return string (_bc ),_fa ;};
|
2022-02-05 21:34:53 +00:00
|
|
|
|
2022-07-13 21:28:43 +00:00
|
|
|
// SetImageFromFile assign image file to a specific field identified by fieldName.
|
|
|
|
func (_bg *FieldData )SetImageFromFile (fieldName string ,imagePath string ,opt []string )error {_bca ,_bbg :=_e .Open (imagePath );if _bbg !=nil {return _bbg ;};defer _bca .Close ();_cf ,_bbg :=_df .ImageHandling .Read (_bca );if _bbg !=nil {_ec .Log .Error ("\u0045\u0072\u0072or\u0020\u006c\u006f\u0061\u0064\u0069\u006e\u0067\u0020\u0069\u006d\u0061\u0067\u0065\u003a\u0020\u0025\u0073",_bbg );
|
|
|
|
return _bbg ;};return _bg .SetImage (fieldName ,_cf ,opt );};
|
2022-03-13 12:41:53 +00:00
|
|
|
|
2022-07-13 21:28:43 +00:00
|
|
|
// FieldValues implements model.FieldValueProvider interface.
|
|
|
|
func (_eae *FieldData )FieldValues ()(map[string ]_be .PdfObject ,error ){_dgb :=make (map[string ]_be .PdfObject );for _ ,_fbe :=range _eae ._bf {if len (_fbe .Value )> 0{_dgb [_fbe .Name ]=_be .MakeString (_fbe .Value );};};return _dgb ,nil ;};type fieldValue struct{Name string `json:"name"`;
|
|
|
|
Value string `json:"value"`;ImageValue *_df .Image `json:"-"`;
|
2022-06-06 22:48:24 +00:00
|
|
|
|
2022-07-13 21:28:43 +00:00
|
|
|
// Options lists allowed values if present.
|
|
|
|
Options []string `json:"options,omitempty"`;};
|