aboutsummaryrefslogtreecommitdiff
path: root/unipdf/fjson/fjson.go
blob: 5b3968a335c8125428f7fca0f1515e7dcbc1eb66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//
// 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.
package fjson ;import (_bf "encoding/json";_f "github.com/unidoc/unipdf/v4/common";_aa "github.com/unidoc/unipdf/v4/core";_d "github.com/unidoc/unipdf/v4/model";_ae "io";_a "os";);

// LoadFromPDF loads form field data from a PDF.
func LoadFromPDF (rs _ae .ReadSeeker )(*FieldData ,error ){_bd ,_ef :=_d .NewPdfReader (rs );if _ef !=nil {return nil ,_ef ;};if _bd .AcroForm ==nil {return nil ,nil ;};var _dbc []fieldValue ;_ce :=_bd .AcroForm .AllFields ();for _ ,_ag :=range _ce {var _ba []string ;
_ec :=make (map[string ]struct{});_baa ,_gb :=_ag .FullName ();if _gb !=nil {return nil ,_gb ;};if _bdd ,_gd :=_ag .V .(*_aa .PdfObjectString );_gd {_dbc =append (_dbc ,fieldValue {Name :_baa ,Value :_bdd .Decoded ()});continue ;};var _gbb string ;for _ ,_fa :=range _ag .Annotations {_ca ,_ac :=_aa .GetName (_fa .AS );
if _ac {_gbb =_ca .String ();};_fc ,_cc :=_aa .GetDict (_fa .AP );if !_cc {continue ;};_cf ,_ :=_aa .GetDict (_fc .Get ("\u004e"));for _ ,_ea :=range _cf .Keys (){_acd :=_ea .String ();if _ ,_dbe :=_ec [_acd ];!_dbe {_ba =append (_ba ,_acd );_ec [_acd ]=struct{}{};
};};_eb ,_ :=_aa .GetDict (_fc .Get ("\u0044"));for _ ,_ffa :=range _eb .Keys (){_gg :=_ffa .String ();if _ ,_cb :=_ec [_gg ];!_cb {_ba =append (_ba ,_gg );_ec [_gg ]=struct{}{};};};};_de :=fieldValue {Name :_baa ,Value :_gbb ,Options :_ba };_dbc =append (_dbc ,_de );
};_ffb :=FieldData {_db :_dbc };return &_ffb ,nil ;};

// FieldData represents form field data loaded from JSON file.
type FieldData struct{_db []fieldValue };

// FieldValues implements model.FieldValueProvider interface.
func (_egb *FieldData )FieldValues ()(map[string ]_aa .PdfObject ,error ){_ee :=make (map[string ]_aa .PdfObject );for _ ,_af :=range _egb ._db {if len (_af .Value )> 0{_ee [_af .Name ]=_aa .MakeString (_af .Value );};};return _ee ,nil ;};

// LoadFromPDFFile loads form field data from a PDF file.
func LoadFromPDFFile (filePath string )(*FieldData ,error ){_bb ,_acdd :=_a .Open (filePath );if _acdd !=nil {return nil ,_acdd ;};defer _bb .Close ();return LoadFromPDF (_bb );};

// FieldImageValues implements model.FieldImageProvider interface.
func (_fd *FieldData )FieldImageValues ()(map[string ]*_d .Image ,error ){_ebg :=make (map[string ]*_d .Image );for _ ,_ad :=range _fd ._db {if _ad .ImageValue !=nil {_ebg [_ad .Name ]=_ad .ImageValue ;};};return _ebg ,nil ;};

// SetImage assign model.Image to a specific field identified by fieldName.
func (_aeec *FieldData )SetImage (fieldName string ,img *_d .Image ,opt []string )error {_cfd :=fieldValue {Name :fieldName ,ImageValue :img ,Options :opt };_aeec ._db =append (_aeec ._db ,_cfd );return nil ;};type fieldValue struct{Name string `json:"name"`;
Value string `json:"value"`;ImageValue *_d .Image `json:"-"`;

// Options lists allowed values if present.
Options []string `json:"options,omitempty"`;};

// LoadFromJSON loads JSON form data from `r`.
func LoadFromJSON (r _ae .Reader )(*FieldData ,error ){var _c FieldData ;_g :=_bf .NewDecoder (r ).Decode (&_c ._db );if _g !=nil {return nil ,_g ;};return &_c ,nil ;};

// LoadFromJSONFile loads form field data from a JSON file.
func LoadFromJSONFile (filePath string )(*FieldData ,error ){_e ,_bc :=_a .Open (filePath );if _bc !=nil {return nil ,_bc ;};defer _e .Close ();return LoadFromJSON (_e );};

// SetImageFromFile assign image file to a specific field identified by fieldName.
func (_fe *FieldData )SetImageFromFile (fieldName string ,imagePath string ,opt []string )error {_eag ,_bcd :=_a .Open (imagePath );if _bcd !=nil {return _bcd ;};defer _eag .Close ();_cbf ,_bcd :=_d .ImageHandling .Read (_eag );if _bcd !=nil {_f .Log .Error ("\u0045\u0072\u0072or\u0020\u006c\u006f\u0061\u0064\u0069\u006e\u0067\u0020\u0069\u006d\u0061\u0067\u0065\u003a\u0020\u0025\u0073",_bcd );
return _bcd ;};return _fe .SetImage (fieldName ,_cbf ,opt );};

// JSON returns the field data as a string in JSON format.
func (_cd FieldData )JSON ()(string ,error ){_gba ,_gf :=_bf .MarshalIndent (_cd ._db ,"","\u0020\u0020\u0020\u0020");return string (_gba ),_gf ;};