diff --git a/lib/mixins/acroform.js b/lib/mixins/acroform.js index e3dd0bb0f..4933acb8f 100644 --- a/lib/mixins/acroform.js +++ b/lib/mixins/acroform.js @@ -368,8 +368,8 @@ export default { } Object.keys(VALUE_MAP).forEach((key) => { - if (options[key] !== undefined) { - options[VALUE_MAP[key]] = options[key]; + if (key in options) { + options[VALUE_MAP[key]] = options[key] ?? ''; delete options[key]; } }); diff --git a/tests/unit/acroform.spec.js b/tests/unit/acroform.spec.js index e6cde61e2..d7fc9db63 100644 --- a/tests/unit/acroform.spec.js +++ b/tests/unit/acroform.spec.js @@ -186,6 +186,24 @@ describe('acroform', () => { expect(docData.length).toBe(3); expect(docData).toContainChunk(expected); }); + + test.each([ + ['undefined', undefined], + ['null', null], + ])('nullish %s value uses an empty string', (_label, value) => { + const expectedDoc = new PDFDocument({ + info: { CreationDate: new Date(Date.UTC(2018, 1, 1)) }, + }); + expectedDoc.initForm(); + const expectedDocData = logData(expectedDoc); + expectedDoc.formText('empty', 20, 20, 50, 20, { value: '' }); + + doc.initForm(); + const docData = logData(doc); + doc.formText('empty', 20, 20, 50, 20, { value }); + + expect(docData).toContainChunk(expectedDocData); + }); }); test('flags', () => {