From 34db58f58bba15d302450621a04a25228df04cd8 Mon Sep 17 00:00:00 2001 From: betabites <61530254+betabites@users.noreply.github.com> Date: Sat, 6 Sep 2025 14:05:09 +1200 Subject: [PATCH 1/2] Added support to only flatten some fields --- src/api/form/PDFForm.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/api/form/PDFForm.ts b/src/api/form/PDFForm.ts index e92c833fc..f8004f3af 100644 --- a/src/api/form/PDFForm.ts +++ b/src/api/form/PDFForm.ts @@ -45,6 +45,7 @@ import { assertIs, Cache, assertOrUndefined } from 'src/utils'; export interface FlattenOptions { updateFieldAppearances: boolean; + fields?: PDFField[]; } /** @@ -534,12 +535,14 @@ export default class PDFForm { * form.flatten(); * ``` */ - flatten(options: FlattenOptions = { updateFieldAppearances: true }) { + flatten(options: FlattenOptions = { updateFieldAppearances: true }): void { if (options.updateFieldAppearances) { this.updateFieldAppearances(); } - const fields = this.getFields(); + if (!options.fields) return this.flatten({...options, fields: this.getFields()}); + + const fields = options.fields; for (let i = 0, lenFields = fields.length; i < lenFields; i++) { const field = fields[i]; From 77fb557d30feb0e79ca84f988cfed1c14752d450 Mon Sep 17 00:00:00 2001 From: betabites <61530254+betabites@users.noreply.github.com> Date: Sat, 6 Sep 2025 14:05:09 +1200 Subject: [PATCH 2/2] Added support to only flatten some fields --- src/api/form/PDFForm.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/api/form/PDFForm.ts b/src/api/form/PDFForm.ts index e92c833fc..4464e9d68 100644 --- a/src/api/form/PDFForm.ts +++ b/src/api/form/PDFForm.ts @@ -45,6 +45,7 @@ import { assertIs, Cache, assertOrUndefined } from 'src/utils'; export interface FlattenOptions { updateFieldAppearances: boolean; + fields?: PDFField[]; } /** @@ -514,7 +515,7 @@ export default class PDFForm { } /** - * Flatten all fields in this [[PDFForm]]. + * Flatten fields in this [[PDFForm]]. * * Flattening a form field will take the current appearance for each of that * field's widgets and make them part of their page's content stream. All form @@ -528,18 +529,26 @@ export default class PDFForm { * document, fill its fields, flatten it, and then copy its pages into the * recipient document - the filled fields will be copied over. * - * For example: + * For example (flatten all fields): * ```js * const form = pdfDoc.getForm(); * form.flatten(); * ``` + * + * To flatten specific fields, you can use this syntax: + * ```js + * const form = pdfDoc.getForm(); + * form.flatten({ fields: [ + * form.getField('Example') + * ] }); + * ``` */ - flatten(options: FlattenOptions = { updateFieldAppearances: true }) { + flatten(options: FlattenOptions = { updateFieldAppearances: true }): void { if (options.updateFieldAppearances) { this.updateFieldAppearances(); } - const fields = this.getFields(); + const fields = options.fields ?? this.getFields(); for (let i = 0, lenFields = fields.length; i < lenFields; i++) { const field = fields[i];