From 99ef1b861d3bcd3da2104e0372b2ef12312afda9 Mon Sep 17 00:00:00 2001 From: Adrian-George Bostan Date: Wed, 10 Jun 2020 19:58:00 +0300 Subject: [PATCH] Combo field appearance (#370) * Fix combo field appearances not being shown * Fix V object type for choice and button fields * Refactor form fill for combo and checkbox fields * Add fill test case for text, combo and checkbox fields * Prevent panic when flattening forms using a nil appearance generator --- annotator/field_appearance.go | 15 +++-- fjson/fielddata_test.go | 43 +++++++++++++++ fjson/testdata/mixedfields.json | 94 ++++++++++++++++++++++++++++++++ fjson/testdata/mixedfields.pdf | Bin 0 -> 65715 bytes model/flatten.go | 7 ++- model/form.go | 46 +++++++++++----- 6 files changed, 182 insertions(+), 23 deletions(-) create mode 100644 fjson/testdata/mixedfields.json create mode 100644 fjson/testdata/mixedfields.pdf diff --git a/annotator/field_appearance.go b/annotator/field_appearance.go index 633a10567..fdacaaf66 100644 --- a/annotator/field_appearance.go +++ b/annotator/field_appearance.go @@ -821,18 +821,21 @@ func genFieldComboboxAppearance(form *model.PdfAcroForm, wa *model.PdfAnnotation } } + // See section 12.7.4.4 "Choice Fields" (pp. 444-446 PDF32000_2008). dchoiceapp := core.MakeDict() for _, optObj := range fch.Opt.Elements() { + if optArr, ok := core.GetArray(optObj); ok && optArr.Len() == 2 { + optObj = optArr.Get(1) + } + var optstr string if opt, ok := core.GetString(optObj); ok { + optstr = opt.Decoded() + } else if opt, ok := core.GetName(optObj); ok { optstr = opt.String() } else { - if opt, ok := core.GetName(optObj); ok { - optstr = opt.String() - } else { - common.Log.Debug("ERROR: Opt not a name/string - %T", optObj) - return nil, errors.New("not a name/string") - } + common.Log.Debug("ERROR: Opt not a name/string - %T", optObj) + return nil, errors.New("not a name/string") } if len(optstr) > 0 { diff --git a/fjson/fielddata_test.go b/fjson/fielddata_test.go index e8d034af8..bb7551cdb 100644 --- a/fjson/fielddata_test.go +++ b/fjson/fielddata_test.go @@ -148,6 +148,7 @@ func TestJSONExtractAndFill(t *testing.T) { fieldDataExp, err := LoadFromJSONFile("./testdata/advancedform.json") require.NoError(t, err) jsonDataExp, err := fieldDataExp.JSON() + require.NoError(t, err) // Check templates for equality. require.Equal(t, jsonDataExp, jsonData) @@ -184,6 +185,7 @@ func TestJSONExtractAndFill(t *testing.T) { fieldDataExp, err = LoadFromJSON(bytes.NewReader(jsonBytes)) require.NoError(t, err) jsonDataExp, err = fieldDataExp.JSON() + require.NoError(t, err) // Fill test PDF form fields and write to buffer. f, err := os.Open(inputFilePath) @@ -212,6 +214,47 @@ func TestJSONExtractAndFill(t *testing.T) { fieldData, err = LoadFromPDF(bytes.NewReader(buf.Bytes())) require.NoError(t, err) jsonData, err = fieldData.JSON() + require.NoError(t, err) + + // Check field data for equality. + require.Equal(t, jsonDataExp, jsonData) +} + +func TestJSONFillAndExtract(t *testing.T) { + // Read JSON fill data. + fieldDataExp, err := LoadFromJSONFile("./testdata/mixedfields.json") + require.NoError(t, err) + jsonDataExp, err := fieldDataExp.JSON() + require.NoError(t, err) + + // Fill test PDF form fields and write to buffer. + f, err := os.Open("./testdata/mixedfields.pdf") + require.NoError(t, err) + defer f.Close() + + reader, err := model.NewPdfReader(f) + require.NoError(t, err) + + err = reader.AcroForm.Fill(fieldDataExp) + require.NoError(t, err) + + var buf bytes.Buffer + writer := model.NewPdfWriter() + for i := range reader.PageList { + err := writer.AddPage(reader.PageList[i]) + require.NoError(t, err) + } + + err = writer.SetForms(reader.AcroForm) + require.NoError(t, err) + err = writer.Write(&buf) + require.NoError(t, err) + + // Load field data from buffer. + fieldData, err := LoadFromPDF(bytes.NewReader(buf.Bytes())) + require.NoError(t, err) + jsonData, err := fieldData.JSON() + require.NoError(t, err) // Check field data for equality. require.Equal(t, jsonDataExp, jsonData) diff --git a/fjson/testdata/mixedfields.json b/fjson/testdata/mixedfields.json new file mode 100644 index 000000000..3ee55d320 --- /dev/null +++ b/fjson/testdata/mixedfields.json @@ -0,0 +1,94 @@ +[ + { + "name": "Given Name Text Box", + "value": "Jane" + }, + { + "name": "Family Name Text Box", + "value": "Doe" + }, + { + "name": "House nr Text Box", + "value": "100" + }, + { + "name": "Address 2 Text Box", + "value": "Generic Avenue" + }, + { + "name": "Postcode Text Box", + "value": "11122" + }, + { + "name": "Country Combo Box", + "value": "France" + }, + { + "name": "Height Formatted Field", + "value": "175" + }, + { + "name": "City Text Box", + "value": "Paris" + }, + { + "name": "Driving License Check Box", + "value": "Yes", + "options": [ + "Yes", + "Off" + ] + }, + { + "name": "Favourite Colour List Box", + "value": "Yellow" + }, + { + "name": "Language 1 Check Box", + "value": "Yes", + "options": [ + "Yes", + "Off" + ] + }, + { + "name": "Language 2 Check Box", + "value": "Off", + "options": [ + "Yes", + "Off" + ] + }, + { + "name": "Language 3 Check Box", + "value": "Yes", + "options": [ + "Yes", + "Off" + ] + }, + { + "name": "Language 4 Check Box", + "value": "Off", + "options": [ + "Yes", + "Off" + ] + }, + { + "name": "Language 5 Check Box", + "value": "Yes", + "options": [ + "Yes", + "Off" + ] + }, + { + "name": "Gender List Box", + "value": "Woman" + }, + { + "name": "Address 1 Text Box", + "value": "Generic Street" + } +] diff --git a/fjson/testdata/mixedfields.pdf b/fjson/testdata/mixedfields.pdf new file mode 100644 index 0000000000000000000000000000000000000000..72d0d21d38fa2baaedec331f7171d89eb6c4a253 GIT binary patch literal 65715 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 0 { + f.V = val + setFieldAnnotAS(f, val) } - for _, wa := range f.Annotations { - wa.AS = val + case *core.PdfObjectString: + if len(val.String()) > 0 { + f.V = core.MakeName(val.String()) + setFieldAnnotAS(f, f.V) } + default: + common.Log.Debug("ERROR: UNEXPECTED %s -> %v", f.PartialName(), val) f.V = val - case *core.PdfObjectString: - if len(t.String()) == 0 { - return nil + } + case *PdfFieldChoice: + // See section 12.7.4.4 "Choice Fields" (pp. 444-446 PDF32000_2008). + switch val.(type) { + case *core.PdfObjectName: + if len(val.String()) > 0 { + f.V = core.MakeString(val.String()) + setFieldAnnotAS(f, val) } - common.Log.Debug("Unexpected string for button/choice field. Converting to name: '%s'", t.String()) - name := core.MakeName(t.String()) - for _, wa := range f.Annotations { - wa.AS = name + case *core.PdfObjectString: + if len(val.String()) > 0 { + f.V = val + setFieldAnnotAS(f, core.MakeName(val.String())) } - f.V = name default: common.Log.Debug("ERROR: UNEXPECTED %s -> %v", f.PartialName(), val) f.V = val @@ -347,3 +357,11 @@ func fillFieldValue(f *PdfField, val core.PdfObject) error { return nil } + +// setFieldAnnotAS sets the appearance stream of the field annotations to `val`. +func setFieldAnnotAS(f *PdfField, val core.PdfObject) { + for _, wa := range f.Annotations { + wa.AS = val + wa.ToPdfObject() + } +}