From d34b0ea611049a181ce4b426f006810a2cd96370 Mon Sep 17 00:00:00 2001 From: Sorin-nightz Date: Mon, 1 Dec 2025 14:46:25 +0200 Subject: [PATCH 1/2] xfa forms --- README.md | 130 +++++++++ src/api/PDFDocument.ts | 318 +++++++++++++++++++++- src/api/PDFDocumentOptions.ts | 1 + src/api/PDFJavaScriptAction.ts | 133 +++++++++ src/api/PDFPage.ts | 36 +++ src/api/form/PDFField.ts | 59 ++++ src/api/index.ts | 5 + tests/api/PDFDocument.spec.ts | 83 ++++++ tests/api/PDFDocumentXFA.spec.ts | 138 ++++++++++ tests/api/PDFJavaScriptAction.spec.ts | 291 ++++++++++++++++++++ tests/api/PDFPage.spec.ts | 100 +++++++ tests/api/form/PDFFieldJavaScript.spec.ts | 294 ++++++++++++++++++++ 12 files changed, 1584 insertions(+), 4 deletions(-) create mode 100644 src/api/PDFJavaScriptAction.ts create mode 100644 tests/api/PDFDocumentXFA.spec.ts create mode 100644 tests/api/PDFJavaScriptAction.spec.ts create mode 100644 tests/api/form/PDFFieldJavaScript.spec.ts diff --git a/README.md b/README.md index 33c398ec8..3ac649ff9 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,9 @@ Install with: `npm install @cantoo/pdf-lib` - [Create Form](#create-form) - [Fill Form](#fill-form) - [Flatten Form](#flatten-form) + - [Work with XFA Forms](#work-with-xfa-forms) + - [Extract XFA JavaScript](#extract-xfa-javascript) + - [Modify XFA JavaScript](#modify-xfa-javascript) - [Copy Pages](#copy-pages) - [Embed PNG and JPEG Images](#embed-png-and-jpeg-images) - [Embed PDF Pages](#embed-pdf-pages) @@ -102,6 +105,9 @@ Install with: `npm install @cantoo/pdf-lib` - Create forms - Fill forms - Flatten forms +- Preserve XFA forms +- Extract XFA JavaScript +- Modify XFA JavaScript - Add Pages - Insert Pages - Remove Pages @@ -480,6 +486,130 @@ const pdfBytes = await pdfDoc.save() // • Rendered in an